Eine Einführung in LVM-Konzepte, -Terminologie und -Vorgänge

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 vonpvserneut ü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-Lverwenden. Wenn Sie stattdessen die Größe in Bezug auf die Anzahl der Extents angeben möchten, können Sie die Option-lverwenden.

Wir können die ersten drei logischen Volumes mit der Option-Lwie 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 Befehlsvgsauswä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/devverfü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.