GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwaltung logischer Volumes unter Linux erklärt

Unter Linux kann es ziemlich schwierig sein, Speicher und Dateisysteme zu verwalten und es sind oft viele verschiedene Befehle erforderlich, um Daten zu verschieben.

Herkömmlicher Speicher besteht normalerweise aus drei verschiedenen Schichten:der physischen Festplatte (egal ob HDD oder SSD), die logischen Partitionen darauf erstellt und das Dateisystem auf der Partition formatiert.

Diese drei Ebenen sind jedoch normalerweise eng miteinander verbunden:Es kann ziemlich schwierig sein, vorhandene Partitionen zu verkleinern, um eine neue zu erstellen.

Ebenso ist es ziemlich schwierig, ein Dateisystem zu erweitern, wenn Sie Ihrem System eine neue Festplatte hinzufügen:Sie müssten Daten von einer Festplatte auf eine andere verschieben, was manchmal zu Datenverlust führen würde .

Glücklicherweise gibt es ein Tool oder eine Abstraktion, die Sie unter Linux verwenden können, um Speicher zu verwalten:LVM .

LVM , kurz für Logical Volume Management , enthält eine Reihe von Tools, mit denen Sie vorhandene Volumes erweitern und verkleinern sowie vorhandene Festplatten ersetzen können, während das System läuft.

In diesem Tutorial lernen wir etwas über LVM und wie Sie diese einfach auf Ihrem System implementieren können.

LVM-Schichten erklärt

Bevor Sie beginnen, ist es wichtig, dass Sie sich ein umfassendes Bild davon machen können, wie LVM auf Ihrem System konzipiert sind .

Wenn Sie sich zuvor mit normalen Speichergeräten beschäftigt haben, kennen Sie bereits die Beziehung zwischen Festplatten und Dateisystemen.

Unter Linux haben Sie physische Laufwerke die beim ersten Einfügen automatisch von udev erkannt und verwaltet wird.

Auf diesen Laufwerken können Sie Partitionen erstellen Verwenden Sie eines der gängigen verfügbaren Dienstprogramme (fdisk, parted oder gparted).

Schließlich Sie Dateisysteme formatieren auf diesen Partitionen, um Ihre Dateien zu speichern.

Bei Verwendung von LVM ist das Speicherdesign etwas anders.

Zwischen Partitionen und Dateisystemen gibt es drei zusätzliche Schichten:physische Datenträger, Datenträgergruppen und logische Datenträger.

Physisches Volumen

Bei der Verwendung von LVM sollen physische Volumes Partitionen darstellen, die bereits auf Ihren Festplatten vorhanden sind.

Wenn Systemadministratoren von „physischen Volumes“ sprechen, meinen sie oft das tatsächliche physische Gerät, auf dem Daten auf unserem System gespeichert sind.

Physische Volumes werden genauso benannt wie physische Partitionen :/dev/sda1 für die erste Partition Ihrer ersten Festplatte, /dev/sdb1 für die erste Partition Ihres zweiten Laufwerks und so weiter.

Volumengruppe

Direkt über den physischen Volumes kann die Volumengruppe als mehrere physische Volumes betrachtet werden, die zu einem einzigen Volume zusammengefasst sind.

Metaphorisch können Volumengruppen als Speicher-Buckets angesehen werden :Sie sind ein Pool verschiedener physischer Volumes, die verwendet werden können, um vorhandene logische Volumes zu erweitern oder neue zu erstellen.

Datenträgergruppen haben keine Namenskonvention, es ist jedoch allgemein anerkannt, dass ihnen das Präfix „vg“ vorangestellt wird („vg-storage “, „VG-Laufwerke ” zum Beispiel)

Logische Volumes

Schließlich sind logische Volumes als direkte Verbindungen zwischen den Volume-Gruppen und den auf Ihren Geräten formatierten Dateisystemen gedacht.

Sie haben ein eins-zu-eins Beziehung zu Dateisystemen und sie stellen im Wesentlichen eine Partition Ihrer Volume-Gruppe dar.

