Um die LVM-Funktion des Kernels nutzen zu können, ist es notwendig,
das Modul lvm-mod
zu laden. Dies geschieht mit folgendem Befehl:
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.
vgscan -v
vgchange -a y
Das LVM-System basiert auf drei Stufen: dem Physical Volume, der Volume Group und dem Logical Volume. Genauere Beschreibungen dieser und anderer Begriffe werden im Abschnitt 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
.
cfdisk /dev/hdb
Danach wählt man mit den Cursortasten vertikal die gewünschte Partition,
wie 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 auf dieser Partition ein Physical Volume einrichtet werden.
Die LVM-Kommandos setzen die Dateien /etc/lvmtab
und
/etc/lvmtab.d
voraus, die man gegebenenfalls mit dem Befehl
vgscan -v
erstellen kann. Mit dem Befehl
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.
pvcreate /dev/hdb6
Voraussetzung ist natürlich wieder, dass diese Partition die ID »8e« hat.
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:
vgcreate volg1 /dev/hdb5 /dev/hdb6
Danach befindet sich im Verzeichnis /dev
das neue Unterverzeichnis
volg1
für die betreffende Volume Group.
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 von dem Logical Volume und die
Volume Group angeben. Hier wird der Name logv1
und die Größe
1000 MByte verwendet:
lvcreate -n logv1 -L 1000M volg1
Damit wird die neue Device-Datei /dev/volg1/logv1
erstellt, über die
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.
mkfs -t ext2 /dev/volg1/logv1
Das Dateisystem wird dann über ein Verzeichnis in den Verzeichnisbaum eingehängt.
mkdir /lvm-test
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.
umount /lvm-test
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 MByte 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 MByte 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 MByte 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.
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:
umount /lvm-test
e2fsck -f /dev/volg1/logv1
resize2fs /dev/volg1/logv1
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 MByte 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.
umount /lvm-test
e2fsck -f /dev/volg1/logv1
resize2fs /dev/volg1/logv1 512000
lvreduce -L-800M /dev/volg1/logv1
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 MByte. Zuvor muss es allerdings wieder mit umount
ausgehängt werden:
umount /lvm-test
e2fsadm -L 800M /dev/volg1/logv1
mount -t ext2 /dev/volg1/logv1 /lvm-test
Bei der Verkleinerung verfährt man in gleicher Weise:
umount /lvm-test
e2fsadm -L 500M /dev/volg1/logv1
mount -t ext2 /dev/volg1/logv1 /lvm-test
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.
pvcreate /dev/hdb7
vgextend volg1 /dev/hdb7
Mit vgdisplay
kann man sich dann die neue Größe ansehen:
vgdisplay /dev/volg1
Möchte man eine Volume Group verkleinern, kann man mit dem Befehl
vgreduce -a volg1
alle freien Physical Volumes aus der Volume Group entfernen. Um ein
bestimmtes Physical Volume zu entfernen, muss man dessen genauen Pfad
angeben. Vorher kann man, falls erwünscht, mit dem Befehl
pvdisplay -v
überprüfen, ob das betreffende Physical
Volume Daten enthält oder nicht.
pvdisplay -v /dev/hdb7
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.
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:
umount /lvm-test
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.