SelfLinux Systemverwaltung Linux LVM-HOWTO Abschnitt 1 | SelfLinux-0.13.0

| Linux LVM-HOWTO | Autor Formatierung GPL

#### 1 Grundlagen

#### 1.1 Was ist LVM?

LVM ist die Abkürzung für "Logical Volume Manager" und bezeichnet eine Funktion, die seit der Version 2.4 im Standard-Kernel integriert ist. Für Windows-Anhänger entspricht dies in etwa den "Dynamischen Datenträgern" bei Microsoft Windows 2000 oder XP Pro. Mittels LVM lässt sich eine logische Schicht zwischen Dateisystem und der Partition einer physikalischen Festplatte schieben. So ist es möglich, ein Dateisystem über mehrere Partitionen und Festplatten zu strecken, wohlgemerkt auch nach dem Anlegen eines Dateisystems, sogar wenn schon Daten darin abgespeichert wurden. Dazu wird das Dateisystem auf einer virtuellen Partition, einem so genannten Logical Volume, angelegt. Dies ist auch der eigentliche Clou von LVM: Man kann einer zu kleinen Partition oder Festplatte, die mit LVM verwaltet wird, nachträglich freien Speicherplatz hinzufügen. Voraussetzung ist allerdings, dass die betreffenden Partitionen im Voraus von LVM verwaltet wurden. LVM kann nicht auf bestehende Datenpartitionen angewandt werden. Eine zusätzliche und praktische Eigenschaft von LVM ist dessen Backup-Funktion. Mittels so genannten Snapshots kann man sehr einfach eine identische Kopie seiner von LVM verwalteten Partition erstellen. Ein weiterer Vorteil besteht darin, dass LVM die Geschwindigkeit bei Schreib- und Lesezugriffen nicht merklich beeinträchtigt, und auch die CPU-Belastung steigt kaum. Jedoch steigt analog zu RAID 0 die Ausfallwahrscheinlichkeit, wenn sich das Dateisystem und die darunter befindliche virtuelle Partition über mehrere Festplatten erstreckt, da nur eine Festplatte ausfallen muss, um die ganzen Daten zu verlieren.

#### 1.2 Warnung

Der Autor übernimmt keine Garantie auf die hier beschriebenen Verfahren und übernimmt keine Haftung für eventuelle Hardwareschäden und/oder Datenverluste oder sonstige Schäden. LVM ist zwar inzwischen sehr stabil und ausgereift, dennoch sollte man Arbeiten am Dateisystem nie ohne Backup vornehmen. Sichern Sie bevor Sie fortfahren Ihre Daten auf einen gesonderten Datenträger, um Datenverluste zu vermeiden.

#### 1.3 Copyright

Dieses Dokument ist urheberrechtlich geschützt. Das Copyright für dieses Dokument liegt bei Markus Hoffmann ( mar.hoff@gmx.net).

Das Dokument darf gemäß der GNU General Public License verbreitet werden. Insbesondere bedeutet dieses, dass der Text sowohl über elektronische wie auch physikalische Medien ohne die Zahlung von Lizenzgebühren verbreitet werden darf, solange dieser Copyright-Hinweis nicht entfernt wird. Eine kommerzielle Verbreitung ist erlaubt und ausdrücklich erwünscht. Bei einer Publikation in Papierform ist das Deutsche Linux HOWTO Projekt hierüber zu informieren.

#### 2 Voraussetzungen

Um LVM nutzen zu können müssen Sie feststellen, ob Ihr Kernel diese Funktion unterstützt, was gewöhnlich ab dem Standard-Kernel 2.4 der Fall ist. Dazu dient das Modul lvm-mod. Führen Sie als Benutzer root den Befehl lsmod aus, um zu überprüfen, ob es in der Liste der geladenen Module schon enthalten ist, gegebenenfalls führen Sie vorher noch modprobe lvm-mod aus. Zusätzlich dazu können Sie auch überprüfen, ob das Verzeichnis /proc/lvm existiert, welches nur bei einem aktivem LVM-System vorhanden ist. Ist das Modul nicht vorhanden, müssen Sie den Kernel mit der LVM-Funktion neu kompilieren. Sehen Sie auch dazu das Kapitel über die Neukompilierung eines Kernels von SelfLinux. Zusätzlich zur Kernel-Funktion ist noch das Programmpaket lvm für die LVM-Kommandos notwendig, das sich, falls es nicht installiert sein sollte, meistens auf einer der CDs Ihrer Linux-Distribution befindet.

#### 3 Einführung

#### 3.1 LVM-System starten

Um die LVM-Funktion des Kernels nutzen zu können, ist es notwendig, das Modul lvm-mod zu laden. Dies geschieht mit folgendem Befehl.

root@linux ~# modprobe lvm-mod