Auch wenn logische Volumes auf die gleiche Weise wie Einhängepunkte benannt werden, handelt es sich um zwei unterschiedliche Konzepte, und das logische Volume ist eine ganz andere Entität als Ihr Dateisystem.

Hinweis :Das Erweitern Ihres logischen Volumes bedeutet nicht, dass Sie beispielsweise automatisch Ihr Dateisystem erweitern.

Vorteile von LVM gegenüber der Standard-Festplattenverwaltung

Logical Volume Management wurde in erster Linie entwickelt, um die meisten Mängel zu beheben, die mit der regulären Datenträgerverwaltung unter Linux verbunden sind.

Ein großer Vorteil von LVM ist die Tatsache, dass Sie Ihren Speicherplatz neu zusammenstellen können, während Ihr System läuft.

Speicher live ändern

Wie Sie wahrscheinlich in der Vergangenheit bemerkt haben, ist Ihr Speicher auf einem Host eng gekoppelt zu den auf Ihre Festplatten geschriebenen Partitionen.

Infolgedessen zwang das Neuformatieren einer Partition oder das erneute Zusammensetzen eines Dateisystems über einer anderen Partition jeden Systemadministrator, das System neu zu starten .

Dies liegt hauptsächlich daran, dass der Kernel die Partitionstabelle nicht live lesen kann und einen vollständigen Neustart benötigt, um die verschiedenen Partitionen Ihres Systems untersuchen zu können.

Dies kann offensichtlich ein großes Problem sein, wenn Sie es mit einem Produktionsserver zu tun haben:Wenn Ihre Website auf diesem Server ausgeführt wird, können Sie sie nicht neu starten, ohne dass die Website heruntergefahren ist.

Wenn Ihre Website nicht verfügbar ist, bedeutet dies, dass Sie Ihre Kundenanforderungen wahrscheinlich nicht erfüllen können, was zu einem Geldverlust führt.

LVM löst dieses Problem durch den Aufbau einer Abstraktionsschicht auf regulären Partitionen :Wenn Sie es nicht mit regulären Partitionen zu tun haben, müssen Sie die Partitionstabelle nicht mehr neu lesen, Sie müssen nur Ihre Gerätezuordnung aktualisieren.

Mit dieser Designauswahl wird die Speicherverwaltung zu einer Software-zu-Software problematisch und nicht mehr an Hardware gebunden, zumindest nicht direkt.

Speicherplatz auf mehrere Festplatten verteilen

Ein weiterer großartiger Aspekt von LVM ist die Tatsache, dass Sie ganz einfach Daten auf mehrere Festplatten verteilen können .

Wenn Sie sich das zuvor gezeigte Diagramm ansehen, werden Sie sehen, dass es eine starke Kopplung zwischen Dateisystemen und Partitionen gibt:Als Folge davon ist es ziemlich schwierig, Daten auf mehreren Festplatten zu speichern.

LVM ist eine großartige Lösung für dieses Problem:Ihre logischen Volumes gehören zu einer zentralen Volume-Gruppe .

Selbst wenn die Volume-Gruppe aus mehreren Festplatten besteht, müssen Sie diese nicht selbst verwalten, der Device Mapper erledigt das für Sie.

Dies gilt für die Erweiterung von Dateisystemen, aber auch für deren Verkleinerung sowie für die Übertragung von Daten von einem physischen Gerät auf ein anderes.

Physische LVM-Volumes verwalten

In diesem Abschnitt werden wir Befehle verwenden, um physische Volumes auf Ihrem System anzuzeigen, zu erstellen oder zu entfernen.

Vorhandene physische Volumes anzeigen

Um vorhandene Speichergeräte unter Linux anzuzeigen, müssen Sie den Befehl „lvmdiskscan“ verwenden.

$ sudo lvmdiskscan

Hinweis Hinweis:Wenn LVM-Dienstprogramme nicht auf Ihrem Host installiert sind, beispielsweise mit einem „Befehl nicht gefunden“-Fehler, müssen Sie LVM-Programme installieren, indem Sie „apt-get install lvm2“ als root ausführen.

Wenn Sie „lvmdiskscan“ ausführen, werden Ihnen die verschiedenen Festplatten angezeigt, die auf Ihrem Host verfügbar sind.

