Wer regelmäßig Plattenpartionen rangieren, vergrößern und verkleinern muss, findet im Logical Volume Manager eine hilfreiche Technologie.
Ursprünglich stammt der Logical Volume Manager (LVM) aus dem Server-Bereich. Die Entwickler verfolgten das Ziel, dem Administrator das Leben durch das dynamische Anpassen der Festplattenkapazität während der Laufzeit des Systems zu erleichtern.
Durch eine zusätzliche Abstraktionsebene unterhalb des Dateisystems erlaubt das LVM auf einer einzelnen Festplatte – oder über mehrere hinweg – das Erstellen von logischen Partitionen. Mit den passenden Programmen vergrößern oder verkleinern Sie diese virtuelle Datenträger fast nach Belieben.
Schon im Linux-Kernel 2.4 war der LVM in Version 1 vertreten [1]. In den aktuellen 2.6er-Kernel integrierten die Entwickler den LVM2, der einige Änderungen (siehe Kasten “LVM2”) gegenüber der Vorgängerversion enthält. Alle Anweisungen in diesem Artikel beziehen sich auf LVM2, das sich abwärtskompatibel zu LVM1 verhält.
LVM2
Die wesentlichen Änderungen im LVM2 sind der Device Mapper, maximale LVM-Größen und die Konfigurationsdatei lvm.conf. Mit dem Device Mapper setzen Sie ein neues Block-Device auf ein existierendes Device auf. In diesem Fall zieht der Kernel damit die zusätzliche virtuelle Schicht zwischen Festplatte und Dateisystem ein.
Die maximale Device-Größe erhöhte sich mit LVM2 von 2 Terabyte auf 8 Exabyte bei 64-Bit-CPUs. Die Software verwendet nun die Konfigurationsdatei lvm.conf, die sie automatisch anlegt. Die Default Einstellungen darin reichen für einfache Anwendungen vollkommen aus. Im Fehlerfall setzen Sie zuerst hier den Loglevel hoch, um mehr Informationen über das Problem zu erhalten.
In einigen aktuellen Linux-Distributionen bietet das Setup schon bei der Neuinstallation an, einen Teil des Systems auf LVM2 zu installieren. Aber auch auf einem bestehenden System ist es möglich, LVM-Partitionen zu erzeugen. Hierzu stehen einige grafische Tools für KDE und Gnome bereit, mit denen Sie fast alle Administrationsaufgaben erledigen. Die Tabelle “Wichtige LVM-Kommandos” gibt einen Überblick über die wichtigsten Tools der Kommandozeile.
Wichtige LVM-Kommandos
| Befehl | Zweck |
|---|---|
pvcreate |
Erzeugen eines Physical Volumes |
vgcreate |
Erzeugen einer Volume Group |
lvcreate |
Erzeugen eines Logical Volumes |
pvdisplay |
Eigenschaften eines Physical Volumes anzeigen |
vgdisplay |
Eigenschaften einer Volume Group anzeigen |
lvdisplay |
Eigenschaften eines Logical Volumes anzeigen |
vgextend |
Physical Volumes einer Volume Group hinzufügen |
lvextend |
Logical Volume vergrößern |
lvreduce |
Logical Volume verkleinern |
pvremove |
Physical Volumes löschen |
vgremove |
Volume Group löschen |
lvremove |
Logical Volume löschen |
Mach’s mit LVM
Auf dem heimischen Rechner spielt LVM2 bei Systemen mit stark wachsendem Datenbestand wie Datenbanken, MP3-Archiven, Videosammlungen oder Home-Verzeichnissen seine Stärken durch einfaches Verändern der Partitionen aus. Durch das Zusammenfügen von einzelnen Festplatten zu virtuellen Partition recyceln Sie zum Beispiel auch kleinere, ausrangierte Datenträger. Mit der Snapshot-Funktion erstellen Sie im laufenden Betrieb Backups eines definierten Zustands.
Bei stark belasteten Systemen bietet LVM die Möglichkeit, die Datenblöcke aufzuteilen und – ähnlich wie bei einem RAID 0 – die Schreib- und Lesezugriffe auf mehrere Platten zu verteilen (Striping), um mehr Performance zu erzielen. Datensicherheit beim Ausfall einer Platte zählt jedoch nicht zum Repertoire von LVM.
Ein solcher Ausfall kann ein über mehrere Festplatten gehendes Dateisystem auf LVM2-Basis völlig unbrauchbar machen. Daher empfiehlt sich, ein solches Konstrukt mit einem sicheren RAID 1 oder RAID 5 [2] zu kombinieren und regelmäßige Backups zu fahren. Um LVM anzuwenden und zu administrieren, sollten Sie zunächst sehr genau verstehen, was in den einzelnen Schichten passiert. Dabei hilft ein Überblick über die Anatomie von LVM2.
Auf dem Seziertisch
Ein LVM-System besteht aus drei Abstraktionsebenen: dem Physical Volume (PV), der Volume Group (VG) und dem Logical Volume (LV). Um etwas Licht in den Abkürzungsdschungel zu bringen, zeigt die Grafik in Abbildung 1 die einzelnen Schichten. Die Basis stellen dort in der Schicht 1 zwei IDE-Festplatten mit den drei Partitionen hda6, hda7 und hdb1 dar. Die drei Partitionen stellen für die Schicht 2 – das Physical Volume – je 300 MByte Speicherplatz bereit. Die Schicht 3 fasst die Physical Volumes logisch zu einem großen Speicherpool mit insgesamt 900 MByte zusammen.
Eine Volume Group darf neben realen Festplatten auch die Devices eines Software- oder Hardware-RAIDs enthalten. Es entsteht sozusagen eine virtuelle Festplatte – die Volume Group tim. Zu einer Volume Group dürfen Sie nachträglich noch neu angelegte Physical Volumes hinzufügen oder vorhandene entfernen.
Die Schicht 4 zeigt die Logical Volumes mp3 und doc. Ein Logical Volume ist mit einer virtuellen Partition vergleichbar. Es besteht aus einer oder mehreren normalen Partitionen und lässt sich wie eine Volume Group nachträglich vergrößern oder verkleinern. In der Schicht 5 liegt schließlich das Dateisystem (in diesem Fall Ext3).
Das Dateisystem Ext3 bringt den Vorteil mit, das Sie das LV während des Betriebes vergrößern oder verkleinern könnten. ReiserFS erlaubt dagegen online nur ein Vergrößern, das Verkleinern beherrscht es nur offline (bei nicht gemountetem Dateisystem).
LVM-Jargon
| Kürzel | Bedeutung |
|---|---|
| LE | Logical Extent |
| LV | Logical Volume |
| LVM | Logical Volume Manager |
| PE | Physical Extent |
| PV | Physical Volume |
| VG | Volume Group |
| VGDA | Volume Group Descritpion Area |
Kleinste Einheit
Die Schichten 2, 3, und 4 teilen sich in weitere Bestandteile auf: Die kleinste physikalische Speichereinheit in einem LVM-System liegt im Physical Extent (PE). Jedes PV unterteilt sich in gleich große PEs. Deren Größe legen Sie beim Setup der Volume Group fest. Der Default-Wert beträgt 4 MByte, das Maximum liegt bei 1 GByte. In der Praxis hat sich eine PE-Größe von 32 MByte als praktikabel bewährt.Das Physical Volume versieht die PEs mit IDs, die bei 0 beginnen.
Analog zu den PVs und PEs besteht jedes Logical Volume (LV) aus Logical Extents (LE). Die LEs besitzen die gleiche Größe wie die PEs der Volume Group, in der sich das LV befindet. Daraus ergibt sich bei Verwenden des Default-Wertes: 1 PE = 1 LE = 4 MByte. Auch die Logical Extents bekommen in jedem Logical Volume von 0 an beginnend eine ID. Außerdem bildet LVM sie 1:1 auf die PEs ab. Abbildung 2 zeigt diesen Vorgang anhand der Beispielkonfiguration.

