LVM: Das leistungsstarke Tool für die Speicherverwaltung auf Linux-Systemen

Was ist LVM (head image)

LVM steht für Logical Volume Manager und ist ein Werkzeug zur Verwaltung von Partitionen. Es fügt eine Abstraktionsebene zwischen Festplatten, Partitionen und Dateisystemen hinzu und ermöglicht es außerdem, dass sich Partitionen über mehrere Laufwerke erstrecken können.

Neben den traditionellen Partitionen führt LVM eine neue logische Schicht zwischen der Partitionstabelle und dem Dateisystem ein. Diese neue Schicht ermöglicht einfache nachträgliche Änderungen an den Partitionen.

Die LVM-Architektur

Physische Datenträger

Physische Datenträger in LVM stellen ein physisches Speichermedium dar, das mit dem Rechner verbunden ist. Bevor du Festplatten im LVM verwenden kannst, musst du sie zuerst als physische Volumes im LVM registrieren.

Volume-Gruppen

Eine Volume-Gruppe fasst ein oder mehrere physische Volumes zusammen. Volume Groups sind ein zentraler Bestandteil der LVM-Architektur, da sie die physischen Volumes mit den logischen Volumes verbinden.

Logische Datenträger

Logische Datenträger sind Teil einer Datenträgergruppe und können mit normalen Partitionen verglichen werden. Sie enthalten das Dateisystem und sind über Volume Groups mit den physischen Volumes verbunden.

Aufgrund dieser Architektur ist es möglich, dass ein logisches Volume größer ist als die physischen Festplatten. In Kombination mit der Möglichkeit, physische Volumes nachträglich hinzuzufügen und zu entfernen, lässt sich ein Dateisystem bei Bedarf erweitern, indem einfach weitere Festplatten hinzugefügt und die LVM-Konfiguration aktualisiert wird.

Sicherheitshinweis

Wenn du eine Volume Group hast, die sich über mehrere Laufwerke erstreckt, ist es sehr empfehlenswert, die Laufwerke in einem RAID-Verbund (mindestens RAID-Level 1) zu verbinden. Andernfalls sind bei einem Ausfall eines Laufwerks alle Daten in dieser Volume-Gruppe gefährdet.

Erste Schritte mit LVM

LVM installieren

Falls noch nicht geschehen, beginne zunäsht mit der Installation von LVM:

sudo apt-get install lvm2

Um LVM einzurichten, benötigen wir zunächst eine Übersicht über alle an den Rechner angeschlossenen Laufwerke. Diese kannst du mit lsblk auflisten:

sudo lsblk

