Logical Volume Manager

Fra Wikipedia, den frie encyklopedi.

(Omdirigert fra LVM)

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.


LVM gjør det enkelt å endre størrelsen på partisjonene. Du trenger derfor ikke å lage unødvendig store partisjoner for å være forberedt for fremtida, da LVM gjør det enkelt å øke størrelsen etterhvert som behovet melder seg.

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 å kunne avmontere et filsystem, må alle prosesser som bruker filsystemet stoppes.

For å øke størrelsen på en ext2/3 partisjon gjør man følgende:

# umount /dev/vg/misc
# resize2fs /dev/vg/misc
  resize2fs 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
Husk å gjøre ting i riktig rekkefølge, ellers er det høy risiko for datatap.

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 2G
  resize2fs 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


Personal tools