Einführung
LVM oder Logical Volume Management ist eine Technologie zur Verwaltung von Speichergeräten, mit der Benutzer das physische Layout von Komponentenspeichergeräten für eine einfachere und flexiblere Verwaltung bündeln und abstrahieren können. Unter Verwendung des Linux-Kernel-Frameworks für Device Mapper kann die aktuelle Iteration LVM2 verwendet werden, um vorhandene Speichergeräte in Gruppen zusammenzufassen und logische Einheiten aus dem kombinierten Speicherplatz nach Bedarf zuzuweisen.
Die Hauptvorteile von LVM sind eine verbesserte Abstraktion, Flexibilität und Kontrolle. Logische Volumes können aussagekräftige Namen wie "Datenbanken" oder "Root-Backup" haben. Die Größe von Volumes kann dynamisch geändert werden, wenn sich der Speicherplatzbedarf ändert, und zwischen physischen Geräten innerhalb des Pools auf einem laufenden System migriert oder einfach exportiert werden. LVM bietet auch erweiterte Funktionen wie Snapshot, Striping und Mirroring.
In diesem Handbuch werden wir kurz auf die Funktionsweise von LVM eingehen und die grundlegenden Befehle demonstrieren, die für eine schnelle Inbetriebnahme erforderlich sind.
LVM-Architektur und -Terminologie
Bevor wir uns mit den eigentlichen LVM-Verwaltungsbefehlen befassen, ist es wichtig, ein grundlegendes Verständnis darüber zu haben, wie LVM Speichergeräte organisiert und welche Terminologie verwendet wird.
LVM-Speicherverwaltungsstrukturen
LVM funktioniert, indem Abstraktionen über physische Speichergeräte gelegt werden. Die Grundebenen, die LVM verwendet, beginnen mit den primitivsten.
-
Physical Volumes:
-
LVM utility prefix:
pv...
-
Description: Physische Blockgeräte oder andere festplattenähnliche Geräte (z. B. andere vom Geräte-Mapper erstellte Geräte wie RAID-Arrays) werden von LVM als Rohmaterial für höhere Abstraktionsebenen verwendet. Physische Volumes sind normale Speichergeräte. LVM schreibt einen Header in das Gerät, um es für die Verwaltung zuzuweisen.
-
-
Volume Groups:
-
LVM utility prefix:
vg...
-
Description: LVM kombiniert physische Volumes zu Speicherpools, die als Volume-Gruppen bezeichnet werden. Datenträgergruppen abstrahieren die Merkmale der zugrunde liegenden Geräte und fungieren als einheitliches logisches Gerät mit kombinierter Speicherkapazität der physischen Datenträger der Komponente.
-
-
Logical Volumes:
-
LVM utility prefix:
lv...
(generische LVM-Dienstprogramme können mitlvm...
beginnen) -
Description: Eine Datenträgergruppe kann in eine beliebige Anzahl logischer Datenträger aufgeteilt werden. Logische Volumes sind funktional mit Partitionen auf einer physischen Festplatte vergleichbar, bieten jedoch eine viel größere Flexibilität. Logische Volumes sind die Hauptkomponente, mit der Benutzer und Anwendungen interagieren.
-
Zusammenfassend kann LVM verwendet werden, um physische Volumes in Volume-Gruppen zu kombinieren, um den auf einem System verfügbaren Speicherplatz zu vereinheitlichen. Anschließend können Administratoren die Datenträgergruppe in beliebige logische Datenträger unterteilen, die als flexible Partitionen fungieren.
Was sind Ausmaße?
Jedes Volume innerhalb einer Volume-Gruppe ist in kleine Blöcke fester Größe unterteilt, die alsextents bezeichnet werden. Die Größe der Extents wird von der Volume-Gruppe bestimmt (alle Volumes innerhalb der Gruppe entsprechen derselben Extent-Größe).
Die Extents auf einem physischen Volume werden alsphysical extents bezeichnet, während die Extents eines logischen Volumes alslogical extents bezeichnet werden. Ein logischer Datenträger ist einfach eine Zuordnung, die LVM zwischen logischen und physischen Bereichen verwaltet. Aufgrund dieser Beziehung stellt die Extent-Größe die kleinste Menge an Speicherplatz dar, die von LVM zugewiesen werden kann.
Die Ausmaße stecken hinter der Flexibilität und Leistungsfähigkeit von LVM. Die logischen Speicherbereiche, die von LVM als einheitliches Gerät dargestellt werden, müssen nicht fortlaufenden physischen Speicherbereichen zugeordnet werden. LVM kann die physischen Bereiche, aus denen ein logisches Volume besteht, kopieren und neu organisieren, ohne die Benutzer zu unterbrechen. Logische Volumes können auch einfach erweitert oder verkleinert werden, indem Extents zum Volume hinzugefügt oder daraus entfernt werden.
Der einfache Anwendungsfall
Nachdem Sie mit einigen Begriffen und Strukturen vertraut sind, die in LVM verwendet werden, können Sie einige gebräuchliche Methoden zur Verwendung von LVM untersuchen. Wir beginnen mit einer grundlegenden Prozedur, bei der zwei physische Datenträger verwendet werden, um vier logische Datenträger zu bilden.
Markieren Sie die physischen Geräte als physische Volumes
Unser erster Schritt ist das Durchsuchen des Systems nach Blockgeräten, die LVM sehen und verwalten kann. Sie können dies tun, indem Sie Folgendes eingeben:
sudo lvmdiskscan
Die Ausgabe zeigt alle verfügbaren Blockgeräte an, mit denen LVM interagieren kann:
Output /dev/ram0 [ 64.00 MiB]
/dev/sda [ 200.00 GiB]
/dev/ram1 [ 64.00 MiB]
. . .
/dev/ram15 [ 64.00 MiB]
/dev/sdb [ 100.00 GiB]
2 disks
17 partitions
0 LVM physical volume whole disks
0 LVM physical volumes
An der obigen Ausgabe können wir erkennen, dass derzeit zwei Festplatten und 17 Partitionen vorhanden sind. Die Partitionen sind meistens/dev/ram*
Partitionen, die das System alsRam disk für Leistungsverbesserungen verwenden. Die Festplatten in diesem Beispiel sind/dev/sda
mit 200 G Speicherplatz und/dev/sdb
mit 100 G Speicherplatz.
[.warning] #Warning: Stellen Sie sicher, dass Sie überprüfen, ob auf den Geräten, die Sie mit LVM verwenden möchten, bereits wichtige Daten geschrieben wurden. Wenn Sie diese Geräte in LVM verwenden, werden die aktuellen Inhalte überschrieben. Wenn Sie bereits wichtige Daten auf Ihrem Server haben, erstellen Sie Sicherungen, bevor Sie fortfahren.
#
Nachdem wir die physischen Geräte kennen, die wir verwenden möchten, können wir sie mit dem Befehlpvcreate
als physische Volumes in LVM markieren:
sudo pvcreate /dev/sda /dev/sdb
Output Physical volume "/dev/sda" successfully created
Physical volume "/dev/sdb" successfully created
Dadurch wird ein LVM-Header auf die Geräte geschrieben, der angibt, dass sie einer Datenträgergruppe hinzugefügt werden können.
Sie können schnell überprüfen, ob LVM die physischen Volumes registriert hat, indem Sie Folgendes eingeben:
sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda lvm2 --- 200.00g 200.00g
/dev/sdb lvm2 --- 100.00g 100.00g
Wie Sie sehen können, befinden sich beide Geräte in der SpaltePV
, die für physisches Volumen steht.
Fügen Sie die physischen Datenträger einer Datenträgergruppe hinzu
Nachdem wir physische Volumes von unseren Geräten erstellt haben, können wir eine Volume-Gruppe erstellen. Wir müssen einen Namen für die Volume-Gruppe auswählen, den wir generisch beibehalten. Meistens haben Sie nur eine Volume-Gruppe pro System, um maximale Flexibilität bei der Zuordnung zu gewährleisten. Der Einfachheit halber werden wir unsere VolumengruppeLVMVolGroup
nennen.
Geben Sie Folgendes ein, um die Datenträgergruppe zu erstellen und beide physischen Datenträger mit einem einzigen Befehl hinzuzufügen:
sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
Wenn wir die Ausgabe vonpvs
erneut überprüfen, können wir sehen, dass unsere physischen Volumes jetzt einer neuen Volume-Gruppe zugeordnet sind:
sudo pvs
Output PV VG Fmt Attr PSize PFree
/dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g
/dev/sdb LVMVolGroup lvm2 a-- 100.00g 100.00g
Wir können eine kurze Zusammenfassung der Volume-Gruppe selbst sehen, indem wir Folgendes eingeben:
sudo vgs
Output VG #PV #LV #SN Attr VSize VFree
LVMVolGroup 2 0 0 wz--n- 299.99g 299.99g
Wie Sie sehen, verfügt unsere Datenträgergruppe derzeit über zwei physische Datenträger, nämlich null logische Datenträger, und die Gesamtkapazität der zugrunde liegenden Geräte.
Erstellen logischer Datenträger aus dem Datenträgergruppenpool
Nachdem eine Datenträgergruppe verfügbar ist, können wir sie als Pool verwenden, aus dem wir logische Datenträger zuordnen können. Im Gegensatz zur herkömmlichen Partitionierung müssen Sie beim Arbeiten mit logischen Volumes das Layout des Volumes nicht kennen, da LVM dies für Sie abbildet und handhabt. Sie müssen nur die Größe des Volumes und einen Namen angeben.
Wir erstellen vier separate logische Volumes aus unserer Volume-Gruppe:
-
10G "Projekte" Volumen
-
5G "www" -Volumen für Webinhalte
-
20 GB "db" -Volume für eine Datenbank
-
"Arbeitsbereich" -Volumen, das den verbleibenden Platz ausfüllt
Um logische Volumes zu erstellen, verwenden wir den Befehllvcreate
. Wir müssen die Volume-Gruppe übergeben, aus der gezogen werden soll, und können das logische Volume mit der Option-n
benennen. Um die Größe direkt anzugeben, können Sie die Option-L
verwenden. Wenn Sie stattdessen die Größe in Bezug auf die Anzahl der Extents angeben möchten, können Sie die Option-l
verwenden.
Wir können die ersten drei logischen Volumes mit der Option-L
wie folgt erstellen:
sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup
Output Logical volume "projects" created.
Logical volume "www" created.
Logical volume "db" created.
Sie können die logischen Volumes und ihre Beziehung zur Volume-Gruppe anzeigen, indem Sie die benutzerdefinierte Ausgabe des Befehlsvgs
auswählen:
sudo vgs -o +lv_size,lv_name
Output VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 10.00g projects
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 5.00g www
LVMVolGroup 2 3 0 wz--n- 299.99g 264.99g 20.00g db
Wir haben die letzten beiden Ausgabespalten hinzugefügt, damit wir den Speicherplatz sehen können, der unseren logischen Datenträgern zugewiesen ist.
Jetzt können wir den Rest des Speicherplatzes in der Datenträgergruppe dem Datenträger "Arbeitsbereich" zuweisen, indem wir das Flag-l
verwenden, das in Extents funktioniert. Wir können auch einen Prozentsatz und eine Einheit angeben, um unsere Absichten besser zu kommunizieren. In unserem Fall möchten wir den verbleibenden freien Speicherplatz zuweisen, damit wir100%FREE
übergeben können:
sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Output Logical volume "workspace" created.
Wenn wir die Volumengruppeninformationen erneut überprüfen, können wir feststellen, dass wir den gesamten verfügbaren Speicherplatz verbraucht haben:
sudo vgs -o +lv_size,lv_name
Output VG #PV #LV #SN Attr VSize VFree LSize LV
LVMVolGroup 2 4 0 wz--n- 299.99g 0 10.00g projects
LVMVolGroup 2 4 0 wz--n- 299.99g 0 5.00g www
LVMVolGroup 2 4 0 wz--n- 299.99g 0 20.00g db
LVMVolGroup 2 4 0 wz--n- 299.99g 0 264.99g workspace
Wie Sie sehen, wurde das Volume "workspace" erstellt und die Volume-Gruppe "LVMVolGroup" ist vollständig zugeordnet.
Formatieren und Bereitstellen der logischen Datenträger
Nachdem wir nun über logische Volumes verfügen, können wir diese als normale Blockgeräte verwenden.
Die logischen Geräte sind wie andere Speichergeräte im Verzeichnis/dev
verfügbar. Sie können an zwei Stellen darauf zugreifen:
-
/dev/volume_group_name/logical_volume_name
-
/dev/mapper/volume_group_name-logical_volume_name
Um unsere vier logischen Volumes mit dem Ext4-Dateisystem zu formatieren, können wir Folgendes eingeben:
sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace
Oder wir können schreiben:
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace
Nach der Formatierung können wir Einhängepunkte erstellen:
sudo mkdir -p /mnt/{projects,www,db,workspace}
Wir können dann die logischen Volumes an den entsprechenden Speicherort mounten:
sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace
Um die Mounts dauerhaft zu machen, fügen Sie sie wie bei normalen Blockgeräten zu/etc/fstab
hinzu:
sudo nano /etc/fstab
/etc/fstab
. . .
/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0
Das Betriebssystem sollte nun die logischen LVM-Volumes beim Booten automatisch bereitstellen.
Fazit
Hoffentlich haben Sie zu diesem Zeitpunkt ein ziemlich gutes Verständnis für die verschiedenen Komponenten, mit denen LVM ein flexibles Speichersystem erstellt. Sie sollten auch ein grundlegendes Verständnis dafür haben, wie Sie Speichergeräte in einem LVM-Setup zum Laufen bringen.
In diesem Handbuch wurde nur kurz auf die Leistung und Kontrolle eingegangen, die LVM Administratoren von Linux-Systemen bietet. Weitere Informationen zur Arbeit mit LVM finden Sie in unserenguide to using LVM with Ubuntu 16.04.