Grundlagen von LVM: Konzepte, Terminologie und Anwendungen

Einleitung

LVM oder Logical Volume Management ist eine Technologie zur Verwaltung von Speichergeräten, die Benutzern die Möglichkeit gibt, die physische Struktur von Komponentenspeichergeräten für eine flexible Verwaltung zu poolen und abstrahieren. Unter Verwendung des Device Mapper-Linux-Kernel-Frameworks kann die aktuelle Version, LVM2, vorhandene Speichergeräte in Gruppen zusammenfassen und logische Einheiten aus dem kombinierten Speicherplatz zuweisen. Die Hauptvorteile von LVM sind erhöhte Abstraktion, Flexibilität und Kontrolle. Logische Volumes können sinnvolle Namen wie „Datenbanken“ oder „Root-Backup“ haben. Volumes können auch dynamisch vergrößert werden, wenn sich die Platzanforderungen ändern, und auf einem laufenden System zwischen physischen Geräten innerhalb des Pools migriert oder exportiert werden. LVM bietet auch fortgeschrittene Funktionen wie Snapshotting, Striping und Mirroring. In diesem Leitfaden erfahren Sie, wie LVM funktioniert, und üben grundlegende Befehle, um schnell auf einer Bare-Metal-Maschine einsatzbereit zu sein.

LVM-Architektur und Terminologie

Bevor wir uns mit LVM-Verwaltungsbefehlen befassen, ist es wichtig, ein grundlegendes Verständnis dafür zu haben, wie LVM Speichergeräte organisiert und welche Terminologie es verwendet.

LVM-Speicherverwaltungsstrukturen

LVM funktioniert, indem es Abstraktionen über physische Speichergeräte legt. Die grundlegenden Schichten, die LVM verwendet, beginnend mit der primitivsten, sind:

  • Physische Volumes: Das LVM-Dienstprogramm-Präfix für physische Volumes ist „pv…“. Dies sind physische Blockgeräte oder andere disk-ähnliche Geräte (z. B. andere von Device Mapper erstellte Geräte wie RAID-Arrays) und werden von LVM als Rohmaterial für höhere Abstraktionsebenen verwendet. Physische Volumes sind reguläre Speichergeräte. LVM schreibt einen Header auf das Gerät, um es für die Verwaltung zuzuweisen.
  • Volume Groups: Das LVM-Dienstprogramm-Präfix für Volume Groups ist „vg…“. LVM kombiniert physische Volumes zu Speichergruppen, die als Volume Groups bezeichnet werden. Volume Groups abstrahieren die Eigenschaften der zugrunde liegenden Geräte und fungieren als einheitliches logisches Gerät mit der kombinierten Speicherkapazität der Komponentenphysischen Volumes.
  • Logische Volumes: Das LVM-Dienstprogramm-Präfix für logische Volumes ist „lv…“. Eine Volume Group kann in beliebig viele logische Volumes unterteilt werden. Logische Volumes sind funktional äquivalent zu Partitionen auf einer physischen Festplatte, bieten jedoch wesentlich mehr Flexibilität. Logische Volumes sind die Hauptkomponente, mit der Benutzer und Anwendungen interagieren.

LVM kann verwendet werden, um physische Volumes in Volume Groups zu kombinieren, um den auf einem System verfügbaren Speicherplatz zu vereinheitlichen. Anschließend können Administratoren die Volume Group in beliebige logische Volumes unterteilen, die als flexible Partitionen fungieren.

Verständnis von Extents

