ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Logical Volume Manager

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

LVM steht für Logical Volume Manager und ist ein Verfahren, um Speicherplatz über mehrere Festplatten dynamisch zu verwalten. Es wird sozusagen eine zusätzliche logische Schicht zwischen Partitionen und Dateisystemen eingefügt.

LVM bietet die Möglichkeit, mehrere Partitionen logisch zusammenzufassen (Volume Group) und in diesem logischen Verbund neue "logische Partitionen" (Logical Volume) anzulegen. Der Volume Group können dynamisch weitere Geräte hinzugefügt werden, wodurch sich der verfügbare Speicherplatz erhöht. Freier Speicherplatz kann ebenfalls dynamisch den Logical Volumes zugewiesen werden. Dadurch erreicht man eine höhere Flexibilität als beim klassischen Partitionierungsansatz. Dies ist vor allem für Server interessant, bei denen dynamisch auf das Wachsen der Datenbestände reagiert werden muss.

Vorteile:

Nachteile:

Hinweis:

Wegen der höheren Fehleranfälligkeit sollte das LVM in einem RAID-Verbund installiert werden, der Datensicherheit bietet (mindestens RAID-Level 1). Weiterhin sollten die Volumes über Backups regelmäßig gesichert werden, um so Datenverlust durch den Ausfall einer Platte vorzubeugen!

Grundlagen

Vier Begriffe sind beim LVM essentiell und sollen zunächst erklärt werden:

  • Physical Extent

  • Physical Volume

  • Volume Group und

  • Logical Volume

Physical Extent

Das sog. Physical Extent (PE) ist die kleinste mögliche Speichergröße in einem LVM. Das PE ist vergleichbar mit den Sektoren von normalen Festplatten bzw. Partitionen. Es ist nicht möglich, die Größe der PEs nachträglich zu verändern. Dies ist aber auch nicht nötig, da die Anzahl der PEs seit LVM2 unbegrenzt ist, die Standardgröße beträgt 4 MByte.

Physical Volume

Ein Physical Volume (PV) ist der eigentliche Datenspeicher eines LVMs. Ein PV kann eine Partition oder ein ganzes Laufwerk sein. Es ist auch möglich, sogenannte "Loop-Dateien" zu verwenden.

Volume Group

Eine Volume Group (VG) ist eine Art Container für mindestens ein PV.

Logical Volume

Ein Logical Volume (LV oder auch Volume) ist im LVM Kontext für den Anwender eine Art Partition innerhalb einer Volume Group. Es ist nicht möglich Logical Volumes außerhalb einer VG zu erstellen. Das LV kann wie eine normale Partition verwendet werden, d.h. es können Dateisysteme darauf angelegt werden und es kann gemounted werden.

Skalierbarkeit

Im LVM können alle Elemente (PV, VG, LV), außer der PE, im laufenden Betrieb vergrößert und verkleinert werden. Doch die Erweiterbarkeit des LVM allein hilft noch nicht weiter, auch das darin liegende Dateisystem muss verändert werden, um es tatsächlich an die neue Größe anpassen zu können. Nicht jedes Dateisystem beherrscht das Vergrößern oder Verkleinern. Weitere Informationen sind unter Dateisystemgrößen verändern verfügbar.

Hinweis:

GParted kann erst ab Version 0.14 und neuer - d.h. auf Ubuntu bezogen ab Ubuntu 14.04 Trusty - mit LVM Partitionen umgehen. Andere Programme wie z.B. Partition Magic können mit LVM Partitionen nichts anfangen, mit diesem Programm ist also ein Vergrößern oder Verkleinern der LVM-Partition nicht möglich.

Mindestanforderungen

Zusammengefasst lässt sich also sagen, dass zum Aufbau eines minimalen LVMs mindestens ein Physical Volume erforderlich ist, aus dem eine Volume Group erstellt wird. In dieser Volume Group können jetzt die einzelnen Logical Volumes angelegt werden. Es ist jedoch nicht erforderlich und sinnvoll, mit diesen Logical Volumes den gesamten Platz einer Volume Group auszunutzen, da man so leichter auf spätere Veränderungen reagieren kann. Als Faustregel kann man den aktuellen bzw. geplanten Platzbedarf + 25% nehmen.

Installation

Um LVM unter Ubuntu verwenden zu können, müssen folgende Pakete installiert sein [1]:

  • lvm2

Befehl zum Installieren der Pakete:

sudo apt-get install lvm2 

Oder mit apturl installieren, Link: apt://lvm2

Einrichten eines LVM

Neben der Möglichkeit, ein LVM im Terminal einzurichten, gibt es auch grafische Lösungen für KDE und GNOME.

