Der Linux Pro-Tipp: LVM (Logical Volume Manager) mit Loop-Devices

Das Logical-Volume-Management ist der traditionellen und somit statischen Partitionierung vorzuziehen. Dank LVM können wir unsere «Partitionen» beibehalten, diese aber nach belieben vergrössern (verkleinern natürlich auch). Um die nötigen Aktionen und Kommandos zu üben, bieten sich Loop-Devices an. Linux-Experte Renato Testa erläutert uns, wie’s geht.

Autor Renato Testa
Datum 21.03.2019
Lesezeit 4 Minuten

Unter Linux ist es mit dem LVM-Verfahren (Logical Volume Manager) möglich, Speicherplatz über verschiedene Festplatten dynamisch zu verwalten. Um mit LVM zu spielen, brauchen wir Platten. Sie können dies mit mehren USB-Sticks oder auch mit Loopback Devices machen. Im folgenden ist die Testumgebung mit Loopback Devices beschrieben.

Das Logical-Volume-Management ist der traditionellen und somit statischen Partitionierung vorzuziehen. Dank LVM können wir unsere «Partitionen» beibehalten, diese aber nach belieben vergrössern (verkleinern natürlich auch). Um die nötigen Aktionen und Kommandos zu üben, bieten sich Loop-Devices an. Diese sind einfache Dateien von fester Grösse, welche als Block-Devices, also Platten, angeboten werden.

Für 4 Platten benötigen Sie min. 400MiB auf ihrer Platte. Das Beispiel 1:1 benötigt 3700 MiB. Zudem sollten Sie sudo ausführen können; erstellen Sie die Platten nicht in /root.

Intro

LVM hat gegenüber dem statischen Partitionieren erhebliche Vorteile. So können im laufenden Betrieb Platten hinzugefügt und Logical Volumes beliebig vergrössert oder verkleinert werden.

lvm

LVM (Logical Volume Manager)

Arbeitsumgebung anlegen

mkdir $HOME/LVMtest
cd $HOME/LVMtest

Files fester Grösse erstellen

Zu beachten ist, dass die Mindestgrösse wegen der reinen Verwaltungsdaten 100MB betragen muss!

dd if=/dev/zero of=lvmtest0.img bs=1000k count=1000 # 1G
dd if=/dev/zero of=lvmtest1.img bs=1000k count=800 # 800M
dd if=/dev/zero of=lvmtest2.img bs=1000k count=500 # 500M
dd if=/dev/zero of=lvmtest3.img bs=1000k count=1200 # 1.2G

Kernelmodul laden

Prüfen Sie mittels lsmod, ob das loop Modul geladen ist. Falls nicht, laden Sie es mit dem Kommando:

sudo modprobe loop max_loop=64

Damit können Sie 64 Loop-Devices erstellen.

lvm.conf anpassen

Suchen Sie in /etc/lvm/lvm.conf nach Zeilen mit “loop”. Entfernen Sie den Kommentar bei der Zeile:

filter =  \"a|loop|\", \"r/.*/\" "

Verbindung der Loop-Devices zu deinen “Platten” erstellen

for i in 0 1 2 3 ; do
  sudo losetup /dev/loop$i $HOME/LVMtest/lvmtest$i.img
done

LVM-Setup

Loop-Devices partitionieren

Für LVM existiert zwar ein eigener Partitionstype, dieser Schritt ist aber optional. Sie können LVM auch gleich die ganze Platte zur Verfügung stellen. LVM liest die Partitionstabelle nicht!

for i in 0 1 2 3 ; do
  sudo sfdisk /dev/loop$i 2>/dev/null << EOF
  ,,8e,,
EOF
done

Kreiere eine Volume-Group

Als ersten Schritt kreieren wir eine Gruppe für alle Volumes, die wir einbinden wollen:

sudo vgcreate testvg /dev/loop0 /dev/loop1
sudo vgdisplay -v

Beachten Sie: Wir binden für den Moment nur zwei unserer insgesamt vier physical Volumes ein.

Logical-Volume(s) erstellen

Wir erstellen nun 2 logical Volumes (test0 und test1):

sudo lvcreate -L800M -ntest0 testvg
sudo lvcreate -L500M -ntest1 testvg

und legen darauf die Filesysteme (xfs) an:

sudo mkfs.xfs /dev/mapper/testvg-test0
sudo mkfs.xfs /dev/mapper/testvg-test1

Mountpoints erstellen und mounten

Nun legen wir die Mountpoints an und mounten die Filesysteme:

sudo mkdir /mnt/test0 /mnt/test1
sudo mount /dev/mapper/testvg-test0 /mnt/test0
sudo mount /dev/mapper/testvg-test1 /mnt/test1

Gratuliere! Sie haben nun 2 logical Volumes, mit denen Sie beliebig spielen können. Probieren Sie die Kommandos:

  • vgextend (füge loop2 und loop3 zur Volume-Group dazu)
  • lvextend (erweitere deine logischen Volumes)
  • xfs_growfs (vergrössere das/die Filesysteme)

aus, um Ihre Volumes zu erweitern.

Have fun!


Über den Autor

Renato Testa

Renato Testa ist seit 25 Jahren in der IT und im Unix-Umfeld tätig. Mitte der 90er-Jahre führte er die ersten Linux-Kurse  bei Digicomp durch. Neben der Systemprogrammierung ist vor allem Systemadministration von Unix/Linux-Systemen sein Hauptgebiet. Im Rahmen verschiedener OSS-Events bei Digicomp hielt er Referate zu Themen wie HA-Firewalls, OpenSolaris oder Linux-Cluster. Seit 2014 ist sein Hauptthema DevOps in verschiedenen Cloud-Projekten. Renato Testa ist seit 1994 Trainer bei Digicomp und ist im Besitze der SVEB I Zertifizierung.