Abbildung 2: Die interne Aufteilung von Physical Volumes zu Logical Volumes in Physical Extents (PE) und Logical Extent (LE) im LVM.
Fordert eine Software ein bestimmtes Byte aus dem LV doc an, so identifiziert das System das zugehörige Logical Extent über dessen ID. Aus der Mapping-Tabelle des LV ist zu entnehmen, wo auf dem PV es liegt und wo sich das passende Physical Extent dazu findet. Das ermöglicht den exakten Zugriff auf die physikalische Position des LV-Speicherplatzes.
Die Beispielkonfiguration arbeitet mit drei Physical Volumes, eine VG darf aber auch aus nur einem PV bestehen. Am Anfang jedes PVs findet sich im ersten PE die Volume Group Descriptor Area (VGDA) mit den Metadaten der LVM-Konfiguration. Sie übernimmt quasi die Aufgaben einer Partitionstabelle und besteht aus vier Informationsbereichen: je einer für PV, VG und LV und die PEs. Im Verzeichnis /etc/lvm/backup liegt normalerweise ein automatisches Backup der VGDA.
Stars and Stripes
Es gibt zwei Mapping-Methoden, um die Daten auf die PVs zu verteilen: Linear und Striping (RAID 0). Der lineare Modus ist als Vorgabe eingestellt. Das System schreibt dann die Daten der LEs hintereinander auf die PEs des Physical Volume. Auch wenn mehrere PVs zu einer Volume Group gehören, füllt LVM zunächst das erste mit Daten und schreibt erst dann auf dem zweiten weiter.
Beim Striping teilt sich der Inhalt des LEs auf die PEs mehrerer PVs auf. In bestimmten Situationen beeinflusst diese Strategie die Performance ganz erheblich im positiven Sinne.