Jedes Volume innerhalb einer Volume Group ist in kleine, festgelegte Chunks unterteilt, die als Extents bezeichnet werden. Die Größe der Extents wird von der Volume Group festgelegt. Alle Volumes innerhalb der Gruppe entsprechen derselben Extent-Größe. Die Extents auf einem physischen Volume werden als physische Extents bezeichnet, während die Extents eines logischen Volumes als logische Extents bezeichnet werden. Ein logisches Volume ist eine Zuordnung, die LVM zwischen logischen und physischen Extents aufrechterhält. Aufgrund dieser Beziehung stellt die Extent-Größe die kleinste Menge an Speicherplatz dar, die von LVM zugewiesen werden kann. Extents sind ein wesentlicher Bestandteil der Flexibilität und Leistung von LVM. Die logischen Extents, die von LVM als einheitliches Gerät dargestellt werden, müssen nicht kontinuierlichen physischen Extents entsprechen. LVM kann die physischen Extents, die ein logisches Volume bilden, kopieren und neu organisieren, ohne Benutzer zu unterbrechen. Logische Volumes können auch erweitert oder verkleinert werden, indem Extents zum Volume hinzugefügt oder von ihm entfernt werden.

Gängige Anwendungsfälle

Nun, da Sie mit einiger Terminologie und den von LVM verwendeten Strukturen vertraut sind, können Sie einige gängige Möglichkeiten zur Verwendung von LVM erkunden. Sie werden mit einem Verfahren beginnen, bei dem zwei physische Festplatten verwendet werden, um vier logische Volumes zu erstellen.

Markieren der physischen Geräte als physische Volumes

Beginnen Sie damit, das System nach Blockgeräten zu durchsuchen, auf die LVM zugreifen und sie verwalten kann. Dies können Sie mit dem folgenden Befehl tun:

Die Ausgabe gibt alle verfügbaren Blockgeräte zurück, auf die LVM zugreifen 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

In diesem Beispiel ist zu beachten, dass es derzeit zwei Festplatten und 17 Partitionen gibt. Die Partitionen sind größtenteils /dev/ram*-Partitionen, die im System als RAM-Disk für Leistungssteigerungen verwendet werden. Die Festplatten in diesem Beispiel sind /dev/sda mit 200G Speicherplatz und /dev/sdb mit 100G.

Warnung: Stellen Sie sicher, dass die Geräte, die Sie mit LVM verwenden möchten, keine wichtigen Daten bereits darauf haben. Die Verwendung dieser Geräte in LVM überschreibt den aktuellen Inhalt. Wenn Sie wichtige Daten auf Ihrem Server haben, erstellen Sie vor dem Fortfahren Sicherungen.

Nun, da Sie die physischen Geräte kennen, die Sie verwenden möchten, markieren Sie sie als physische Volumes in LVM mit dem Befehl pvcreate:

sudo pvcreate /dev/sda /dev/sdb

Dies schreibt einen LVM-Header auf die Geräte, um anzuzeigen, dass sie bereit sind, einer Volume Group hinzugefügt zu werden.

Überprüfen Sie, ob LVM die physischen Volumes registriert hat, indem Sie pvs ausführen:

Die Ausgabe zeigt, dass beide Geräte unter der Spalte „PV“ (physische Volumes) vorhanden sind.

Hinzufügen der physischen Volumes zu einer Volume Group

Nun, da Sie physische Volumes aus Ihren Geräten erstellt haben, können Sie eine Volume Group erstellen. In der Regel haben Sie nur eine Volume Group pro System, um maximale Flexibilität bei der Zuweisung zu gewährleisten. Das folgende Beispiel für eine Volume Group trägt den Namen „LVMVolGroup“. Sie können Ihrer Volume Group jeden gewünschten Namen geben. Um die Volume Group zu erstellen und beide physischen Volumes hinzuzufügen, führen Sie Folgendes aus:

sudo vgcreate LVMVolGroup /dev/sda /dev/sdb

Die Ausgabe zeigt, dass Ihre physischen Volumes nun mit der neuen Volume Group verknüpft sind.

Listet eine kurze Zusammenfassung der Volume Group mit vgs auf:

Die Volume Group hat derzeit zwei physische Volumes, keine logischen Volumes und die kombinierte Kapazität der zugrunde liegenden Geräte.

Erstellen von logischen Volumes aus dem Volume Group-Pool

