LVM unter Debian einrichten: Physical Volumes, Volume Groups und Logical Volumes erstellen

Beim Umbau meines Servers sollte das System von den HDDs auf eine 1-TB-SATA-SSD umziehen. Das große Datenverzeichnis unter /srv bleibt dagegen auf dem HDD-RAID. Genau dafür wollte ich LVM nutzen: Das System bekommt schnelle, getrennte Bereiche und ich kann später noch Platz verschieben, ohne heute schon jede Entwicklung erraten zu müssen.

Musste ich mich aber auch erst einmal hineindenken. Physical Volume, Volume Group und Logical Volume klingen am Anfang nach drei Namen für dasselbe. Sind sie nicht. Das Physical Volume ist der Speicher, die Volume Group fasst ihn zu einem Pool zusammen und aus diesem Pool schneide ich die einzelnen Logical Volumes heraus.

Erst genau hinsehen

Bevor ich irgendetwas anlege, lasse ich mir die Laufwerke mit Modell, Größe und Mountpoints anzeigen:

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL

Bei mir ist die vorgesehene Partition /dev/sdb3. Dieser Name ist nur mein Beispiel. Auf einem anderen Rechner kann dort eine völlig andere Platte liegen. Die folgenden Schritte löschen vorhandene Signaturen beziehungsweise machen bestehende Daten unbrauchbar. Also bitte nicht einfach kopieren, sondern das Gerät vorher zweimal prüfen.

Physical Volume und Volume Group anlegen

Aus der Partition wird zunächst das Physical Volume:

sudo pvcreate /dev/sdb3
sudo pvs
sudo pvdisplay /dev/sdb3

Danach lege ich meine Volume Group vgssd an:

sudo vgcreate vgssd /dev/sdb3
sudo vgs
sudo vgdisplay vgssd

Mit pvs und vgs kontrolliere ich direkt, ob LVM wirklich die erwartete Partition verwendet. Diese kurze Kontrolle kostet kaum Zeit. Sie ist mir lieber als später festzustellen, dass ich am falschen Datenträger gearbeitet habe.

Die Logical Volumes passend zum Server

Nun teile ich den Speicherpool auf. Die Namen orientieren sich an den Verzeichnissen, die später darauf liegen. Das macht die Ausgabe von lvs für mich verständlicher:

sudo lvcreate -L 60G  -n root   vgssd
sudo lvcreate -L 50G  -n var    vgssd
sudo lvcreate -L 150G -n varlib vgssd
sudo lvcreate -L 180G -n opt    vgssd
sudo lvcreate -L 100G -n home   vgssd
sudo lvcreate -L 100G -n www    vgssd
sudo lvcreate -L 100G -n matrix vgssd
sudo lvcreate -L 16G  -n swap   vgssdCode-Sprache: JavaScript (javascript)

Ich verteile bewusst nicht den kompletten freien Platz. Wenn Docker unter /var/lib oder Matrix später stärker wächst als gedacht, kann ich dort nachlegen. Genau dieser Spielraum war einer der Gründe für LVM.

Formatieren, testen und dauerhaft einbinden

Die normalen Daten-Volumes bekommen bei mir ext4, das Swap-Volume natürlich keinen ext4-Aufbau:

sudo mkfs.ext4 /dev/vgssd/root
sudo mkfs.ext4 /dev/vgssd/var
sudo mkfs.ext4 /dev/vgssd/varlib
sudo mkfs.ext4 /dev/vgssd/opt
sudo mkfs.ext4 /dev/vgssd/home
sudo mkfs.ext4 /dev/vgssd/www
sudo mkfs.ext4 /dev/vgssd/matrix
sudo mkswap /dev/vgssd/swapCode-Sprache: JavaScript (javascript)

Bevor die Einträge in /etc/fstab landen, mounte ich wenigstens ein Volume testweise:

sudo mkdir -p /mnt/test
sudo mount /dev/vgssd/www /mnt/test
findmnt /mnt/test
sudo umount /mnt/test

Die UUIDs liefert blkid. Mit ihnen trage ich die Dateisysteme anschließend in /etc/fstab ein. Danach folgt der Test, solange ich noch am Rechner sitze:

sudo blkid
sudo mount -a
findmnt

Wenn mount -a einen Fehler meldet, korrigiere ich erst die fstab und starte nicht einfach neu. Im nächsten Teil geht es darum, wie ich den freien Platz später tatsächlich an ein Volume anhänge – und warum das Verkleinern eine ganz andere Hausnummer ist.

LVM unter Linux – die Serie

  • Teil 1: Was ist LVM und welche Vorteile hat es?
  • Teil 2: LVM einrichten und Logical Volumes erstellen
  • Teil 3: LVM-Volumes vergrößern und verkleinern
  • Teil 4: Alte LVM-Volumes sicher löschen und Speicher freigeben

Wie ist deine Meinung?
Schreib gern einen Kommentar unter dem Artikel oder diskutiere mit anderen im Matrix-Kanal: #dasnetzundich:matrix.org