GNOME

Für GNOME ist das "Verwaltung für logische Medien", das durch folgendes Paket installiert werden kann [1]:

  • system-config-lvm (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install system-config-lvm 

Oder mit apturl installieren, Link: apt://system-config-lvm

Für das Programm gibt es eine Dokumentation 🇬🇧.

KDE

Für KDE ist das "KVPM - KDE-Manager für Laufwerkspartitionen", das durch folgendes Paket installiert werden kann [1]:

  • kvpm (universe)

Befehl zum Installieren der Pakete:

sudo apt-get install kvpm 

Oder mit apturl installieren, Link: apt://kvpm

Manuell

Im folgenden wird die Einrichtung eines LVM im Terminal erläutert. Um ein LVM einzurichten, muss zuerst jede zu verwendende Partition mittels pvcreate als Physical Volume initialisiert werden. Alle Physical Volumes müssen nun mittels vgcreate zu einer Volume Group zusammengefasst werden. In dieser Gruppe können nun mittels lvcreate die Logical Volumes erzeugt werden. Folgende Befehle zeigen das Vorgehen zum Einrichten eines LVM:

pvcreate /dev/<Partition> /dev/<Partition2> # <Partition> und <Partition2> als Physical Volume initialisieren
vgcreate <group> /dev/<Partition> /dev/<Partition2> # Erstellt Volume Group <group>, bestehend aus /dev/<Partition> und /dev/<Partition2>
lvcreate -L 2G -n <vol> <group> # Erzeugt ein 2 GB großes Logical Volume mit dem Namen <vol> in der Volume Group <group> 

Für jedes Logical Volume wird eine Datei der Art /dev/<group>/<vol> angelegt. Das Logical Volume kann verwendet werden wie jedes andere Block-Device. So kann ein Dateisystem darauf erzeugt werden, und das Dateisystem kann eingebunden werden.

Hinweis:

Eine mit pvcreate initialisierte Partition sollte vom Typ 0x8e bzw. Linux LVM sein, da es sonst zu Problemen mit der Erkennung der PVs kommt. Wenn das LVM auf einem RAID liegt, ist dies natürlich nicht nötig, genauso als ob das LVM direkt auf eine Festplatte ohne Partitionstabelle aufgesetzt wird.

Dies kann man z.B. via parted mit "set x lvm on" erreichen, wobei x die Partitionsnummer ist.

Administration eines LVM

Informationen abfragen

Informationen über Physical Volumes abfragen

Um Informationen über vorhandene Physical Volumes abzufragen, gibt es den Befehl pvs:

sudo pvs 

Die Ausgabe sieht dann ungefähr so aus:

PV         VG   Fmt  Attr PSize   PFree
/dev/sda2  main lvm2 a-   465,57G 311,57G

Für jedes Physical Volume gibt es eine Zeile. Wenn das Physical Volume einer Volume Group zugeordnet ist, wird diese unter VG angezeigt. Die aktuelle Größe eines Physical Volumes steht unter PSize, der freie Platz innerhalb des Physical Volumes steht unter PFree.

Alternativ gibt es auch den Befehl pvdisplay:

sudo pvdisplay 

Dieser liefert Informationen in folgendem Format:

  --- Physical volume ---
  PV Name               /dev/sda6
  VG Name               osvg
  PV Size               68.27 GiB / not usable 1.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              17477
  Free PE               5821
  Allocated PE          11656
  PV UUID               qb8pns-Zj94-JFWl-HpQ6-BRBQ-V2RO-WPCeD9

Informationen über Volume Groups abfragen

sudo vgs 

Das sieht aus wie z.B.:

VG   #PV #LV #SN Attr   VSize   VFree
main   1   6   0 wz--n- 465,57G 311,57G

Für jede Volume Group gibt es eine Zeile. Unter #PV steht die Anzahl der Physical Volumes, unter #LV die Anzahl der Logcial Volumes und unter dem Feld #SN die Anzahl der "Snapshots", die es in dieser Volume Group gibt. VSize bezeichnet die gesamte Größe der VG, wohingegen VFree für den noch nicht zugeordneten Platz in der VG steht.

Die Alternative vgdisplay:

sudo vgdisplay 

listet die Volume-Group auf, z.B.:

  --- Volume group ---
  VG Name               osvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               3
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               68.27 GiB
  PE Size               4.00 MiB
  Total PE              17477
  Alloc PE / Size       11656 / 45.53 GiB
  Free  PE / Size       5821 / 22.74 GiB
  VG UUID               GY8Uou-MFzC-JkWf-ZP1g-JATj-9NUd-mlHcqK

Informationen über Logical Volumes abfragen

sudo lvs 

Die Ausgabe sieht z.B. so aus:

LV         VG   Attr   LSize  Origin Snap%  Move Log Copy%
home       main -wi-ao 70,00G
music      main -wi-ao 20,00G
root       main -wi-ao 20,00G
swap       main -wi-ao  2,00G
tmp        main -wi-ao  2,00G
virtualbox main -wi-ao 40,00G

Für jedes Logical Volume (LV) gibt es eine Zeile, unter LV selbst steht der Name des Volumes, VG steht für die Volume Group und LSize für die Größe des Volumes.

Auch hier gibt es die Alternative lvdisplay:

sudo lvdisplay 

Die Ausgabe sieht in etwa so aus:

  --- Logical volume ---
  LV Name                /dev/osvg/lvroot
  VG Name                osvg
  LV UUID                F9hXgF-gj8B-Rdgh-efVD-p1Er-SkKN-qWx18U
  LV Write Access        read/write
  LV Status              available
  # open                 1
  LV Size                18.62 GiB
  Current LE             4768
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

Verwaltung von Physical Volumes

Physical Volume initialisieren

sudo pvcreate /dev/<Partition> 

Dies erstellt ein Physical Volume auf der Partition /dev/<Partition>. Diese kann dann einer Volume Group zugewiesen werden.

Achtung!

Dieser Befehl löscht die Daten auf dem angegebenen Gerät ohne Nachfrage!

Physical Volume leeren oder verschieben

sudo modprobe dm-mirror # Lädt den "mirror"-Treiber welcher für pvmove notwendig ist
sudo pvmove /dev/<Partition> 

Mit pvmove /dev/<Partition> wird der Inhalt des Physical Volumes auf die restlichen Volumes verschoben. Dies ist nötig, um z.B. das Physical Volume aus einer Volume Group zu entfernen.

Hinweis:

Um ein Physical Volume mit pvmove zu leeren, muss genügend Platz auf den restlichen Physical Volumes vorhanden sein!

Verwaltung von Volume Groups

Volume Groups erstellen

sudo vgcreate <group> /dev/<Partition1> /dev/<Partition2> 

Hier wird eine Volume Group mit dem Namen <group> erstellt. Diese bekommt die Physical Volumes <Partition1> und <Partition2> zugewiesen.

Volume Groups vergrößern

sudo vgextend <group> /dev/<Partition> 

Das Physical Volume <Partition> wird der Volume Group <group> hinzugefügt.

Volume Groups verkleinern

sudo modprobe dm-mirror
sudo pvmove /dev/<Partition>
sudo vgreduce <group> /dev/<Partition> 

Lädt den Mirror-Treiber, verschiebt alle Daten von dem Physical Volume <Partition> und entfernt das Volume aus der Volume Group.

Hinweis:

Um ein Physical Volume mit pvmove zu leeren, muss genügend Platz auf den restlichen Physical Volumes vorhanden sein!

Volume Groups löschen

sudo vgremove <group> 

Hier wird eine Volume Group mit dem Namen <group> gelöscht.

Verwaltung von Logical Volumes

Logical Volumes erstellen

sudo lvcreate -L 2G -n <volume> <group> 

Erstellt ein Logical Volume der Größe 2 Gigabyte mit dem Namen <volume> in der Volume Group <group>. Im Anschluss daran kann mit z.B.

sudo mkfs.ext4 /dev/<group>/<volume> 

ein Dateisystem auf dem Volume erstellt werden (siehe Formatieren).

Logical Volumes vergrößern

sudo lvextend --resizefs -L 5G /dev/<group>/<volume> 

Vergrößert das Logical Volume <volume> der Volume Group <group> und das Dateisystem auf 5 Gigabyte. Als Alternative kann auch ein + vor den Wert hinter -L gestellt werden; in diesem Fall wird die Partition dann um diesen Wert vergrößert (relative Vergrößerung des Volumes, ausgehend von der aktuellen Größe).

sudo lvextend --resizefs -l +100%FREE /dev/<group>/<volume> 

Vergrößert das Logical Volume <volume> der Volume Group <group> und das Dateisystem auf die maximal mögliche Größe. Die Volume Group hat im Anschluss keinen freien Speicher mehr.

Logical Volumes verkleinern

sudo lvreduce --resizefs -L 5G /dev/<group>/<volume> 

Verkleinert das Logical Volume <volume> der Volume Group <group> und das Dateisystem auf 5 Gigabyte. Als Alternative kann auch ein - vor den Wert hinter -L gestellt werden; in diesem Fall wird die Partition dann um diesen Wert verkleinert (relative Verkleinerung des Volumes, ausgehend von der aktuellen Größe).

Snapshots

Ein Snapshot eines Logical Volumes <volume> hält die Daten zum Zeitpunkt der Erstellung in einem neuen Logical Volume <name> fest:

sudo lvcreate --size 100M --snapshot --name <name> /dev/<group>/<volume> 

Dies legt einen Snapshot <name> an, welcher auf <volume> der Volume Group <group> basiert. Finden Schreibvorgänge auf das originale LV <volume> statt, so werden die betroffenen Blöcke vorher physisch auf das LV <name> kopiert, erst danach werden die Änderungen auf <volume> durchgeführt. Deshalb ist der Snapshot so lange gültig, wie sich das Original um nicht mehr als den hinter --size angegebenen Wert verändert (hier 100 MB). Daraus resultiert auch, dass die Schreibrate auf <volume> geringer ist, solange ein Snapshot davon existiert.

Um das LV wieder auf den Stand bei der Erstellung des Snapshots zurückzusetzen, wird mit dem Befehl

sudo lvconvert --merge /dev/<group>/<name> 

das originale LV und der Snapshot zusammengeführt. Gegebenenfalls erfolgt die Zusammenführung erst beim Neustarten des Computers (z.B. bei root). Nachdem der Vorgang erfolgreich abgeschlossen wurde, wird der Snapshot gelöscht.

Snapshots sind z.B. nützlich, wenn man etwas ausprobieren will mit der Möglichkeit, ohne größeren Aufwand zum vorherigen Stand eines Dateisystems zurückkehren zu können. Aber auch als Hilfsmittel zur Datensicherung dienen Snapshots, denn nachdem ein Snapshot erstellt wurde, kann ein Backuptool den eingehängten Snapshot in aller Ruhe klonen, ohne dass man sich um während des Sicherungsvorgangs stattfindende Dateiänderungen sorgen muss. Gerade hierfür ist ein read-only Snapshot geeignet, welches man über die Option -p r oder -permission r erstellt, wobei r für "read-only" und rw für "read-write" steht, die Standardeinstellung ist rw. Nach der Datensicherung auf eine externe Festplatte kann das Snapshot wieder verworfen werden.

Logical Volumes löschen

sudo lvremove /dev/<group>/<volume> 

Hier wird ein Logical Volume mit dem Namen <volume> in der Gruppe <group> gelöscht.

Problembehebung

Logical Volume Management manuell starten

Unter Ubuntu werden nach Installation der benötigten Pakete normalerweise alle Logical Volumes beim Systemstart mitgestartet. Dies ist jedoch bei vielen Live- bzw. Rescue-CDs nicht der Fall. Mit den nachfolgenden Befehlen können Logical Volumes manuell gestartet werden.

modprobe dm-mod
pvscan
vgscan
lvscan
vgchange -a y

Mit

vgchange -a n 

können die Logical Volumes wieder deaktiviert werden. Dies geschieht bei Ubuntu automatisch während des Herunterfahrens des Rechners.

LVs anzulegen oder zu vergrößern bricht wegen zu weniger Extents ab

Sollte beim Versuch, Logical Volumes mit lvcreate anzulegen oder mit lvextend zu vergrößern, die Fehlermeldung xxxx extents needed, but only 0 available erscheinen (xxxx=Anzahl), obwohl pvdisplay genügend freie Extents hinter Free PE meldet, kann es an der Option Allocatable NO liegen, welche ebenfalls von pvdisplay angezeigt wird. Um die PV für Änderungen freizuschalten, dient folgender Befehl:

pvchange -x y /dev/<partition> 

Nach Durchführung der Änderungen wird die PV wieder auf unveränderlich geschaltet:

pvchange -x n /dev/<partition> 

Die betreffende <partition> wird mittels pvdisplay hinter PV Name angezeigt.

Verschieben einer PV mit pvmove funktioniert nicht

Sollte beim Verschieben von Daten mit pvmove eine Fehlermeldung kommen, dass ein Kernel-Modul nicht vorhanden sei, so kann dies so behoben werden:

sudo modprobe dm-mirror 

⚓︎

Snapshot lässt sich nicht anlegen

Beim Anlegen eine Snapshots kann es passieren, dass dies wegen eines nicht geladenen Kernel-Moduls nicht möglich ist. Das notwendige Modul kann wie folgt nachgeladen werden:

sudo modprobe dm-snapshot 

intern

extern

Diese Revision wurde am 14. Februar 2018 20:16 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Installation, Partitionierung, System