Logical Volume Management
ist eine Technik, die es ermöglicht die verfügbare Speicherkapazität im Betrieb zu erhöhen oder zu senken. Es ist eine weitere Schicht zwischen den physischen Festplatten und dem Filesystem. Es ist frei skalierbar und ermöglicht mit einer Anzahl Festplatten Speicherkapazitäten zusammenzubauen, die eine einzelne Festplatte niemals anbieten könnte. Mit einem LVM ist es problemlos möglich ein virtuelles Laufwerk mit mehreren tausend Terrabyte zu bauen.
Zunächst einige Begriffserklärungen und Gedanken wie ein LVM aussehen könnte.
Physical volumes (pv)
Volume groups (vg)
Logical volume (lv)
Mögliches Szenario:
Stellen wir uns vor wir müssten sehr große Datenmengen speichern. Nehmen wir an, dass eine Datei größer als 4 Terrabyte ist. Uns stehen 20 Festplatten mit je 2 Terrabyte zur Verfügung. Zwar haben wir 40 Terrabyte als Gesamtkapazität zur Verfügung, aber man muss kein Professor sein, um zu wissen, dass man Probleme haben wird diese großen Dateien auf die Festplatten zu speichern. Es sei denn, dass man diese Dateien splittet. Nehmen wir aber weiter an, dass wird gezwungen sind diese Dateien in einem Stück zu behalten.
Das ist der große Moment für das LVM, denn es ist möglich alle Festplatten zu einem großen logischen Laufwerk zusammenzufassen und so die Kapazitäten zu addieren.
Die Vorteile:
Die Nachteile:
Rahmenbedingungen für diesen Aufbau:
Es dient eine virtuelle Maschine in VMWare als Hostsystem. Installiert ist Debian 8 (Jessie) in einer Minimalinstallation, also nur die Systemtools. Auf das X-Window-System und sonstigen Schnickschnack habe ich verzichtet. Die VM hat 512 Mb Ram, 2 CPUs mit zwei Kernen und hat 20 Gb Plattenplatz. Desweiteren habe ich 4 x 100 Gb als weitere Festplatten (virtuelle HDDs) angelegt. Diese werden über /dev/sdb bis /dev/sde angesprochen. Ein Internetzugriff findet über NAT statt für evtl. Nachinstallationen von Software.
Die Installation:
Beginnen wir mit der Installation des LVM. Nach dem Hochfahren der VM und Login als Root geben wir folgendes in die Kommandozeile ein, um LVM zu installieren.
apt-get install lvm2
Mit einem kurzen Check prüfen wir, ob die weitere Laufwerke erkannt wurden.
d
mesg | grep sd
oder
lsblk
Nun müssen wir die "Physical Volumes" (pv) erstellen. Das erreicht man mit der Nutzung von pvcreate wie in folgendem Beispiel:
pvcreate /dev/sdb1
pvcreate /dev/sdc1
.... usw...
Mit "pvs" lassen sich die "physical volumes" anzeigen.
Nun müssen wir eine VolumeGroup erstellen. Also alle physical Volumes zu einer Gruppe zusammenfassen und der Gruppe einen Namen geben. Das macht man mit vgcreate wie im Beispiel:
vgcreate myvolumegroup /dev/sdb1 /dev/sdc1 [weitere PVs]
Die VolumeGruppe heißt nun "myvolume" und darin sind die physical Volumes sdb1 und sdb2. Es fehlt uns noch das "Locigal Volume" zu erstellen, welches die VolumeGroups aufnimmt und festlegt wie viel Kapazität es davon verwenden soll.
lvcreate -n disksum myvolumegroup -l 100%free
Zum Verständnis: lvcreate ist das Programm zum Erstellern von logischen Volumes. Die Option -n disksum legt den Namen des "Logical Volumes" fest. myvolumegroup ist die VolumeGroup, die wir in disksum verwenden wollen. Die Option -l 100%free system besagt, dass von dem VolumeGroup "system" 100 Prozent der verfügbaren Kapazität genutzt werden soll. Möchte man eine bestimmte Kapazität und eben nicht die 100 %, dann schreibt man -L 30G statt -l 100%free. Die 30 kann natürlich durch jede andere Zahl ersetzt werden. Mit lvs kann man sich die Logical Volumes anschauen.
Das LVM steht nun und kann zum Einsatz kommen. Jetzt gilt es das neue Logical Volume zu formatieren und als "Festplatte" im System einzubinden. Ich habe dafür ein neues Verzeichnis im /home/ angelegt.
mkfs.ext3 /dev/system/disksum
mount /dev/system/disksum /home/superSpace
Erweitern des Volumes:
Folgendes Szenario stellt sich uns: Wir haben ein LVM laufen und mit dem LVM im Verzeichnis /home/ ein Logical Volume mit 100 Gb. Relativ rasch haben die User die 100 Gb aufgebraucht und es herrscht Platzmangel. Wir müssen nun das LV erweitern. Zunächst ist die neue Festplatte zu partitionieren.
Mit "pvcreate /dev/sdx1" ist das physical Volume zu erstellen. Nun fügen wir das physical Volume der Volume Group hinzu. Mit "vgextend myvolume /dev/sdc1" erweitern wir die Volume Group um die Kapazität der neuen Festplatte. Jetzt müssen wir einen Teil (oder alles?) aus der Volume Group für das Logical Volume nutzen, um es mit weiteren 200 Gb zu erweitern.
Das geht mit "lvextend -L 300G /dev/mapper/myvolume-home
". Will man direkt die gesamtmögliche Kapazität nutzen, dann geht das mit "lvextend
--resizefs
-l +100%FREE /dev/mapper/myvolume-home
"
Nun müssen wir noch das Dateisystem an die neue Größe anpassen damit wir damit auch arbeiten können. Dazu geben wir folgendes ein: "resize2fs -p /dev/mapper/myvolume-home".
Mit "df -h" sollte jetzt die neue Größe angezeigt werden.
Volume verkleinern
Was in die eine Richtung geht, muss auch in die andere Richtung funktionieren. Das Volume verkleinern funktioniert genau so leicht wie das erweitern. Ein schnödes
lvreduce --resizefs -L 5G /dev/mapper/myvolume-home
reicht völlig aus, um das Volume zu verkleinern.