Weekend Prosjekt: Overføre fra Direkte Skillevegger til LVM Volumes

Har lære om Linux Logical Volume Manager (LVM) vært på to-do liste for lenge? Deretter sette av litt tid i helgen for et lite prosjekt. Migrere et Linux-system fra tradisjonelle partisjoner til LVM sin logiske volumer

Hvis du noen gang har gått tom for plass i én partisjon på harddisken som inneholder flere, så du har sett på problemet. Avhengig av filsystem du bruker, kan du være i stand til å vokse filsystemet inn i tomrommet, men du er begrenset til hva som er tilgjengelig i mellom de andre partisjoner på disken. LVM implementerer et lag av abstraksjon mellom fysiske disker og " logisk " disker som filsystemet ser. For å holde terminologien klarere, bruker LVM begrepet " volum " for å beskrive sine byggeklosser. Fordelen med LVM er at du kan legge til eller fjerne disker fra systemet, utvide og krympe volumer etter behov, skape volumer som går over flere disker, og mange andre fleksible endringene ikke er mulig med partisjoner opprettet direkte på fysiske disker. Mange Linux-distribusjoner inkluderer støtte for LVM når du utfører en ny installasjon, men ikke for å oppdatere et kjørende system. Du kan oppdatere en eksisterende installasjon til LVM, men forutsatt at du har nok ledig lagringsplass til å lage en sikkerhetskopi. Konvertere en disk til LVM innebærer skrive sine partisjonstabellene, slik at du må ha nok ledig kapasitet til å foreta en full sikkerhetskopi av disken (eller disker) du konverterer. Legge til en ny, høykapasitets stasjonen er den perfekte tiden. For eksempel, hvis jeg har en 100GB SATA disk på /dev /sdb fylt opp med en /home og /var /media-partisjonen hver bruker 50 GB, kan jeg prøve å legge til en ny 250GB drive og flytte enten /home eller /var /media på det, men jeg må velge på forhånd hvilken partisjon får mer plass. Hvis jeg bytter til LVM i stedet, kan jeg ikke bare ta denne avgjørelsen senere, men jeg kan legge til mer kapasitet senere like lett.

The Game Plan

Tanken er å kombinere både 100GB og 250GB disker i en enkelt logisk enhet ved hjelp av LVM. Vi kan da gjenskape /home og /var /medie partisjoner uten å tenke på grensen mellom de to disker, og vi kan la en del av ledig kapasitet ubrukt, slik at vi kan legge til enten partisjon som trengs i fremtiden. Når vi har fylt hele 350GB, derimot, kan vi legge til en annen disk til mix med LVM og fortsette å ekspandere. For å gjøre dette, vil vi snu hver disk i en LVM " fysisk volum, " starter med nye 250 GB disk. Vi vil deretter opprette en " volum gruppe " på toppen av " fysisk volum " - Et volum gruppe er som en virtuell maskinvare disk i LVM land; vi trenger bare en, men du kan lage flere hvis du trenger for å administrere forskjellige filsystemer etter ulike regler. På toppen av dette volumet gruppen, vil vi lage to " logiske volumer " - En å bruke for /home, og en til å bruke for /var /media. Akkurat som volumgruppen er en virtualisering av maskinvare disk, er det logiske volumet en virtuell container for en partisjon; dermed behovet for to. Vi vil da flytte våre partisjoner fra 100GB disk på de nye logiske volumer, og siden den 100GB disk er ikke lenger i bruk, vil vi gjøre det til sin egen fysiske volum og legge den til vår volum gruppe. Hvis du slutter å tenke på det, vi kan
swap rundt rekkefølgen på diskene, med start ved å kopiere alt fra 100GB disk til 250 GB disk, og konvertere 100GB disk til LVM først. Men som bare legger tid. Hvis det virker som LVM har ett altfor mange lag med abstraksjon, ikke bekymre deg. Det er den ekstra lag som tillater oss å legge til og fjerne disker fra mix på vilje. Ja, det er mer komplisert, men de langsiktige fordelene er målet.