Der Output sieht in etwa so aus:

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT 
sda 8:0 400G disk  
| -sda1 8:1 399.9G part 
| -sda14 8:14 3M part  
`-sda15 8:15 124M part /boot/efi 

Wie du in der Spalte “ Type “ sehen kannst, haben wir eine Festplatte, die an den Server angeschlossen ist, mit einer Größe von 400 GB und ein paar Partitionen. Die Partition, auf die wir uns konzentrieren wollen, ist die Partition sda1 mit einer Größe von 399,9 GB.

Initialisieren eines physischen Datenträgers

WICHTIG: Bevor du fortfährst, solltest du ein Backup aller wichtigen Daten machen! Änderungen an der Partitionstabelle bringen immer das Risiko eines kompletten Datenverlustes mit sich!

Um Partitionen im LVM verwenden zu können, müssen wir sie zunächst beim LVM „registrieren“, indem wir physische Volumes erstellen. Dies kann mit dem Befehl pvcreate gemacht werden:

pvcreate PARTITION

In unserem Fall ist PARTITION /dev/sda1:

pvcreate /dev/sda1

Mit diesem Befehl wird die Partition sda1 als physisches Volume bei LVM registriert.

Der folgende Befehl kann verwendet werden, um alle derzeit registrierten physischen Volumes anzuzeigen:

sudo pvs

Erstellen einer Volume Group

Als nächstes benötigen wir eine Volume Group. Volume Groups können viele physische Volumes enthalten, aber im Moment haben wir nur eines. Erstellen wir also eine Volume-Gruppe namens „group1“, welches die das physische Volume „/dev/sda1“ enthält:

lgcreate group1 /dev/sda1

Wenn du mehr physische Volumes hast, kannst du sie einfach zu dem Befehl hinzufügen, wie folgt:

lgcreate group1 /dev/sda1 /dev/sdb1 /dev/sdc1

Auch hier können wir den folgenden Befehl verwenden, um alle Volume Groups anzuzeigen:

sudo pvs

Logische Volumes einrichten

Nachdem mindestens eine Volume-Gruppe erstellt wurde, können wir nun mit dem Befehl lvcreate logische Volumes erstellen:

lvcreate -L 40G -n vol1 group1

In dem obigen Befehl gibt „-L“ die Größe (40 GB) und „-n“ den Namen („vol1“) an. Das neue logische Volume wird der Volume-Gruppe „group1“ hinzugefügt.

Tipp: Anstelle von „-L 40G“ kannst du auch „-l 100%FREE“ verwenden, um den gesamten verfügbaren Speicherplatz in der Volume-Gruppe zu nutzen.

Nach der Erstellung können wir mit dem folgenden Befehl einen Blick auf alle logischen Volumes werfen:

sudo lvs

Jetzt kannst du dein logisches Volume in der Liste der Block-Devices finden:

sudo lsblk

Gespeichert ist das ganze hier:

/dev/VOLUME_GROUP/VOLUME_NAME

In unserem Fall wäre der exakte Pfad:

/dev/group1/vol1

Hinzufügen eines Dateisystems

Um Dateien auf diesem neuen logischen Volume zu speichern, müssen wir zunächst ein Dateisystem hinzufügen. Dies können wir tun, indem wir mit dem folgenden Befehl ein neues Dateisystem erstellen:

mkfs.ext4 /dev/group1/vol1

Dadurch wird ein neues ext4-Dateisystem eingerichtet und wir können nun Daten auf dieser Partition speichern.

Erweitern einer bestehenden LVM-Partition

Um eine bestehende Partition zu erweitern, musst du zuerst sicherstellen, dass der Speicherplatz, den du hinzufügen möchtest, in deiner Volume Group verfügbar ist. Wenn du ein bereits angeschlossenes Laufwerk erweitert hast (zum Beispiel wegen einer Speichererweiterung auf einem VPS), folge dieser Anleitung. Wenn du ein neues Speichermedium an den Rechner angeschlossen hast, musst du zuerst ein physisches Volume erstellen:

pvcreate PARTITION

Zum Beispiel:

pvcreate /dev/sdb1

Als nächstes fügst Du das neue physische Volume zu deiner bestehenden Volume-Gruppe hinzu:

vgextend GROUP_NAME PHYSICAL_VOLUME

In diesem Fall:

vgextend group1 /dev/sdb1

Sobald der neue Speicherplatz in der Volume-Gruppe verfügbar ist, können wir die Größe der logischen Volumes erhöhen. Hierfür gibt es mehrere Möglichkeiten:
Entweder:

lvextend -L +10G group1/vol1 # Hinzufügen von 10 G zum Volume "vol1" in der Gruppe "group1"

oder:

lvextend -l 100%FREE group1/vol1 # Erweitern Sie das Volume "vol1" in der Gruppe "group1", um den gesamten verfügbaren Platz in der Volume-Gruppe zu nutzen

Im letzten Schritt muss die Größe des Dateisystems angepasst werden, um den gesamten neu verfügbaren Speicherplatz zu nutzen:

resize2fs /dev/VOLUME_GROUP/VOLUME_NAME

In unserem Fall:

resize2fs /dev/group1/vol1

Hinweis: Abhängig von deinem Dateisystem musst du dein Dateisystem eventuell erst unmounten, bevor du es erweitern kannst. Ext4 kann im gemounteten Zustand erweitert werden, aber überprüfe das nochmal für dein Dateisystem.

Vorhandene LVM-Partition verkleinern

Wenn du deine LVM-Partition verkleinerst, ist es wichtig, dies in der richtigen Reihenfolge zu tun – das Dateisystem muss vor dem logischen Volume verkleinert werden, da du sonst Daten verlierst oder sogar das gesamte Dateisystem zerstören könntest. Ext4 muss während des Verkleinerns unmounted werden. Dies können wir mit diesem Befehl tun:

umount /dev/group1/vol1

Anschließend kann die Größe des Dateisystems geändert werden:

resize2fs /dev/group1/vol1 29G

Hinweis: Wenn Du Deine Partition auf z.B. 30 G verkleinern möchtest, ist es empfehlenswert, das Dateisystem vor dem Verkleinerungsprozess zu verkleinern und dann wieder zu vergrößern, sobald die Partitionen aktualisiert wurden.

Möglicherweise wirst du aufgefordert, dein Dateisystem zuerst zu überprüfen, bevor du es verkleinerst; in diesem Fall führe den angezeigten Befehl aus und dann erneut den Befehl resize.

Nachdem das Dateisystem verkleinert wurde, können wir mit dem Verkleinern des logischen Volumes fortfahren:

lvreduce -L 30G /dev/group1/vol1

Dadurch wird die Größe des logischen Volumes „vol1“ in der Volume-Gruppe „group1“ auf eine Gesamtgröße von 30 GB reduziert.

Als letzten Schritt erweitern wir das Dateisystem erneut, um den gesamten verfügbaren Platz im logischen Volume zu nutzen:

resize2fs /dev/group1/vol1

Auch hier kannst du den Befehl lsblk verwenden, um die Änderungen zu überprüfen.

Entfernen eines physischen Volumes aus einer Volume-Gruppe

Wenn Du ein physisches Volume aus Deiner LVM-Konfiguration entfernen möchtest, musst Du zunächst sicherstellen, dass keine Daten auf dem zu entfernenden physischen Volume gespeichert sind. Nehmen wir an, wir wollen das physische Volume „/dev/sdb1“ entfernen, das Teil der Volume-Gruppe „group1“ ist:

pvmove /dev/sdb1

Hinweis: Dieser Befehl verschiebt alle Daten vom Volume /dev/sdb1 auf andere verfügbare Volumes in der Gruppe. Stelle also sicher, dass genug Speicherplatz auf anderen Volumes verfügbar ist.

Anschließend kann das physische Volume aus der Volume-Gruppe entfernt werden:

vgreduce group1 /dev/sdb1

Nun kannst du den physischen Datenträger zu einer anderen Datenträgergruppe hinzufügen oder ihn vollständig aus LVM entfernen:

pvremove /dev/sdb1
Nach oben scrollen