Nun, da Sie eine Volume Group zur Verfügung haben, können Sie diese als Pool verwenden, um logische Volumes zuzuweisen. Anders als bei herkömmlicher Partitionierung müssen Sie bei der Arbeit mit logischen Volumes nicht die Aufteilung des Volumes kennen, da LVM dies für Sie abbildet und verwaltet. Sie müssen nur die Größe des Volumes und einen Namen angeben. Im folgenden Beispiel erstellen Sie vier separate logische Volumes aus Ihrer Volume Group:

  • 10G „projects“-Volume
  • 5G „www“-Volume für Webinhalte
  • 20G „db“-Volume für eine Datenbank
  • „workspace“-Volume, das den verbleibenden Speicherplatz füllt

Um logische Volumes zu erstellen, verwenden Sie den Befehl lvcreate. Sie müssen die Volume Group angeben, aus der Sie ziehen möchten, 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. Erstellen Sie die ersten drei logischen Volumes mit der Option -L:

sudo lvcreate -L 10G -n projects LVMVolGroup
sudo lvcreate -L 5G -n www LVMVolGroup
sudo lvcreate -L 20G -n db LVMVolGroup

Die Ausgabe zeigt, dass die logischen Volumes erstellt wurden.

Sie können die logischen Volumes und ihre Beziehung zur Volume Group anzeigen, indem Sie eine benutzerdefinierte Ausgabe des vgs-Befehls auswählen:

Die Ausgabe zeigt, wie viel Platz Ihren logischen Volumes zugewiesen wurde.

Nun können Sie den restlichen Speicherplatz in der Volume Group dem „workspace“-Volume mithilfe der -l-Option zuweisen, die in Extents arbeitet. Sie können auch eine Prozentzahl und eine Einheit angeben, um Ihre Absichten besser zu kommunizieren. In diesem Beispiel weisen Sie den verbleibenden freien Speicherplatz zu, indem Sie 100%FREE übergeben:

sudo lvcreate -l 100%FREE -n workspace LVMVolGroup

Die Ausgabe zeigt, dass das „workspace“-Volume erstellt wurde, und die Volume Group „LVMVolGroup“ ist vollständig zugeordnet.

Formatieren und Einhängen der logischen Volumes

Nun, da Sie logische Volumes haben, können Sie sie wie normale Blockgeräte verwenden. Die logischen Geräte sind im /dev-Verzeichnis wie andere Speichergeräte verfügbar. Sie können sie an zwei Stellen abrufen:

  • /dev/volume_group_name/logical_volume_name
  • /dev/mapper/volume_group_name-logical_volume_name

Um Ihre vier logischen Volumes mit dem Ext4-Dateisystem zu formatieren, führen Sie die folgenden Befehle aus:

sudo mkfs.ext4 /dev/LVMVolGroup/projects
sudo mkfs.ext4 /dev/LVMVolGroup/www
sudo mkfs.ext4 /dev/LVMVolGroup/db
sudo mkfs.ext4 /dev/LVMVolGroup/workspace

Alternativ können Sie folgendes ausführen:

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 dem Formatieren erstellen Sie Einhängepunkte:

sudo mkdir -p /mnt/{projects,www,db,workspace

Dann hängen Sie die logischen Volumes am entsprechenden Speicherort ein:

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 Einhängungen persistent zu machen, fügen Sie sie in die Datei /etc/fstab mit Ihrem bevorzugten Texteditor hinzu. Das folgende Beispiel verwendet nano:

Fügen Sie Ihre Einträge in die Datei ein und speichern Sie sie. Das Betriebssystem sollte die LVM-Logikvolumes jetzt automatisch beim Booten einhängen.

Fazit

Jetzt haben Sie ein Verständnis für die verschiedenen Komponenten, die LVM verwaltet, um ein flexibles Speichersystem zu erstellen, und wie Sie Speichergeräte in einer LVM-Konfiguration einsatzbereit machen können. Um mehr über die Arbeit mit LVM zu erfahren, werfen Sie einen Blick in unseren Leitfaden zur Verwendung von LVM mit Ubuntu 18.04.

Kostenlosen Account erstellen

Registrieren Sie sich jetzt und erhalten Sie Zugang zu unseren Cloud Produkten.

Das könnte Sie auch interessieren: