Logical Volume Manager
Fra Wikipedia, den frie encyklopedi.
LVM, eller Logical Volume Manager, er en fleksibel måte å behandle diskplass og partisjoner på.
Diskplass fra fysiske volumer slås sammen til en volumgruppe, som så kan deles opp i virtuelle partisjoner. På denne måten kan man skape virtuelle partisjoner som strekker seg over flere fysiske harddisker. Det er også veldig enkelt å endre størrelsen på partisjonene, og i enkelte tilfeller kan det gjøres mens partisjonen er montert.
| Innholdsfortegnelse |
Versjoner
LVM 1
LVM 1 er den gamle versjonen av LVM som har eksistert i noen år, faktisk helt siden kjerne 2.3.47. Det gjør at den er både veltestet og stabil.
Siden den er gammel og erstattet av LVM 2 er den fjernet fra 2.6-kjerna.
LVM 2
LVM 2 er en nyere versjon av LVM, som bygger på kjernemodulen device-mapper og noen brukerland-verktøyer.
LVM 2 er nesten helt bakoverkompatibel, det eneste unntaket er avbildinger. Det gjør at en overgang fra LVM 1 til LVM 2 er enkel.
Installasjon
LVM 1
Først må du ha støtte for LVM i kjerna:
Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) < > RAID support <*> Logical volume manager (LVM) support < > Device-mapper support
Så må du ha støtteprogrammer og biblioteker, som installeres med pakkesystemet til distribusjonen din.
LVM 2
Først må du ha støtte for device-mapper i kjerne 2.4:
Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) < > RAID support < > Logical volume manager (LVM) support <*> Device-mapper support
Eller 2.6:
Device Drivers ---> Multi-device support (RAID and LVM) ---> [*] Multiple devices driver support (RAID and LVM) < > RAID support <*> Device mapper support
Så må du ha støtteprogrammer og biblioteker, som installeres med pakkesystemet til distribusjonen din.
Bruk
Fysiske volumer (PV)
Først trenger du en eller flere partisjoner som kan brukes som fysiske volumer. Når du har opprettet partisjonene må du velge partisjonstype 8e for å markere den som et fysisk volum som LVM kan benytte seg av.
I fdisk gjøres det slik:
Command (m for help): t Partition number (1-6): partisjonsnummer Hex code (type L to list codes): 8e Changed system type of partition partisjonsnummer to 8e (Linux LVM)
Når så partisjonene er opprettet, brukes kommandoen pvcreate for å gjøre de til et fysisk volum for LVM.
# pvcreate enhet
No physical volume label read from enhet
Physical volume "enhet" successfully created
| Hvis du har en stor disk, så kan det være lurt med tanke på fremtidige modifikasjoner å dele den opp i flere mindre partisjoner. Disse kan brukes som fysiske volumer i tilfelle du skulle få bruk for en ekte partisjon i fremtida. Som et eksempel kan det nevnes at en av bidragsyterne har en volumgruppe på en disk på 185 GiB, og har delt den opp i en partisjon på 35 GiB, og 5 partisjoner på 30 GiB. |
Volumgrupper (VG)
Når du så har et eller flere fysiske volum klart, kan du lage en volumgruppe av dem.
En funksjon som kan være nyttig, er muligheten til å spesifisere navn selv. Hvert logiske volum vil få hver sin enhetsfil i katalogen /dev/navn/. I eksemplene i denne artikkelen vil vi bruke navnet vg.
Man skaper en volumgruppe på denne måten:
# vgcreate vg enheter //enheter er fysiske volumer, f.eks. /dev/hda1 /dev/hdc3, etc
Volume group "vg" successfully created
Hvis man senere vil utvide en volumgruppe med flere fysiske volum kan man gjøre det slik:
# vgextend vg enheter
Volume group "vg" successfully extended
Logiske volumer (LV)
Når man så har en volumgruppe, kan man begynne å allokere partisjoner på den.
La oss nå si at vi vil lage en partisjon kalt misc på 3 GiB. Da kan vi gjøre følgende:
# lvcreate -L3G -nmisc vg
Logical volume "misc" created
Nå har vi en partisjon klar til bruk som /dev/vg/misc.
Tips om filsystemer
Når man bruker LVM så er det gjerne noe mer man vil legge vekt på når man velger filsystem, nemlig hvilke muligheter det er for å endre størrelsen på dem.
Noen filsystemer støtter såkalt online-størrelsesendring. Det vil si at man kan endre størrelsen på dem mens de er montert. Noen andre filsystemer støtter bare offline-størrelsesendring, og det betyr at man må avmontere dem først.
Hva som støtter hva kan du se i tabellen her:
| Filsystem | Øking | Krymping |
|---|---|---|
| ext2/3 | Offline (Online med kjernemodifikasjon) | Offline |
| reiserfs | Online | Offline |
| XFS | Kun online | Nei |
| JFS | Kun online | Nei |
Øking av størrelse på logiske volumer
Når man øker størrelsen må man først øke størrelsen på det logiske volumet, og så øke størrelsen på filsystemet.
For å øke størrelsen på det logiske volumet /dev/vg/misc med 2 GiB, gjør man følgende:
# lvextend -L+2G /dev/vg/misc
Extending logical volume misc to 5.00 GB
Logical volume misc successfully resized
Etterpå må man øke størrelsen på filsystemet, og det varierer litt fra system til system.
ext2/3
Hvis en ikke har kjernemodifikasjon for online-størrelsesendring må man avmontere filsystemet først.
For å øke størrelsen på en ext2/3 partisjon gjør man følgende:
#umount /dev/vg/misc#resize2fs /dev/vg/miscresize2fs 1.35 (28-Feb-2004) Resizing the filesystem on /dev/vg/misc to 1310720 (4k) blocks. The filesystem on /dev/vg/misc is now 1310720 blocks long. #mount /dev/vg/misc
reiserfs
Hvis filsystemet er reiserfs gjør man følgende:
# resize_reiserfs /dev/vg/misc
resize_reiserfs 3.6.18 (2003 www.namesys.com)
resize_reiserfs: On-line resizing finished successfully.
XFS
XFS må endres størrelse på online, det vil si at den må være montert når du skal endre størrelsen. Dessuten må du spesifisere monteringspunktet, og ikke enheten.
Hvis vi har partisjonen vår montert i /mnt/misc så gjør vi følgende:
# xfs_growfs /mnt/misc
JFS
JFS må som XFS være online for å endres størrelse på, og også her bruker vi monteringspunktet.
Hvis vi har partisjonen vår montert i /mnt/misc så gjør vi følgende:
# mount -o remount,resize /mnt/misc
Krymping av logiske volumer
Når du krymper et logisk volum, må du først krympe filsystemet og deretter krympe det logiske volumet.
Hvis man for eksempel vil krympe /dev/vg/misc med 3 GiB og har krympet filsystemet gjør man følgende:
# lvreduce -L-3G /dev/vg/misc
WARNING: Reducing active logical volume to 2.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce test? [y/n]: y
Logical volume test successfully resized
ext2/3
For å krympe et ext2 eller ext3 filsystem må det være avmontert.
For å krympe bruker man programmet resize2fs, det har derimot den ulempen at det ikke støtter relative størrelser så man må vite den endelige størrelsen, i dette eksemplet 2 GiB. Man gjør følgende:
#umount /dev/vg/misc#resize2fs /dev/vg/misc 2Gresize2fs 1.35 (28-Feb-2004) Resizing the filesystem on /dev/vg/misc to 524288 (4k) blocks. The filesystem on /dev/vg/misc is now 524288 blocks long. #mount /dev/vg/misc
reiserfs
Som med ext2/3 må reiserfs være avmontert for å kunne krympes.
For å krympe et reiserfs filsystem gjør man følgende:
# resize_reiserfs -s-3G /dev/vg/misc
resize_reiserfs 3.6.18 (2003 www.namesys.com)
You are running BETA version of reiserfs shrinker.
This version is only for testing or VERY CAREFUL use.
Backup of you data is recommended.
Do you want to continue? [y/N]:y
Processing the tree: 0%....20%....40%....60%....80%....100% left 0, 0 /sec
nodes processed (moved):
int 0 (0),
leaves 1 (0),
unfm 0 (0),
total 1 (0).
check for used blocks in truncated region
ReiserFS report:
blocksize 4096
block count 524288 (1572864)
free blocks 516061 (1564605)
bitmap block count 16 (48)
Syncing..done
resize_reiserfs: Resizing finished successfully.
Utfasing av disker
Hvis du har en harddisk som er treig eller med ufatale defekter, eller av annen grunn ønsker å bytte den ut, lar LVM deg gjøre det på en enkel måte.
Det første du må gjøre er å sjekke at du har nok plass på de andre fysiske volumene i volumgruppen til å ta over for dataene på den disken som skal fases ut.
Før en begynner å flytte data må en deaktivere logiske volum i volumgruppen som den fysiste disken tilfører. Avmonter logiske volum som eventuelt er i bruk, hvis ikke vil kommandoen feile med meldingen LV vg/lv in use: not removing
# lvchange -a n vg
For å se status kan man skrive lvdisplay.
Nå er det klart til å flytte bort dataene fra det fysiske volumet, det gjøres med kommandoen pvmove på følgende måte:
# pvmove -v enhet
Når det fysiske volumet er tomt fjerner man det fra volumgruppen med kommandoen vgreduce på følgende måte:
# vgreduce vg enhet
Removed enhet from volume group "vg"
vgreduce vil ikke fungere om ikke deaktivering av volum og flytting av data ble utført korrekt.
Hvis man har flere fysiske volumer på samme disk, repeterer man denne prosedyren til alle er fjernet.
Til slutt aktiverer man de logiske volumene igjen
# lvchange -a y vg
Nå skal disken være ledig og kan fjernes eller benyttes til andre ting.
Fjerning av logiske volumer
Hvis du har et logisk volum du ønsker å fjerne kan du gjøre det med kommandoen lvremove.
For eksempel hvis man vil fjerne volumet /dev/vg/misc gjør man:
# lvremove /dev/vg/misc
Do you really want to remove active logical volume "misc"? [y/n]: y
Logical volume "misc" successfully removed
Fjerning av volumgrupper
For å fjerne en volumgruppe må først alle logiske volumer fjernes. Etterpå er det bare å bruke kommandoen vgremove.
For eksempel hvis man skal fjerne volumgruppen vg så gjør man følgende:
# vgremove vg
Volume group "vg" successfully removed
Flytting av volumgrupper
Hvis man vil flytte en volumgruppe til et annet system, for eksempel hvis man har fått en ny tjener, er det noe som må gjøres før og etter man flytter harddisken(e) fysisk.
Først må man avmontere de logiske volumene i volumgruppen. Deretter må man deaktivere volumgruppen:
# vgchange -an vg
Når det er gjort må man eksportere volumgruppen. Det gjøres med kommandoen vgexport på følgende måte:
# vgexport vg
Deretter er det bare å flytte harddisken(e) over i det systemet.
Når harddisken(e) er på plass i det nye systemet må volumgruppen importeres, det gjøres litt forskjellig i LVM 1 og 2:
LVM 1
Først må man søke etter fysiske volumer med kommandoen pvscan:
# pvscan
pvscan -- reading all physical volumes (this may take a while...)
pvscan -- inactive PV "enhet" is in EXPORTED VG vg [996 MB / 996 MB free]
pvscan -- inactive PV "enhet" is in EXPORTED VG vg [996 MB / 244 MB free]
pvscan -- total: 2 [1.95 GB] / in use: 2 [1.95 GB] / in no VG: 0 [0]
Deretter importerer man volumgruppen med kommandoen vgimport på følgende måte:
# vgimport vg enheter
vgimport -- doing automatic backup of volume group vg
vgimport -- volume group vg successfully imported and activated
LVM 2
I LVM 2 trenger man bare kjøre følgende:
# vgimport vg
Volume group "vg" successfully imported
Når volumgruppen er importert må man aktivere den:
# vgchange -ay vg
Og så skulle den være klar til bruk igjen.
Avbildinger
Avbildinger (fra engelske «snapshots») er en spesiell type logiske volumer som inneholder endringer på et annet fysisk volum siden avbildingen ble opprettet.
Avbildinger brukes blandt annet når man skal ta sikkerhetskopi av et logisk volum, og man ikke ønsker at noen av dataene skal endres mens sikkerhetskopieringen pågår.
Når man skal opprette en avbilding må man velge størrelsen på den slik at den kan romme alle endringene som skjer i levetiden til avbildingen.
La oss si at vi vil lage en avbilding av /dev/vg/misc som vi kaller miscbackup. Vi setter størrelsen til 500MiB.
# lvcreate -L500M -s -nmiscbackup /dev/vg/misc
Logical volume "miscbackup" created
Nå har vi en avbilding som heter /dev/vg/miscbackup.
Så er det bare å montere den, foreta sikkerhetskopieringen, avmontere den, og fjerne den på samme måte som et vanlig logisk volum.
| Pass på at avbildingen skapes stor nok, når den blir full vil den automatisk bli deaktivert og dermed gjort ubrukelig. |
Eksterne ressurser
- Hjemmesiden til LVM 1 (http://sources.redhat.com/lvm/)
- Hjemmesiden til LVM 2 (http://sources.redhat.com/lvm2/)
- The LVM HOWTO (http://www.tldp.org/HOWTO/LVM-HOWTO/)
- Gentoo og LVM 2 (http://www.gentoo.org/doc/en/lvm2.xml)

