LVM under Linux
LVM er en 'volume manager' til Linux. Volume Management gør
det muligt at samle alt ens diskplads i en stor pool og dele
det op i filsystemer uden at skulle overveje hvilke størelser
ens harddiske har. LVM bliver i kerne 2.6 erstattet af LVM2
(aka. device-mapper) og det meste af dette foredrag bliver
dermed forældet
Disse slides er lidt en sammenskrivning af to foredrag holdt
for sslug henholdsvis 10. juli 2001 i Symbion og 12. december
2001 i Malmö
Problemet med partitionering
På en BoF tidligere på året diskuterede vi partitionering. En
af antagelserne var nærmest at man kun havde en disk. Dette
er ikke altid opfyldt, men hvad gør man hvis størelsen på ens
diske ikke passer fornuftigt efter hvordan man vil
partitionerer?
Vi ville altså gerne være istand til at partitionere
på tværs af diskene.
Dette foredrag handler ikke om fornuftig partitionering.
Uanset hvordan man gør så har man ovenstående problem.
Jeg har løsningen.
Løsningen: LVM
Løsningen er Logical Volume Managment (LVM). Linux har med
2.4-kernen fået understøttelse for LVM, mens det har været
kendt på andre unixer længere.
LVM virker ved at skyde et abstraktionslag ind mellem de
fysiske diske og de enheder man lægger ens filsystemer på.
Dermed kan man opfatte alle ens diske som en stor enhed.
Så kan vi glemme alle de normale problemer med
partitionering, når vi skal dele disken op.
Andre fordele ved LVM
Der er et par yderligere fordele ved LVM
-
De logiske enheder kan ændre størelse dynamisk.
-
Snapshots (backup, fsck, ...).
-
Man kan flytte data mellem fysiske diske uden nedetid
(skift af disk).
Nævnte jeg at man kan ændre størelsen på sine filsystemer?
Hvordan virker LVM
-
Ens harddiske bliver delt op i et antal lige store blokke
(extends), typisk på 4 MB.
-
Man kan så lave logiske volumes (svare til partitioner) ved
at sætte en række extends sammen
-
Man kan senere tilføje flere extends til en logisk volume
-
Striping opnås ved at tage extends skiftevis fra en række
forskellige diske< /li>
En illustration
+-----------+ +-----------+ +-----------+ +-----------+
| /dev/sda1 | | /dev/sdb1 | | /dev/hda1 | | /dev/hdc1 |
+-----+-----+ +-----+-----+ +-----+-----+ +-----+-----+
| | | |
+--+---------------+--+ +--+---------------+--+
| Volume Group 1 | | Volume Group 2 |
+--+---------------+--+ +----------+----------+
| | |
+-----+-----+ +-----+-----+ +-----+-----+
| LV1 | | LV2 | | LV3 |
+-----+-----+ +-----+-----+ +-----+-----+
| | |
+-----+-----+ +-----+-----+ +-----+-----+
| /var/www | | /home | | / |
+-----------+ +-----------+ +-----------+
Terminologi og kommandoer
-
Physical Volume
-
En fysisk enhed, det vil sige en harddisk, partition eller
ligende (pv*)
-
Logical Volume
-
En virtuel enhed, der kan lægges et filsystem på (lv*)
-
Volume Group
-
En række fysiske enheder, hvor pladsen lægges i samme
bunke (vg*)
-
Physical Extent
-
En diskblok når den hører til en fysisk enhed
-
Logical Extent
-
En diskblok når den høre til en virtuel enhed
(så er der en række generelle komandoer, der begynder med
lvm)
Installation af LVM
-
SuSE
-
Understøtter LVM under installation
-
Red Hat
-
Har pakker med user-space værktøjer og standardkernen
understøtter LVM med moduler
-
Mandrake
-
Har pakker med user-space værktøjer og standardkernen
understøtter LVM med moduler
-
Debian
-
Der er i hvert fald pakker med user-space værktøjer
-
Andre...
-
LVM er inkluderet i nyere kerner (2.4.X) (make
menuconfig -> Multi Device-support ->
LVM).
User-space værktøjer findes på
http://www.sistina.com/products_lvm_download.htm
Installation på andet end Suse
Hvad gør man hvis ens yndlingsdistribution ikke understøtter
LVM under installation?
-
Lav en lille partition og installer en minimal linux her.
-
Installer LVM på resten af disken/diskene
-
Opret passende logiske volumer
-
Flyt data over på de logiske volumer (og rod i /etc/fstab)
-
Genstart (lav et passende initrd, hvis du lægger din
rod-partition under lvm)
-
Installer LVM på installations-partitionen/disken og tilføj
den til din Volume Group
Noget langhåret, men det er muligt.
LVM i brug (Oprette en VG)
Initialisering af en diskpartition: Giv den partitionstype
0x8e og udfør:
# pvcreate /dev/sda1
Lav en volume group: Opret den og aktiver den.
# vgcreate VG1 /dev/sda1 /dev/sdb1
# vgchange -a y VG1
LVM i brug (Oprette en LV)
Lav en logical volume (40GB):
# lvcreate -L40G -nLV1 VG1
# mke2fs /dev/VG1/LV1
# mount -t ext2 /dev/VG1/LV1 /mnt
Forøg størelsen på et filsystem:
# umount /mnt
# lvextend -L+20G /dev/VG1/LV1
# ext2resize /dev/VG1/LV1
# mount /mnt
Lignende kan gøres med ReiserFS med resize_reiserfs
i stedet for ext2resize
Andre ligende projekter
-
The Vinum Volume
Manager
-
Logical Volumes for FreeBSD. Kan stort set det samme som
Linux' LVM, men implementerer også de forskellige typer
RAID.
Findes på
http://www.vinumvm.org/
-
Enterprise Volume Management System
-
IBM's open source-projekt, der løser de samme problemer.
Bygger med en plug- in arkitektur på mange af lagene i en
volume manager, hvilket gør det meget mere fleksibelt og
med mange flere muligheder. Formodentligt gør det det også
tunger e at lege med.
Findes på
http: //www-124.ibm.com/developerworks/opensource/evms/
Links
-
http://www.sistina.com/lvm/
-
Sistina Software, der står for udviklingen af LVM til
Linux.
-
http://www.sistina.com/lvm/doc/lvm_howto/index.html
-
En glimrende HOWTO om LVM. Kapitel 10, der beskriver en
række normale LVM-opgaver, er uundværligt. Men der også
kapitler, der mere dybdegående beskriver mere konkrete
situationer.
-
http://hacking.dk/talks/lvm
-
Selvreference.