Abbildung 3: Die Physical Extents (PE) und Logical Extent (LE) im Striping Modus (RAID 0) aufgeteilt.
Snapshot
Die Snapshot-Funktion des LVM2 eignet sich besonders für Backups. Sie ermöglicht es, zu jedem fixen Zeitpunkt eine Kopie eines Logical Volumes anzulegen, das sich nicht mehr verändert. Das so entstandene neue Snapshot Block Device ist eine exakte eingefrorene Kopie (“frozen image”). Seit LVM2 besteht sogar die Möglichkeit, dieses Image les- und schreibbar einzuhängen.
Das Logical Volume bleibt während des Snapshot weiterhin beschreibbar und speichert veränderte Daten auf den Datenträgern (Abbildung 4). Eine detaillierte Anleitung hierzu finden Sie im LVM-Howto [2].

mp3.” width=”300″ height=”192″ />
Abbildung 4: Ein Snapshot sichert die Daten vom Logical Volumemp3.Administration
Suse 10.0, Mandriva 2006 und Fedora Core 5 bringen jeweils eigene Tools zur LVM-Administration mit, die je nach Konzeption unterschiedliche Stärken und Schwächen aufweisen.
Suse 10.0
Schon die Suse-Installationsroutine erlaubt es, Logical Volumes über das benutzerdefinierte Partitions-Setup zu erstellen. Auf einem installierten System stellt KDE über Yast2 unter dem Menüpunkt SystemPartitionieren das notwendige Tool bereit. Nach dem Anlegen der gewünschten Anzahl von LVM-Partitionen (Typ 0x8e) führt Yast2 den Benutzer unter LVM durch ein übersichtlich aufgebautes LVM-Setup.
Zuerst gilt es im Dialog Setup für Physical Volumes die einzelnen Geräte zu einer Volume Group zusammenzufassen. Der Dialog Logische Volumes zeigt den freien Speicher der angelegten Volume Group mit deren Namen an, und über Hinzufügen entstehen die LVs /mp3 und /doc aus unserem Beispiel inklusive Ext3-Dateisystem. Abbildung 5 zeigt das Ergebnis. Es folgt noch die Sicherheitsabfrage, ob das Programm die Änderungen tatsächlich vornehmen soll.
Im Yast2 Kontrollzentrum finden Sie unter LVM ein Modul, mit dem Sie die gesamte LVM-Konfiguration (Abbildung 6) einsehen und bei Bedarf verändern. Damit ermöglicht Suse 10.0 die LVM-Konfiguration komplett über grafische Tools abzuwickeln, ohne in die Tiefen der Kommandozeile abtauchen zu müssen.
Mandriva 2006
Mandriva 2006 richtet auf Wunsch während der Installation Logical Volumes über die “Experten”-Einstellungen von Diskdrake ein. Zum nachträglichen Anlegen bietet das Mandriva-Kontrollzentrum unter EinhängepunkteErstellen, löschen von FestplattenpartitionenPartitionen einen entsprechenden Punkt an.
Nach dem Starten des Tools erscheint der Hinweis, erst eine Sicherheitskopie der Daten anzufertigen. Jedes Device erreicht man in einem eigenen Reiter mit dessen Namen, die Festplattenbereiche erscheinen dort je nach Dateisystemtyp als verschiedenfarbige Balken.
Durch einen Mausklick auf den unpartitionierten Bereich erzeugen Sie eine neue LVM-Partition, die nach einem Neustart des Rechners zur Verfügung steht. Mit dem Button Zum LVM hinzufügen legen Sie die Volume Group tim an. Sie erhält als neues Device einen eigenen Reiter (Abbildung 7). Jetzt erzeugen Sie unter Angabe der Größe, des Dateisystem und des Mountpoints das Logical Volume.
Die Größe der PE und LE dürfen Sie beim Anlegen jedoch nicht frei wählen; sie beträgt stets 4 MByte. Es existiert auch keine Möglichkeit, das neue LV-Device statt im Linear Mode im Striping Mode anzulegen. Bis auf diese Einschränkungen lässt sich LVM mit dem Diskdrake von Mandriva 2006 jedoch recht komfortabel auf grafischem Weg verwalten.
Fedora Core 5
Der Red-Hat-Spross Fedora Core 5 setzt beim automatischen Partitionieren der Festplatte durch Disk Druid während der Installation voll auf LVM2. Nach dem Einrichten findet sich auf dem Testsystem eine kleine Ext3-Partition mit rund 100 MByte für die Daten unterhalb von /boot. Für diesen Bereich empfiehlt sich immer eine normale Partition, da es sonst beim Systemstart zu Problemen kommt.
Den Rest der Daten packt das Fedora-Setup in eine LVM2-Partition namens VolGroup00, die sich in zwei LVs aufteilen – eine für das Root-Dateisystem mit Ext3 sowie die Swap-Partition. Beim manuellen Partitionieren mit Disk Druid dürfen Sie frei über die Aufteilung entscheiden.
Legen Sie während der Neuinstallation keine LVM-Partition an, erstellen Sie alternativ über das Kommandozeilen-Tool Fdisk eine Partition vom Typ 0x8e in der gewünschten Größe. Jetzt kommt das inzwischen schon recht ausgereifte grafische Tool system-config-lvm zum Einsatz, das Sie unter SystemAdministrationLogische Datenträgerverwaltung (LVM) finden.
Es initialisiert die neu angelegten LVM Partitionen und zeigt die neu erzeugten PVs als rote Balken an. Mit dem Schalter Neue Datengruppe erstellen fügen Sie diese dann zur Volume Group tim zusammen. Anschließend erzeugen Sie nach einem Klick auf den Button Neue logische Datenträger erzeugen die LVs mp3 und doc, wobei Sie die Fragen zur Größe, dem Filesystem und dem Mount-Punkt zu beantworten haben. Die erzeugten Volumes zeigt das Tool dann als blaue Balken an (Abbildung 8).