Auf diesen Datenträgern sehen Sie auch Partitionen, wenn sie bereits auf diesen Datenträgern erstellt wurden.

Schließlich, wahrscheinlich die wichtigste Information, sehen Sie, wie viele physische LVM-Volumes auf Ihrem System erstellt werden.

Hinweis :Dies ist ein wichtiger Aspekt der LVM-Flexibilität:Sie können physische Volumes aus ganzen Festplatten oder Partitionen dieser Festplatten erstellen.

In diesem Fall beginnen wir mit einem brandneuen Server ohne erstellte physische LVM-Volumes.

Um vorhandene physische Volumes anzuzeigen, die auf Ihrem Host vorhanden sind, können Sie auch den Befehl „pvs“ verwenden .

$ pvs

Neue physische Volumes erstellen

Das Erstellen neuer physischer Volumes unter Linux ist ziemlich einfach:Sie müssen „pvcreate“ ausführen und die zugrunde liegenden physischen Geräte angeben, die erstellt werden sollen.

$ pvcreate <device_1> <device_2> ... <device_n>

Nehmen wir in unserem Fall an, dass wir ein physisches Volume für die zweite Festplatte erstellen möchten, die an unserem Host angeschlossen ist, nämlich „sdb“.

$ pvcreate /dev/sdb

Hinweis :Sie können keine physischen Volumes von Geräten erstellen, die bereits auf Ihrem System gemountet sind. Folglich kann „sda1“ (das normalerweise die Root-Partition speichert) nicht einfach auf LVM umgestellt werden.

Das erneute Ausführen des Befehls „lvmdiskscan“ zeigt eine ganz andere Ausgabe im Vergleich zum ersten Abschnitt.

$ lvmdiskscan

Wie Sie sehen können, erkennt unser Host automatisch, dass eine ganze Festplatte als physisches LVM-Volume formatiert ist und bereit ist, einer Volume-Gruppe hinzugefügt zu werden.

In ähnlicher Weise hat der Befehl „pvs“ jetzt eine andere Ausgabe:Unsere neue Festplatte wurde der Liste der auf unserem Host verfügbaren physischen Volumes hinzugefügt.

$ pvs

Nachdem Sie Ihre erste Volumengruppe erfolgreich erstellt haben, ist es an der Zeit, Ihre erste Volumengruppe zu erstellen.

Verwalten von LVM-Volume-Gruppen

Sofern Ihr System nicht mit LVM-Volumes vorkonfiguriert wurde, sollten Sie keine Volume-Gruppen auf Ihrem System erstellt haben.

Um vorhandene Datenträgergruppen auf Ihrem Host aufzulisten, müssen Sie den Befehl „vgs“ ohne Argumente verwenden.

$ vgs

Volumengruppe mit vgcreate erstellen

Der einfachste Weg, eine Volume-Gruppe zu erstellen, besteht darin, „vgcreate“ zu verwenden, um den Namen der zu erstellenden Volume-Gruppe und die darin enthaltenen physischen Volumes anzugeben.

$ vgcreate <volume_name> <physical_volume_1> <physical_volume_2> ... <physical_volume_n>

In unserem Fall haben wir nur ein physisches Volume auf unserem Host (das ist /dev/sdb), das verwendet wird, um die Volume-Gruppe „vg_1“ zu erstellen.

$ vgcreate vg_1 /dev/sdb

Vorhandene Volumengruppen auflisten und anzeigen

Beim Auflisten der vorhandenen Volume-Gruppen auf Ihrem System mit „vgs“ sollte jetzt die soeben erstellte Volume-Gruppe „vg_1“ angezeigt werden.

$ vgs

Ohne Argumente werden Ihnen sieben verschiedene Spalten präsentiert:

  • VG :Beschreibt den Volumengruppennamen auf dem Host;
  • #PV :Zeigt die Anzahl der verfügbaren physischen Datenträger in der Datenträgergruppe an;
  • #LV :ähnlich die Anzahl der logischen Volumes, die aus der Volume-Gruppe erstellt wurden;
  • #SN :Anzahl der Snapshots, die aus den logischen Volumes erstellt wurden;
  • Attr :Beschreibung der Attribute der Datenträgergruppe (w für beschreibbar, z für veränderbar und n für „normal“);
  • VGröße :die Volumengröße in GB der Volumengruppe;
  • VFree :der verfügbare Speicherplatz in der Datenträgergruppe

