Logical Volume Manager

Der Logical Volume Manager (LVM) löst ein Problem, dass jeden von uns irgendwann auf irgendeinem Computersystem ereilt: Auf einer Partition geht der Speicherplatz zur Neige. Mit Glück kannst du genügend Platz durch Löschen unbenötigter Daten freiräumen., sonst bleibt dir meistens nichts anderes übrig, als einen weiteren Datenträger anzuschließen oder den Datenträger neu zu partitionieren und das System neu zu installieren. Der LVM fasst mehrere physische Datenträger zu einem logischen zusammen, dessen Größe du später noch ändern kannst.

die hier benutzten USB-SSD Laufwerke
die hier benutzten USB-SSD Laufwerke

Material

Für diesen Post habe ich zwei ältere SSDS (1 ADATA SD700 1TB, 1 Intenso Portable 512MB SSD und 1 SanDisk Milan II 2TB SSD) zusammengesucht und mit einem aktiven USB-Hub an meinen DietPiOS Raspberry Pi angeschlossen. Du kannst diese Anleitung aber mit jeder Kombination von Festplatten, SSD oder auch USB-Sticks nachvollziehen. Du solltest für eigene Versuche keine Laufwerke verwenden, auf denen noch wichtige Daten liegen!

Vorbereitung

Zunächst musst du erstmal die benötigten Programme installieren. Ich arbeite im weiteren mit dem User root, um mir das sudo zu ersparen.

apt install lvm2

Auf den beiden SSDs habe ich alle vorhandenen Partitionen gelöscht, da nur auf unpartitionierten Datenträgern der LVM eingerichtet werden kann.

Die beiden Datenträger sda und sdb ohne Partitionen, vorbereitet für den Logical Volume Manager
Die beiden Datenträger sda und sdb ohne Partitionen, vorbereitet für den Logical Volume Manager

physical volume anlegen

Im nächsten Schritt müssen wir für den Logical Volume Manager die physical volumes (pv) anlegen

pvcreate /dev/sda
pvcreate /dev/sdb

Sollte bei diesen Kommandos folgende Meldung „Cannot use /dev/sda: device is partitioned“ erscheinen, obwohl keine Partition mehr vorhanden ist, Kannst du entweder eine neue DOS-Partition-Table anlegen oder mit

wipefas --all /dev/sda

Alle vorhandenen Signaturen löschen lassen.

Die erzeugten pv kannst du dir mit pvdisplay anzeigen lassen

pvdisplay zeigt die beiden physical volumes an.
pvdisplay zeigt die beiden physical volumes an.

Ein pv kannst du mit dem Befehl pvremove wieder löschen.

Volume Group erzeugen

In einer Volume Group (vg) werden mehrere physical volumes zu einem abstrakten Datenträger gebündelt. Dieser hat dann eine Gesamtkapazität aller verwendeten pv.

Die Volume Group erzeugst du ganz einfach mit dem Kommando

vgcreate raspithek_vg /dev/sda /dev/sdb

Mit dem Kommando vgdisplay kannst du dir die neue VolumeGroup anzeigen lassen.

vgdisplay zeigt dir die VolumeGroup an.

Die Zeilen „Cur PV“ und „Act PV“ zeigen, dass zwei Physical Volumes in der Volume Group präsent sind.

Logical Volume anlegen

Bislang haben wir nur Vorarbeiten erledigt. Jetzt erzeugen wir ein Logical Volume (lv) auf unserer Virtual Group, dass wir dann auch ins System einbinden können.

lvcreate -L 100GB -n lvm1 raspithek_vg

Unser neues lv soll eine Kapazität von 100GB haben und den Namen lvm1 tragen und auf der vg raspithek_vg liegen.

Jetzt haben wir etwas, dass wir benutzen können.

lsblk zeigt das Logical Volume als Partition an.
lsblk zeigt das Logical Volume als Partition an.

Dateisystem anlegen

Du kannst jetzt, wie bei jeder anderen Partition auch, ein System anlegen. Die Bezeichnung der Partition ist etwas anderes, da nicht der Kernel sondern der Logical Volume Manager die Partition verwaltet.

mkfs.ext4 /dev/raspithek_vg/lvm1

Zu guter Letzt bindest du die Partition ein

mount -t ext4  /dev/raspithek_vg/lvm1 /lvm-test/
df zeigt das eingehängte Dateisystem an
df zeigt das eingehängte Dateisystem an

Du siehst, unsere Partition hat eine Größe von 100GB, die wir beim lvcreate angegeben haben.

LV vergrößern

Mittels des Kommandos lvresize kannst du das Logical Volume vergrössern, in diesem Beispiel im 20GB

lvresize -L +20GB  raspithek_vg/lvm1
Nach dem lvresize zeigt lvdisplay eine Gesamtgröße von 120GB des Logical Volumes
Nach dem lvresize zeigt lvdisplay eine Gesamtgröße von 120GB des Logical Volumes

Jetzt hat das LV eine Kapazität von 120GB, aber die Partition hat noch die alte Größe. Das beheben wir mit em Kommando

resize2fs /dev/raspithek_vg/lvm1

Genau das macht raspi-config auch mit dem Menüpunkt Advanced Options/Expand Filesystem.

Die Kontrolle mit df zeigt die vergrösserte Kapazität des Dateisystems
Die Kontrolle mit df zeigt die vergrößerte Kapazität des Dateisystems

Um ein Logical Volume zu verkleinern benutzt du lvresize mit einer negativen Größenangabe. Allerdings geht das maximal nur in Höhe des freien Platzes auf dem lv, sonst gehen Daten verloren.

neues Laufwerk hinzufügen

Auch die SanDisk Milan II 2TB SSD habe ich von allen Daten und Partitions befreit habe, sie wird unter /dev/sdc aufgeführt. Mit dem Kommando

vgextend raspithek_vg /dev/sdc

Habe ich sie der bestehenden Volume Group hinzugefügt. Wodurch sie jetzt eine Gesamtkapazität von 4TB besitzt. Danach habe ich mit den Schritten lvresize und resize2fs von oben die bestehende Partition noch weiter vergrößert und erhalte jetzt eine Gesamtkapazität von 3,2TB

df zeigt eine Gesamtkapazität von 3,2TB
df zeigt eine Gesamtkapazität von 3,2TB

Fazit

Der Logical Volume Manager bringt unglaubliche Flexibilität in die Aufteilung des vorhandenen Plattenplatzes. Du solltest dabei aber bedenken, dass er kein RAID System ersetzt, da ihm die Redundanz fehlt. Ich werde meinen nächsten Rechner mit dem LVM installieren, um Problemen mit volllaufenden Partitionen besser begegnen zu können.

Schreibe einen Kommentar

WordPress Cookie Hinweis von Real Cookie Banner