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.
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 (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!