Wenn Sie weitere Informationen zu Ihren bestehenden Volume-Gruppen erhalten möchten, können Sie den Befehl „vgdisplay“ verwenden.

$ vgdisplay

$ vgdisplay <volume_group>

Wie Sie wahrscheinlich bemerkt haben, zeigt „vgdisplay“ viel mehr Informationen an als der einfache „vgs“-Befehl.

Gegen Ende der Ausgabe sehen Sie zwei Spalten namens „PE Size“ und „Total PE“, kurz für „Physical Extents Size“ und „Total Physical Extents“.

Unter der Haube verwaltet LVM physische Extents, bei denen es sich um Datenblöcke handelt, die dem Konzept der Blockgröße auf Partitionen sehr ähnlich sind.

In diesem Fall verwaltet LVM für diese Volumengruppe physische Extents, die 4,00 MiB groß sind, und die Volumengruppe hat 511 verschiedene physische Extents. Die Berechnung führt offensichtlich zu einer Größe von 2,00 GiB (4*511 =2,044 MiB oder 2,00 GiB).

In der Praxis sollten Sie sich nicht zu viele Gedanken über physische Extents machen müssen:LVM stellt immer sicher, dass die Zuordnung zwischen physischen Extents und den logischen Volumes erhalten bleibt.

Nachdem Sie nun Ihre erste Volume-Gruppe erstellt haben, ist es an der Zeit, Ihr erstes logisches Volume zum Speichern von Daten zu erstellen.

Logische LVM-Volumes verwalten

Um ein logisches Volume in einer Volume-Gruppe zu erstellen, müssen Sie den Befehl „lvcreate“ verwenden, den Namen des logischen Volumes und die Volume-Gruppe angeben, zu der es gehört.

Um den zu belegenden Platz anzugeben, müssen Sie das „-L verwenden ” Option und geben Sie eine Größe an (zusammengesetzt aus einer Zahl und ihrer Einheit)

$ lvcreate -L <size> <volume_group>

Wenn Sie Ihrem logischen Volume einen Namen geben möchten, können Sie die Option „-n“ verwenden.

$ lvcreate -n <name> -L <size> <volume_group>

Auch hier können Sie Ihr neu erstelltes logisches Volume auflisten, indem Sie den Befehl „lvs“ als sudo ausführen.

$ lvs

Wenn Sie den Befehl „lvs“ ausführen, werden Ihnen viele verschiedene Spalten angezeigt:

  • LV :Anzeige des Namens des logischen Volumens;
  • VG :beschreibt die Volumengruppe, zu der Ihr logisches Volumen gehört;
  • Attr :Auflisten der Attribute Ihres logischen Volumes („w“ für beschreibbar, „i“ für geerbt und „a“ für zugewiesen);
  • LGröße :selbsterklärend, beschreibt die Größe Ihres logischen Volumes in GiB;

Andere Spalten beschreiben die erweiterte Verwendung von LVM, wie z. B. das Einrichten von gespiegelten oder gestreiften Räumen. In diesem grundlegenden Tutorial werden wir sie nicht beschreiben und sie werden in fortgeschritteneren Tutorials beschrieben.

Als Sie Ihr logisches Volume erstellt haben, hat der Kernel einige Aktionen ausgeführt, ohne dass Sie es bemerkt haben:

  • Ein virtuelles Gerät wurde unter /dev erstellt :In einem Ordner, der nach dem Namen Ihrer Volume-Gruppe („vg_1“) benannt ist, wurde ein virtuelles logisches Gerät erstellt, das nach dem Namen des logischen Volumes benannt ist („lv_1“)
  • Das virtuelle Gerät ist ein Soft-Link zum „dm-0“-Gerät, das in /dev verfügbar ist :„dm-0“ ist ein virtuelles Gerät, das eine Zuordnung zwischen Ihren logischen Volumes und Ihren realen Festplatten enthält. (/dev/sda, /dev/sdb usw.)