Die LVM-Kommandos setzen die Datei /etc/lvmtab und das Verzeichnis /etc/lvmtab.d voraus, die man vorher mit dem Befehl vgscan erstellen kann. Die beiden Dateien beinhalten Informationen über die vorhandene LVM-Konfiguration. Mit dem Befehl vgchange werden eventuelle Volume Groups aktiviert. Bei vielen Distributionen werden die beiden folgenden Befehle während des Systemstarts ausgeführt und sind damit nicht unbedingt notwendig. Sehen Sie dazu auch den Abschnitt "LVM beim Booten und Shutdown".

root@linux ~# vgscan -v root@linux ~# vgchange -a y

#### 3.2 LVM-System einrichten

#### 3.2.1 Physical Volume einrichten

Das LVM-System basiert auf drei Stufen: dem Physical Volume, der Volume Group und dem Logical Volume. Genauere Beschreibungen dieser und anderer Begriffe finden sie im Anhang unter "Fachbegriffe" erläutert.

Als erstes müssen Sie eine bestehende Partition mit der Partitions-ID 8e für LVM kennzeichnen. Dazu führen Sie als Benutzer root cfdisk gefolgt mit der Angabe der betreffenden Festplatte aus. cfdisk ist eine komfortablere Variante von fdisk.

root@linux ~# cfdisk /dev/hdb

Danach wählt man mit den Cursortasten vertikal die gewünschte Partition (zum Beispiel /dev/hdb5) und danach horizontal die Option "Type" um die Partitions-ID 8e festzulegen. Mit der Option "Write" werden die Änderungen in der Partitionstabelle eingetragen.

Danach kann man auf dieser Partition ein Physical Volume einrichten. Die LVM-Kommandos setzen die Dateien /etc/lvmtab und /etc/lvmtab.d voraus, die man gegebenenfalls mit dem Befehl

root@linux ~# vgscan -v

erstellen kann. Mit dem Befehl

root@linux ~# pvcreate /dev/hdb5

kann dann das Physical Volume erstellt werden. Theoretisch wäre eine Volume Group auch mit nur einem Physical Volume möglich, hier erstellen wir jedoch noch eine zweite, die wir später in der Volume Group zusammenfügen.

root@linux ~# pvcreate /dev/hdb6

Voraussetzung ist natürlich wieder, dass diese Partition die ID 8e hat.

#### 3.2.2 Volume Group einrichten

Die Volume Group stellt eine Art Speicherpool dar, aus der man eine oder mehrere Logical Volumes, also virtuelle Partitionen, erstellen kann. Zusätzlich zum Kommando vgcreate und den Physical Volumes muss der gewünschte Name, hier volg1, der Volume Group angegeben werden.

root@linux ~# vgcreate volg1 /dev/hdb5 /dev/hdb6

Danach befindet sich im Verzeichnis /dev das neue Unterverzeichnis volg1 für die betreffende Volume Group.

#### 3.2.3 Logical Volume einrichten

Nun kann man mit der gesamten Volume Group volg1, oder auch nur mit einem Teil davon ein Logical Volume erstellen. Zum Kommando lvcreate muss man die gewünschte Größe, den Namen des Logical Volume und die Volume Group angeben. Hier wird der Name logv1 und die Größe 1000 Megabyte verwendet.

root@linux ~# lvcreate -n logv1 -L 1000M volg1

Damit wird die neue Device-Datei /dev/volg1/logv1 erstellt, über diese man auf die virtuelle Partition zugreifen kann. Genau nach dem gleichen Verfahren wie etwa auf die gewöhnliche Partition /dev/hda1.

Um auf dieser Partition auch Daten abspeichern zu können, ist auch hier ein Dateisystem wie ext2 oder reiserfs erforderlich.

root@linux ~# mkfs -t ext2 /dev/volg1/logv1

Das Dateisystem wird dann über ein Verzeichnis in den Verzeichnisbaum eingehängt.

root@linux ~# mkdir /lvm-test root@linux ~# mount -t ext2 /dev/volg1/logv1 /lvm-test

Nun können Sie im neu erstellten Verzeichnis /lvm-test Daten abspeichern. Bei Bedarf können sie mit umount die Partition auch wieder aus dem Verzeichnisbaum aushängen.

root@linux ~# umount /lvm-test

#### 3.3 LVM-System vergrößern und verkleinern

#### 3.3.1 Logical Volume vergrößern und verkleinern

Wie schon gesagt lässt sich mit LVM eine Partition nachträglich vergrößern und auch verkleinern. Möchte man das zuvor angelegte Logical Volume mit der Größe von 1000 Megabyte vergrößern, kann man dies mit lvextend erledigen. Dazu gibt man einfach die neue Größe mit der Option -L direkt an. Alternativ könnte man auch mit -L+300M die neue Größe relativ zur bestehenden Größe angeben. Aufgrund der Größe von 4 Megabyte der Physical Extents, können die tatsächlisch erzeugten Größen der Logical Volumes etwas abweichen, da die erzeugten Logical Volumes damit immer nur ein Vielfaches von 4 MB groß sein können. Um diese Abweichung zu umgehen, können Sie beim Anlegen einer Volume Group die Größe der Physical Extents explizit kleiner angeben. Sehen Sie dazu auch den Abschnitt "Volume Group mit spezieller PE-Größe".