system-config-lvm zur LVM-Konfiguration.” width=”300″ height=”175″ />
Abbildung 8: Das Fedora-Toolsystem-config-lvm zur LVM-Konfiguration.Insgesamt macht das LVM-Werkzeug von Fedora einen stabilen Eindruck. Gegenüber der Vorgängerversion bietet es einige neue Funktionen wie das Erstellen von Snapshots.
LVM zu Fuß
Das LVM-Paket enthält eine ganze Reihe von Administrationswerkzeugen (siehe Tabelle “Wichtige LVM-Kommandos”), mit denen Sie die verschiedenen Schichten per Kommandozeile erzeugen und manipulieren. Die Tools für die einzelnen Schichten sind zum Teil in ihrer Funktion sehr ähnlich und unterscheiden sich durch die ersten zwei Buchstaben des Namens: pv steht für Physical Volume, vg für Volume Group und lv für Logical Volume.
Die drei Partitionen des Beispiels (hda6, hda7 und hdb1) müssen Sie vorab unter Zuhilfenahme eines entsprechenden Programms wie Fdisk mit dem Partitionstyp 0x8E versehen. Ein pvcreate Device-Datei (Beispiel: pvcreate /dev/hda6) erzeugt aus der Partition ein Physical Volume. Zur Kontrolle zeigt pvdisplay Device-Datei) die Daten des neuen Block Devices an (Listing 1). Mit dem Befehl
vgcreate -s 32M tim /dev/hda6? /dev/hda7 /dev/hdb1
entsteht aus den drei einzelnen Devices die Volume Group tim mit insgesamt 21 PEs von je 32 MByte Umfang.
Listing 1
pvdisplay /dev/hda6 — Physical volume — PV Name /dev/hda6 VG Name tim PV Size 224,00 MB / not usable 0 Allocatable yes (but full) PE Size (KByte) 32768 Total PE 7 Free PE 0 Allocated PE 7 PV UUID ZojeYW-PXR1-iJuS-4n20-iH4J-0E6q-0ppplo
Jetzt folgen die beiden Logical Volumes, die Sie mit den Befehlen lvcreate -l 700 -n mp3 tim und lvcreate -l 200 -n doc tim erstellen. Die tatsächliche Größe der LVs ist immer etwas kleiner, da LVM nur ganze Logical Extents mit 32 MByte verwendet. Auch hier zeigt ein lvdisplay /dev/tim/mp3 die Früchte der Arbeit an (Listing 2).
Listing 2
— Logical volume — LV Name /dev/tim/mp3 VG Name tim LV UUID 3YsKEl-69Wn-42l9-rm33-fclF-OUG1-k2a5tu LV Write Access read/write LV Status available # open 1 LV Size 576,00 MB Current LE 18 Segments 3 Allocation inherit Read ahead sectors 0 Block device 253:0
Nun fehlt noch der Eintrag in der /etc/fstab, damit das System die Devices beim Booten automatisch mountet (Listing 3). Die Boot-Skripte der drei besprochenen Distributionen brauchen Sie nicht anzupassen: Das System scannt automatisch nach LVM-Devices. Probeweise bindet der Eintrag beide LVs ein, um beim nächsten Neustart keine böse Überraschung zu erleben. Der Befehl df zeigt das Arbeitsergebnis (Listing 4).
Listing 3
/dev/tim/doc /doc ext3 acl,user_xattr 1 2 /dev/tim/mp3 /mp3 ext3 acl,user_xattr 1 2
Listing 4
Dateisystem 1K-Blöcke Benutzt Verfügbar Ben% Eingehängt auf /dev/hdc1 19840892 2942252 15874500 16% / /dev/shm 257660 0 257660 0% /dev/shm /dev/mapper/tim-mp3 580540 16852 534200 4% /mp3 /dev/mapper/tim-doc 95195 5664 84616 7% /doc
Mehr Platz, bitte!
Läuft der Speicherplatz in /mp3 langsam voll? Dann bietet sich das Erweitern mittels LVM an. Dazu legen Sie zuerst eine neue Partition /dev/hdb2 vom Typ 0x8e über Fdisk an. Mit pvcreate /dev/hdb2 machen Sie dann daraus ein Physical Volume. Mit dem Befehl vgextend tim /dev/hdb2 erweitern Sie die Volume Group um den neu gewonnen Speicherplatz. Zum Logical Volume fügen Sie mit lvextend -L 300M /dev/tim/mp3 die zusätzliche Kapazität hinzu. Mit resize2fs /dev/tim/mp3 passen Sie dann das Ext3-Dateisystem auf die neue Größe an – schon lässt sich der neue Speicherplatz nutzen.
Fazit
Die grafischen Tools der wichtigsten Distributionen arbeiten mit LVM2 mittlerweile gut zusammen. Optimalerweise sorgen zusätzlich ein RAID-System und regelmäßige Backups für den Havariefall vor. Als weiterführende Lektüre empfehlen sich ein Artikel von LVM-Maintainer Gerd Mauelshagen [5] sowie ein Beitrag unserer Schwesterzeitschrift Linux-Magazin [6].
Infos
[1] Datenkoppler, LVM und RAID, Linux-Magazin 03/2004 S.54
[2] Desktop-RAID: Marcus Nasarek, “Easy Raider”, LinuxUser 04/2006, S. 42
[3] LVM-Howto: http://www.tldp.org/HOWTO/LVM-HOWTO/
[4] LVM2-Projektseite: http://sources.redhat.com/lvm2/
[5] LVM2-Artikel von Gerd Mauelshagen: http://redhat.com/magazine/009jul05/features/lvm2/
[6] LVM-Fallstricke: L. Köhler und C. Kühnast, “Über alle Fallen”, Linux-Magazin 10/2005, S. 48