Logische LVM-Volumes formatieren und mounten

Der letzte Schritt, damit Sie Ihren neu geschaffenen Speicherplatz nutzen können, ist das Formatieren und Mounten Ihrer logischen Volumes.

Um einen logischen Datenträger formatieren , müssen Sie den „mkfs“-Befehl verwenden und das zu verwendende Dateisystem angeben.

$ mkfs -t <filesystem_type> <logical_volume>

Nehmen wir in unserem Fall an, dass wir unser logisches Volume als „ext4“-Dateisystem formatieren möchten, wir würden den folgenden Befehl ausführen

$ mkfs -t ext4 /dev/vg_1/lv_1

Nachdem das logische Volume nun formatiert ist, müssen Sie es nur noch in einem Ordner auf Ihrem System einhängen.

Um ein logisches LVM-Volume zu mounten, müssen Sie den Befehl „mount“ verwenden, den Namen des logischen Volumes und den zu verwendenden Mount-Punkt angeben.

$ mount <logical_volume> <mount_point>

Nehmen wir für das Beispiel an, dass wir das Dateisystem im Verzeichnis „/mnt“ des Stammverzeichnisses einhängen.

$ mount /dev/vg_1/lv_1 /mnt

Wenn Sie jetzt den Befehl „lsblk“ ausführen, sollten Sie sehen können, dass Ihr logisches Volume jetzt gemountet ist.

$ lsblk

Herzlichen Glückwunsch, Sie können jetzt Ihr neu erstelltes Volume verwenden!

Bestehende Dateisysteme mit LVM erweitern

Sehen wir uns als Anwendungsfall von LVM an, wie einfach es sein kann, die Größe eines Dateisystems zu erhöhen indem Sie Ihrem Host eine weitere Festplatte hinzufügen.

Wenn Sie Ihrem Host eine weitere Festplatte hinzufügen, wählt udev diese automatisch aus und weist ihr einen Namen zu.

Um den Namen des Festplattengeräts auf Ihrem System zu haben, stellen Sie sicher, dass Sie den Befehl „lsblk“ ausführen.

$ lsblk

In unserem Fall haben wir am SATA-Anschluss eine neue Festplatte mit dem Namen „sdc“ hinzugefügt.

Um diese neue Festplatte zu unseren LVM-Schichten hinzuzufügen, müssen wir jede Schicht des LVM-Speicherstapels konfigurieren.

Markieren wir diese neue Festplatte zunächst als physisches Volume auf unserem Host mit der Datei „pvcreate ”-Befehl.

$ pvcreate /dev/sdc

Physical volume "/dev/sdc" successfully created

Anschließend müssen Sie Ihr neu erstelltes physisches Volume zur Volume-Gruppe hinzufügen.

Um ein physisches Volume zu einer bestehenden Volume-Gruppe hinzuzufügen, müssen Sie die Datei „vgextend ” Befehl, geben Sie die Volume-Gruppe und die hinzuzufügenden physikalischen Volumes an.

$ vgextend vg_1 /dev/sdc

Volume group "vg_1" successfully extended

Mit dem Befehl „vgs“ können Sie überprüfen, ob Ihre Volume-Gruppe erfolgreich erweitert wurde.

$ vgs

Wie Sie sehen können, hat sich die Ausgabe im Vergleich zum ersten Abschnitt leicht geändert:Sie haben jetzt zwei physische Volumes. Außerdem wurde der Speicherplatz von 2 GiB auf fast 3 GiB erhöht.

Ihr logisches Volume ist noch nicht größer, Sie müssen es vergrößern, um etwas Platz im Pool freizugeben.

Um die Größe Ihres logischen Volumes zu erhöhen, müssen Sie das „lvextend“ verwenden, das logische Volume sowie die zu nehmende Größe mit der Option „-L“ angeben.

$ lvextend -L +1G dev/vg_1/lv_1