root@linux ~# lvextend -L 1300M /dev/volg1/logv1

Jetzt wurde erst die virtuelle Partition, also das Logical Volume vergrößert. Zusätzlich muss man nun auch das darin enthaltene Dateisystem vergrößern. Zuvor muss es allerdings mit umount aus dem Verzeichnisbaum entfernt und noch mit e2fsck auf Fehler überprüft werden.

root@linux ~# umount /lvm-test root@linux ~# e2fsck -f /dev/volg1/logv1 root@linux ~# resize2fs /dev/volg1/logv1 root@linux ~# mount -t ext2 /dev/volg1/logv1 /lvm-test

Umgekehrt können Sie mit resize2fs das Dateisystem auch verkleinern, indem Sie die neue Größe in Blöcken (per Default 1024 Byte) angeben. Im Beispiel wird das Logical Volume auf 500 Megabyte verkleinert. Beachten Sie unbedingt, dass Sie erst das Dateisystem und danach das Logical Volume mit lvreduce verkleinern. Würden Sie erst das Logical Volume mit lvreduce verkleinern, gehen die darin enthaltenen Daten verloren!

root@linux ~# umount /lvm-test root@linux ~# e2fsck -f /dev/volg1/logv1 root@linux ~# resize2fs /dev/volg1/logv1 512000 root@linux ~# lvreduce -L-800M /dev/volg1/logv1 root@linux ~# mount -t ext2 /dev/volg1/logv1 /lvm-test

Um komfortabler zu arbeiten, gibt es das Kommando e2fsadm, das alle vorher beschriebenen Schritte wie lvextend, lvreduce, e2fsck und resize2fs zusammen ausführt. Wie der Name schon andeutet, funktioniert das Programm nur bei dem Dateisystem ext2. Falls das Programm nicht in Ihrer Distribution enthalten ist, können Sie es unter http://e2fsprogs.sourceforge.net/ downloaden. Das folgende Kommando vergrößert zum Beispiel das Logical Volume auf 800 Megabyte. Zuvor muss es allerdings wieder mit umount ausgehängt werden.

root@linux ~# umount /lvm-test root@linux ~# e2fsadm -L 800M /dev/volg1/logv1 root@linux ~# mount -t ext2 /dev/volg1/logv1 /lvm-test

Bei der Verkleinerung verfährt man in gleicher Weise.

root@linux ~# umount /lvm-test root@linux ~# e2fsadm -L 500M /dev/volg1/logv1 root@linux ~# mount -t ext2 /dev/volg1/logv1 /lvm-test

#### 3.3.2 Volume Group vergrößern und verkleinern

Da auch der Speicherplatz der Volume Group irgendwann belegt ist und man damit kein Logical Volume mehr anlegen oder vergrößern kann, ist es möglich, auch eine Volume Group mit dem Befehl vgextend zu vergrößern. Man muss nur eine beliebige freie Partition wie in Abschnitt "Physical Volume einrichten" als Physical Volume einrichten und es der Volume Group zufügen.

root@linux ~# pvcreate /dev/hdb7 root@linux ~# vgextend volg1 /dev/hdb7

Mit vgdisplay kann man sich dann die neue Größe ansehen.

root@linux ~# vgdisplay /dev/volg1

Möchte man eine Volume Group verkleinern, kann man mit dem Befehl

root@linux ~# vgreduce -a volg1

alle freien Physical Volumes aus der Volume Group entfernen. Um ein bestimmtes Physical Volume zu entfernen, muss man den genauen Pfad dessen angeben. Vorher kann man, falls erwünscht, mit dem Befehl pvdisplay -v überprüfen, ob das betreffende Physical Volume Daten enthält oder nicht.

root@linux ~# pvdisplay -v /dev/hdb7 root@linux ~# vgreduce volg1 /dev/hdb7

Voraussetzung ist immer, dass auf dem betreffenden Physical Volume keine Daten enthalten sind. Mit dem Kommando pvmove kann man vorher gegebenenfalls die Daten auf ein anderes Physical Volume verschieben. Sehen Sie dazu auch den Abschnitt "Daten von einem PV zum anderen PV verschieben".

#### 3.4 LVM-System beenden

Um das LVM-System ordungsgemäß zu beenden, müssen Sie alle Logical Volumes mit umount aus dem Verzeichnisbaum aushängen und danach vgchange ausführen.

root@linux ~# umount /lvm-test root@linux ~# vgchange -a n

Am komfortabelsten ist es, die Befehle für das Starten und Beenden des LVM-Systems innerhalb des Init-V-Prozesses einzubinden, um nicht immer manuell nach dem Systemstart das LVM-System zu aktivieren. Sehen Sie dazu auch den Abschnitt "LVM beim Booten und Shutdown".