Å gjøre det fysiske volumet å starte, la oss anta at vår nye 250GB disk er på /dev /SDC, og at det sjekker ut fri for feil. Vi må slette noen pre-formatert partisjonene på disken og opprette en ny partisjon av typen " Linux LVM ". Distribusjonen din kan ha grafiske verktøy for å gjøre dette, men kommandolinje fdisk fungerer like bra. Kjør # fdisk /dev /SDC (som root) for å starte. At instruksjonene, skriv n
å opprette en ny partisjon, p
å gjøre det primære, en
å tildele den partisjon nummer en, Enter
for å godta standard starter sylinder, og + 250000M
å merke den 250GB i størrelse. Deretter skriver du t Anmeldelser å sette partisjonen type. LVM-partisjoner er type 8e
, så skriv det i meldingen. Til slutt, skriv w
å skrive den nye partisjonstabellen til disken. Du kan kontrollere arbeidet med # fdisk-l; utdataene bør inneholde en partisjon på /dev /sdc1 av typen " Linux LVM ". Nå som disken er klar, må vi sørge for LVM klar over det ved å erklære det en ". Fysisk volum " Gjør dette med # pvcreate /dev /sdc1, dobbeltsjekke med # pvdisplay; output skal vise /dev /sdc1 samt liste sin størrelse, UUID, og ​​annen informasjon. &Quot; VG Name " Feltet vil være tom, fordi vi ikke har lagt dette volumet til et volum gruppe. Det er neste. Volum Gruppe Volumet gruppen er grunnlinjen på toppen av som vi legger til de logiske volumer og partisjoner. De logiske volumer over kan flyttes, endre størrelse, lagt til og fjernet, og diskene nedenfor kan legges til og fjernes, men volumet gruppen lag forblir den samme. I vårt eksempel tilfelle, vil vi bare lage ett volum gruppe, kalt " mydata ". Vi gjør dette med # vgcreate mydata /dev /sdc1. Vi kan kjøre # vgdisplay å få en rapport om den nylig preget volum gruppen, herunder dets størrelse, antall fysiske volumer festet, og antallet logiske volumer implementert på det (som skal være null, i øyeblikket). Vi kan også kjøre # pvdisplay igjen, og se at /dev /sdc1 er nå oppført som tilhører gruppen mydata volum. De logiske volumer Nå skal vi lage våre to logiske volumer, en for /home og en for /var /media. Kommandoen for å gjøre dette på er lvcreate; vi må oppgi et navn og en start størrelse for hvert volum. Vi trenger ikke å fordele hele 250GB mydata, selv om vi skulle gi hverandre mer enn 50GB vi vet vi har allerede fylt. Kjør # lvcreate --name hjem --size 100G mydata etterfulgt av # lvcreate --name media --size 100G mydata å tildele 100GB til hver. Disse kommandoene opprettet enhets noder i vårt system som heter /dev /mydata /home og /dev /mydata /media. Disse enhetene deretter ta plassen til hardware noder som /dev /sdb4 og /dev /sdb5 når du arbeider med filsystem verktøy, og de er lettere å huske, også. Du kan sjekke status med # lvdisplay. Hvis vi ønsker å endre våre sinn om vår første disk tildeling, er det lett å gjøre det nå, før vi har flyttet over noen data. Vi kunne kjøre # lvextend -L125G /dev /mydata /media å støte medievolumet opp til 125GB i størrelse, eller # lvreduce -L75GB /dev /mydata /media å krympe det ned til 75GB. Filsystemene (og filer) Endelig kan vi lage filsystemer på våre nye virtuelle enheter. På dette punktet, er prosessen ikke annerledes enn å lage en ny filsystem uten LVM. Du kan kjøre mkfs.xfs å skape en XFS filsystem, mkfs.ext3 å skape en Ext3 filsystem, eller andre filsystem som støttes av Linux. Bare husk, når du oppretter din filsystem, gjør du det på den logiske volum enhet, for eksempel # mkfs.xfs /dev /mydata /media. Du må nå flytte data over fra den gamle plasseringen på 100GB disk på de nye LVM filsystemer. Du kan gjøre dette på flere måter; ved å opprette midlertidige monteringspunkter for de nye filsystemer (slik som, si, /mnt /lvmhome), eller omvendt - demontering de opprinnelige filsystemer fra sine steder og feste de nye filessytems til dem. Det spiller ingen rolle. Likeledes å faktisk kopiere innholdet i filsystemene fra deres gamle til nye steder, du kan bruke noen verktøy du ønsker - det alene med cp
, se etter feil sjekke med rsync
, eller, hvis filsystemet støtter det, ved hjelp av et spesialverktøy som xfs_copy
. I alle fall er det selvsagt lurt å utføre integritet sjekke før du avvikle den gamle 100GB disk og tape innholdet helt. Til slutt, ikke glem å oppdatere /etc /fstab for å reflektere de nye LVM volumer som vil bli montert på systemet ved oppstart. Utbetalingen: Legge til mer lagringsplass, smertefritt De foregående trinn gi deg mer lagringsplass for /home og /var /media enn du hadde med den gamle disken, men de gjør ikke noe spesielt. Faktisk er det den samme rekkefølgen du vil følge for å skape LVM lagring på et helt nytt system som du har tenkt å kjøre uten ytterligere inngrep. Men for å virkelig se kraften i LVM er abstraksjonslag, kan vi legge den nå ubrukt 100GB disk til vårt volum gruppe og gi oss mer fleksible oppbevaringsmuligheter. De første skritt bør være kjent. Først oppretter du en Linux LVM-partisjon på disken (som vi antar er /dev /sdb) med fdisk. Deretter bruker # pvcreate /dev /sdb1 å erklære /dev /sdb1 som en LVM fysisk volum. På dette punktet, men vi trenger ikke å opprette en ny volumgruppe; vi ønsker bare å legge til /dev /sdb1 til vår eksisterende volum gruppe, mydata. For å gjøre dette, kjører vi # vgextend mydata /dev /sdb1. Vi kan sjekke vårt arbeid med # vgdisplay, som vil vise oss en oppdatert PV telling og en ny total VG størrelse. Det er alt som skal til. Of course, /home og /var /media kan foreløpig ikke benytte seg av den økte kapasiteten mydata, fordi hver sitter inne i en logisk volum container og et filsystem, som hver har sin egen størrelse. For å øke kapasiteten til enten /home eller /var /media, må vi først avmontere filsystemet, øke den aktuelle logiske volum, og deretter øker den aktuelle filsystemet. For eksempel, # umount /home avmonterer /home. Deretter kjører # lvextend -L100G /dev /mydata /home forstørrer den underliggende logisk volum. Til slutt vil # resize2fs /dev /mydata /home endre størrelsen på filsystemet til å automatisk fylle opp den nye størrelsen på logiske volum under. Dette siste trinn, er selvfølgelig filsystem-avhengig. XFS og noen andre filsystemer trenger ikke å bli demontert for å bli endret, og syntaksen til de riktige verktøyene vil trolig variere. Sørg for at du arbeider ut detaljene før du dykke i går videre. Shrinking bagasje, Snapshots, og RAID Når du har mestret det grunnleggende bruk av LVM, du begynner å se noen interessante andre muligheter. For eksempel sjelden vi ønsker å redusere vår filsystem kapasitet, men i noen tilfeller kan du oppleve at du overvurdert hvor mye plass du trenger for /opt, /usr /local eller /var - uansett situasjon, hvis filsystemer er montert på toppen av LVM, kan du endre størrelsen uakseptable filsystem og logisk volum med letthet (ved hjelp lvreduce) og gå videre. Og like enkelt som du har lagt samlet kapasitet med en ny disk, hvis du har kjørt med flere disker enn du trenger på et bestemt volum gruppe, kan du fjerne ett med vgreduce, og enten legge den til en needier volum gruppe eller til en annet system helt. Andre LVM verktøy finnes for å utføre flere vedlikeholdsoppgaver, som å ta et øyeblikksbilde av et logisk volum for å tjene som en enkel backup verktøyet. Spørsmålet om når du skal sette opp flere volumgrupper er en interessant ett; Svaret kan avhenge av systemet politikk, fysisk tilgang til maskinvare, eller andre esoteriske bekymringer. Et interessant alternativ, skjønt, er at LVM fysiske volum og volumgrupper kan
settes sammen ut av RAID arrays. Sette opp et RAID-system er et tema for en annen fremgangsmåte, men du kan erklære en RAID enhet (for eksempel /dev /md0) som en fysisk volum, og bygge et volum gruppe på toppen av det. Det ville ikke gjøre mye fornuftig å ha en RAID-tabell og ikke-RAID fysiske volumer kombinert i en enkelt volum gruppe. LVM er et kraftig og fleksibelt system, men ikke bli skremt av lagene i virtuell lagring den gir. Når du faktisk tar deg tid til å implementere et filsystem på LVM, avslører sin design selv å være ganske grei. Det er noen viktige begrensninger, for eksempel det faktum at /boot ikke kan ligge på en LVM volum i GRUB-systemer, så du bør alltid lese dokumentasjonen grundig, men litt LVM arbeidet nå kan spare deg for mye hodepine neste gang du legger til en annen hardisk.