Wie Sie sehen können, hat sich die Größe des logischen Volumes sowie die Anzahl der physischen Extents geändert, die Ihrem logischen Volume zugeordnet sind.

Das Erhöhen Ihres logischen Volumes bedeutet nicht, dass Ihr Dateisystem automatisch an die Größe Ihres logischen Volumes angepasst wird.

Um Ihr Dateisystem zu vergrößern, müssen Sie den Befehl „resize2fs“ verwenden und das zu erweiternde logische Volume angeben (in diesem Fall „/dev/vg_1/lv_1“)

$ resize2fs /dev/vg_1/lv_1

Sie können jetzt die Größe Ihres Dateisystems überprüfen:es wurde erweitert, um es an die Größe Ihres logischen Volumes anzupassen, herzlichen Glückwunsch!

$ df -h

Wie Sie wahrscheinlich bemerkt haben, haben Sie die Größe Ihres Dateisystems erhöht, indem Sie eine weitere Festplatte hinzugefügt haben, aber Sie mussten dabei Ihr System nicht neu starten oder Dateisysteme aushängen.

Bestehende Dateisysteme mit LVM verkleinern

Nachdem Sie nun gesehen haben, wie Sie vorhandene Dateisysteme einfach erweitern können, sehen wir uns an, wie Sie sie verkleinern können um ihren Platz zu reduzieren.

Bevor Sie ein logisches Volume verkleinern, stellen Sie sicher, dass genügend Speicherplatz verfügbar ist auf dem logischen Volume mit dem „df“-Befehl.

$ df -h

Unter Verwendung des logischen Volumes aus dem vorherigen Abschnitt haben wir immer noch fast 2 GiB zur Verfügung.

Folglich können wir 1 GiB aus dem logischen Volume entfernen.

Um die Größe eines logischen Volumes zu reduzieren, müssen Sie den Befehl „lvreduce“ ausführen, die Größe mit der Option „-L“ sowie den Namen des logischen Volumes angeben.

$ lvreduce -L <size> <logical_volume>

In unserem Fall würde dies zu folgendem Befehl führen (um 1 GB verfügbaren Speicherplatz zu entfernen)

$ lvreduce -L 1G /dev/vg_1/lv_1

Hinweis :Beachten Sie, dass dieser Vorgang nicht ohne Risiken ist. Sie könnten einige Ihrer vorhandenen Daten löschen, wenn Sie Ihr logisches Volumen reduzieren möchten.

Folglich wurde der Speicherplatz wieder der Datenträgergruppe zugewiesen und kann nun von einem anderen logischen Datenträger auf dem System verwendet werden.

$ vgs

Schlussfolgerung

In diesem Tutorial haben Sie etwas über LVM gelernt , kurz für Logical Volume Management , und wie es verwendet wird, um anpassbaren Speicherplatz auf Ihrem Host einfach zu konfigurieren.

Sie haben gelernt, was physikalische Volumen sind , Volumengruppen und logische Volumes sind und wie sie zusammen verwendet werden können, um Dateisysteme einfach zu vergrößern oder zu verkleinern.

Wenn Sie an Linux-Systemadministration interessiert sind , wir haben einen kompletten Abschnitt auf der Website, der ihm gewidmet ist, also schau ihn dir unbedingt an!


Linux
  1. So erstellen Sie ein Dateisystem auf einer Linux-Partition oder einem logischen Volume

  2. Linux – Ein logisches Volume von einer Volume-Gruppe in eine andere verschieben?

  3. LVM-Konfiguration:Vorgänge/Dienstprogramme für physische Volumes (PV).

  4. Alle physischen Datenträger auflisten, die einer Datenträgergruppe zugeordnet sind

  5. So finden Sie die physischen Volumes, die ein logisches Volume in LVM enthalten

Logical Volume Manager (LVM) im Vergleich zur Standardpartitionierung unter Linux

Verwaltung logischer Volumes

Sicherung und Wiederherstellung von LVM-Snapshots unter Linux

Arping-Befehl unter Linux erklärt

Logisches Lvm-Volume auf virtueller Maschine erweitern?

Anfängerleitfaden für LVM (Logical Volume Management)