3. Administrative Wartungsarbeiten

Linux-Server sind langlebig, und während ihrer Betriebszeit pflegeleicht. Solange man nicht anfängt, an ihnen herum zuschrauben. Aber irgendwann kommt der Tag im Leben eines jeden Servers, wo es Zeit für ein paar Upgrades oder andere positive Veränderungen wird. Jetzt schlägt die Stunde für LVM und man kann die Früchte ernten, die man beim Aufsetzen mühselig ausgesät hat. Auch wenn viele Wartungsarbeiten am LVM2 online durchgeführt werden können, ist es nicht hilfreich sie in der Daten-Rush-Hour in Angriff zu nehmen. Eine Datensicherung aller zu bearbeitenden Volumen oder Volumengruppen sollte obligatorisch vor den Arbeiten durchgeführt und seltene Operationen im Labor getestet werden.

Statusinformation abfragen

Die Display-Werkzeuge für die drei Grundelemente geben eine große Menge an Information heraus. In der Regel möchte sich der Systemverwalter aber einen kurzen und schnellen Überblick über die Volumenkonfiguration verschaffen. Diese ist mit den Statuswerkzeugen „pvs“, „vgs“ und „lvs“ möglich.

debian:~# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sdd1  vg01 lvm2 a-   976,00M 726,00M
  /dev/sde1       lvm2 --   977,86M 977,86M
debian:~# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg01   1   1   0 wz--n- 976,00M 726,00M
debian:~# lvs
  LV        VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv-linear vg01 -wi-a- 250,00M

Neben den allgemeinen Informationen zeigen die Werkzeuge über die Attribute einige spezielle Zustände der Volumen und der Volumengruppe an. Die Attribute verteilen sich hierbei auf mehrere Zeichen, die jeweils eine Kategorie zusammenfassen.

Zeichen Attribut Beschreibung
1 a
2
Zeichen Attribut Beschreibung
1 r Zugriffsberechtigung – die Volumengruppe kann nur gelesen werden.
1 w Zugriffsberechtigung – die Volumengruppe ist beschreibbar, das impliziert die Lesbarkeit der Volumengruppe.
2 z Die Gruppe kann vergrößert werden.
3 x Die Gruppe ist exportiert.
4 p
5 c Zuweisungsrichtlinie – contiguous.
5 l Zuweisungsrichtlinie – cling.
5 n Zuweisungsrichtlinie – normal.
5 a Zuweisungsrichtlinie – anywhere.
5 i Zuweisungsrichtlinie – inherit.
6 c Die Volumengruppe ist Teil eines Clusters.
Zeichen Attribut Beschreibung
1 m Volumen-Typ – gespiegeltes Volumen.
1 M Volumen-Typ – gespiegeltes Volumen ohne initiale Synchronisation.
1 o Volumen-Typ -
1 p Volumen-Typ – Zugehörige PEs werden verschoben.
1 s Volumen-Typ – Volumen ist ein Snapshot.
1 S Volumen-Typ – Volumen ist ein ungültiges Snapshot.
1 v Volumen-Typ – Virtual.
1 i Volumen-Typ – Spiegelimage.
1 I Volumen-Typ – Spiegelimage ohne Synchronisation.
1 c Volumen-Typ – befindet sich in Konvertierung.
2 r Zugriffsberechtigung – Volumen kann gelesen werden.
2 w Zugriffsberechtigung – Volumen kann geschrieben werden, das impliziert automatisch die Lesbarkeit des Volumens.
3 c Zuweisungsrichtlinie – contiguous.
3 l Zuweisungsrichtlinie – cling.
3 n Zuweisungsrichtlinie – normal.
3 a Zuweisungsrichtlinie – anywhere.
3 i Zuweisungsrichtlinie – inherit.
4 m Fixierter Spiegel.
5 a Status – das Volumen ist aktiv.
5 s Status – das Volumen ist suspendiert.
5 I Status – das Volumen ist ein ungültiges Snapshot.

Ändern der Speichergröße von Volumengruppen

Wird der Speicherplatz in der Volumengruppe knapp, muss schnell Nachschub her. Hierfür ist eine Festplatte oder ein Raid-Verbund ins System zu integrieren und als physikalisches Volumen vorzubereiten. Dieses wird der Volumengruppe zugewiesen, die den frischen Nachschub an physikalischen Verwaltungseinheiten für die Speicherzuteilung an ihre logischen Volumen über logische Verwaltungseinheiten verwendet. Hierbei gilt es, folgendes Problem im Auge zu behalten: Die Volumengruppe verteilt die Daten ähnlich einem JBOD-Verbund linear über mehrere physikalische Volumen. Fällt eines der physikalischen Volumen aus, bedeutet dass das Ende der gespeicherten Daten. Sollten die physikalischen Volumen bisher nicht über ein redundanten Raid-Verbund realisiert sein, ist spätestens jetzt der Zeitpunkt gekommen, ernsthaft darüber nachzudenken.

Erweitern von Volumengruppen

Die Erweiterung einer Volumengruppe erfolgt durch das Hinzufügen frischer physikalischer Volumen. Hierfür kommt das Werkzeug „vgextend“ zum Einsatz.

 Erweitern einer Volumengruppe

debian:~# vgextend vg01 /dev/sde1
  Volume group "vg01" successfully extended
Option Option Beschreibung
-t –test Trockenlauf ohne Änderung durchführen.
-v –verbode Erweiterte Information bei der Ausführung ausgeben

Das Ergebnis kann über die Volumengruppen-Information abgerufen werden.

debian:~# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1,91 GB
  PE Size               2,00 MB
  Total PE              976
  Alloc PE / Size       125 / 250,00 MB
  Free  PE / Size       851 / 1,66 GB
  VG UUID               RZ27X2-kyaU-9Yf3-jZ0s-UfbU-20Ts-juoKer

Ein Blick verrät, dass der Gruppe jetzt die doppelte Anzahl an logischen Verwaltungseinheiten hat und der doppelte Speicherplatz zur Verfügung steht. Die Anzahl der eingebundenen logischen Volumen hat sich auf zwei erhöht und es stehen vier Metadatenbereiche für Kopien der Gruppenkonfiguration zur Verfügung. Die Gruppe enthält weiterhin nur ein logisches Volumen mit 250MB Größe.

Verkleinern einer Volumengruppe

Das Verkleinern einer Volumengruppe erfolgt analog zum Vergrößern, die gewünschte Anzahl an physikalischen Volumen ist aus der Gruppe zu entfernen. Bevor dieses durchgeführt wird, ist zu prüfen, dass keine physikalischen Verwaltungseinheiten des zu entfernenden physikalischen Volumens mehr in Verwendung sind. Ist das nicht der Fall, dann sind die betreffenden physikalischen Verwaltungseinheiten auf das in der Gruppe verbleibende physikalische Volumen zu verschieben. Vorausgesetzt, es steht dort ausreichend freier Platz zur Verfügung.

 Verkleinern einer Volumengruppe

Im Beispiel soll das physikalische Volumen „dev/sdd1“ aus der Volumengruppe „vg01“ entfernt werden. Der Status der physikalischen Volumen legt die nächsten Schritte und ihre Reihenfolge fest.

debian:~# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sdd1  vg01 lvm2 a-   976,00M 726,00M
  /dev/sde1  vg01 lvm2 a-   976,00M 976,00M

Hier lässt sich ablesen, dass das zu entfernende physikalische Volumen „dev/sdd1“ zu ca. 250MB belegt ist und das verbleibende physikalische Volumen „/dev/sde1“ ausreichend freien Platz besitzt. Jetzt können die physikalischer Verwaltungseinheiten mithilfe des Werkzeugs „pvmove“ ihren Platz wechseln. Das Werkzeug erwartet als erstes Argument die Quelle und als zweites Argument das Ziel der zu verschiebenden physikalischer Verwaltungseinheiten. Das Werkzeug verfügt über eine Option, die das Verschieben in einen Hintergrundprozess verschiebt. Ich halte das für keine gute Idee, da dann mühselig geprüft werden muss, ob der Vorgang abgeschlossen wurde. Mit der Test-Option kann der Vorgang einmal im Trockenlauf getestet werden.

  debian:~# pvmove /dev/sdd1 /dev/sde1
  /dev/sdd1: Moved: 12,0%
  /dev/sdd1: Moved: 21,6%
  /dev/sdd1: Moved: 31,2%
  /dev/sdd1: Moved: 38,4%
  /dev/sdd1: Moved: 45,6%
  /dev/sdd1: Moved: 52,0%
  /dev/sdd1: Moved: 61,6%
  /dev/sdd1: Moved: 69,6%
  /dev/sdd1: Moved: 76,8%
  /dev/sdd1: Moved: 84,0%
  /dev/sdd1: Moved: 91,2%
  /dev/sdd1: Moved: 98,4%
  /dev/sdd1: Moved: 100,0%
Option Option Beschreibung
-b –background Verschiebevorgang in einen Hintergrundprozess schieben.
-i VALUE –interval VALUE
-t –test Trockenlauf ohne Änderungen durchführen.
-n VALUE –name VALUE
-v –verbose Erweiterte Information bei der Ausführung ausgeben.

Im nächsten Schritt wird das physikalische Volumen „/dev/sdd1“ mithilfe des Werkzeugs „vgreduce“ aus der Volumengruppe „vg01“ entfernt.

debian:~# vgreduce vg01 /dev/sdd1
  Removed "/dev/sdd1" from volume group "vg01"
Option Option Beschreibung
-a –all
-t –test Trockenlauf ohne Änderungen durchführen.
-v –verbose Erweiterte Information bei der Ausführung ausgeben.
–mirrorsonly
–removemissing

Zum Abschluss ein Überblick über die aktuelle Volumengruppen-Information der Volumengruppe „vg01“ und den Status der physikalischen Volumen:

debian:~# vgdisplay vg01
--- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               1
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               976,00 MB
  PE Size               2,00 MB
  Total PE              488
  Alloc PE / Size       125 / 250,00 MB
  Free  PE / Size       363 / 726,00 MB
  VG UUID               RZ27X2-kyaU-9Yf3-jZ0s-UfbU-20Ts-juoKer

debian:~# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sdd1       lvm2 --   977,86M 977,86M
  /dev/sde1  vg01 lvm2 a-   976,00M 726,00M

Am Status lässt sich mit einem Blick ablesen, dass das physikalische Volumen „/dev/sdd1“ nicht mehr verwendet wird und das Volumen „/dev/sde1“ alleine der Volumengruppe „vg01“ zugewiesen ist. Die Volumengruppeninformation verrät, dass der Gruppe nur noch 976MB und ein physikalisches Volumen zur Verfügung steht.

Ändern der Speichergröße von logischen Volumen

Die Größenänderung vorhandener logischer Volumen ist eine Standardoperation der Verwaltung und kann in der Regel im Onlinebetrieb des Volumens durchgeführt werden, wobei es einiges zu beachten gibt. Das Volumen bildet nur den Container für ein darin enthaltenes Dateisystem. Daraus folgt, dass eine Vergrößerung dieses Containers in der Regel unproblematisch durchgeführt werden kann, beim Verkleinern aber vorher das Dateisystem entsprechend verkleinert werden muss. Die Anpassung des Dateisystems wird nicht von den LVM-Werkzeugen abgedeckt. Hier sind die zum verwendeten Dateisystem passenden Werkzeuge einzusetzen. Ob eine Anpassung des Dateisystems überhaupt möglich ist, hängt stark vom eingesetzten Dateisystem ab. Einige Dateisysteme, wie beispielsweise das professionell eingesetzte XFS, besitzen keine Werkzeuge zur Verkleinerung. Andere Dateisysteme wie EXT2 oder EXT3 können nur offline verkleinert werden und benötigen vorher eine Dateisystemprüfung, die natürlich auch nur offline durchgeführt werden kann. Eine Offlineänderung kann auch von der Kernelversion, Dateisystemversion oder der Version des vorhandenen Werkzeugkastens für die Dateisystemwartung abhängen. Derzeitig zeichnet sich aber ab, dass alle modernen Dateisysteme zumindestens eine Vergrößerung im Onlinebetrieb ermöglichen. Beim Offlinebetrieb muss das entsprechende Dateisystem aus dem Verzeichnisbaum demontiert werden. Das ist nicht unproblematisch, da hierfür keine betroffenen Dateien oder Verzeichnisse mehr im Zugriff sein dürfen. Bei einem Server kann das bedeuten, das er für die Wartungsmaßnahme im Runlevel 1 gestartet werden muss. In diesem Fall steht er nicht mehr für seine eigentlichen Aufgaben zur Verfügung, was häufig nur in der Nacht oder am Wochenende zu bewerkstelligen ist. Aus diesem Grund sollte bei der Installation das Dateisystem mit Bedacht gewählt und die Fähigkeit für die Onlineänderung getestet werden. Ein weiteres Problem stellt die Fragmentierung der Volumengruppe bei Größenänderungen logischer Volumen dar. logische Volumen sind für das Dateisystem transparent und erscheinen hier linear an einem Stück. Dieses stimmt auch, solange noch keine Änderung der Volumengröße durchgeführt wurde. Bei einer Erweiterung reserviert die Volumengruppe freie logische Verwaltungseinheiten, die sich von der Geometrie aber nicht mehr in der Nähe des Volumens befinden müssen. Eine häufige Anpassung von Volumengrößen führt deshalb zu einer starken Fragmentierung innerhalb der Volumengruppe und kann zu Performanceeinbrüchen beim Zugriff führen. Vergrößerungen sind deshalb großzügig durchzuführen, während auf Verkleinerungen möglichst zu verzichten ist.

 Fragmentierung von Volumengruppen

Vergrößern von logischen Volumen

Beim Vergrößern logischer Volumen muss als erster Schritt das logische Volumen auf die gewünschte Größe erweitert werden. Danach kann das enthaltene Dateisystem auf die neue Größe angepasst werden. Hierbei ist es hilfreich, dass die Werkzeuge für die Dateisystemvergrößerung in der Lage sind, das Dateisystem automatisch auf die maximale Größe des Containers aufzublasen.

 Vergrößerung eines logischen Volumens

Als Werkzeug für die Volumenvergrößerung kommt „lvresize“ zum Einsatz. Das Werkzeug für die Größenänderung des Dateisystems ist vom verwendeten Dateisystem abhängig. Im Beispiel kommt das Dateisystem ext2 zum Einsatz, hierfür ist das Werkzeug „resize2fs“ zuständig.

Im Beispiel wird zuerst der Status der logischen Volumen und der Volumengruppe abgefragt. Danach wird das logische Volumen „lv-linear“ auf 400MB vergrößert, was durch die Abfrage des Volumenstatus bestätigt wird. Das enthalte Dateisystem, das über „/mnt/linear“ eingebunden ist, besitzt aber laut Abfrage weiterhin nur ca. 250MB. Im nächsten Schritt soll deshalb das Dateisystem an die neue Containergröße angepasst werden. Leider unterstützt die eingesetzte Kernelversion oder das verwendete Werkzeug nicht die Onlinevergrößerung, was in einer Spätschicht für den Administrator enden kann.

debian:~# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg01   1   1   0 wz--n- 976,00M 726,00M
debian:~# lvs
  LV        VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv-linear vg01 -wi-ao 250,00M
debian:~# lvresize /dev/vg01/lv-linear -L 400m
  Extending logical volume lv-linear to 400,00 MB
  Logical volume lv-linear successfully resized
debian:~# lvs
  LV        VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv-linear vg01 -wi-ao 400,00M
debian:~# df /mnt/linear
Dateisystem          1K Blöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/mapper/vg01-lv--linear
                        247919      2062    233057   1% /mnt/linear
debian:~# resize2fs /dev/vg01/lv-linear
resize2fs 1.41.3 (12-Oct-2008)
Das Dateisystem auf /dev/vg01/lv-linear ist auf /mnt/linear eingehängt; Online-Grössenveränderung nötig
old desc_blocks = 1, new_desc_blocks = 2
resize2fs: Der Kernel unterstützt die Online-Vergrösserung nicht
debian:~# umount /mnt/linear
debian:~# e2fsck -f /dev/vg01/lv-linear
e2fsck 1.41.3 (12-Oct-2008)
Durchgang 1: Prüfe Inodes, Blocks, und Größen
Durchgang 2: Prüfe Verzeichnis Struktur
Durchgang 3: Prüfe Verzeichnis Verknüpfungen
Durchgang 4: Überprüfe die Referenzzähler
Durchgang 5: Überprüfe Gruppe Zusammenfassung
/dev/vg01/lv-linear: 11/64000 Dateien (0.0% nicht zusammenhängend), 10143/256000 Blöcke

debian:~# resize2fs /dev/vg01/lv-linear
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/vg01/lv-linear to 409600 (1k) blocks.
Das Dateisystem auf /dev/vg01/lv-linear ist nun 409600 Blöcke groß.
debian:~# df /mnt/linear
debian:~# mount /dev/vg01/lv-linear /mnt/linear
Dateisystem          1K Blöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/mapper/vg01-lv--linear
                        396972      2309    374183   1% /mnt/linear

In Folge der Nachlässigkeit bei der Dateisystemauswahl und eines unterlassenen Vergrößerungstest bei der Installation muss das Dateisystem demontiert werden, was zum Glück auch auf Anhieb klappt. Eine Überprüfung des Dateisystems wird durchgeführt, ohne die das Vergrößerungswerkzeug seine Arbeit verweigern würde. Mit dem Werkzeug „resize2fs“ wird das Dateisystem automatisch auf die neue Containergröße erweitert. Zum Abschluss wird das Dateisystem wieder im Verzeichnisbaum montiert und eine Abfrage zeigt, dass dieses jetzt auf ca. 400MB vergrößert wurde.

Verkleinern von logischen Volumen

Die Verkleinerung logischer Volumen erfolgt analog der Vergrößerung. Hierbei ist zuerst das Dateisystem deutlich unter die Zielgröße zu verkleinern. Das ist zum einen notwendig da es zusätzlichen Speicher für seine Metainformation benötigt, der häufig bei der Verkleinerung nicht mit berücksichtigt wird. Zum anderen ist das Dateisystem für die LVM-Werkzeuge transparent und unbekannt. Sie wissen nichts über das Dateisystem, und wenn sie angewiesen werden, das Volumen zu verkleinern, wird das ohne Rücksicht auf den Inhalt des Volumens durchgeführt. Wird hierbei das Ende des Dateisystems abgeschnitten, kann das einen Dateiverlust nach sich ziehen. Nach der Verkleinerung des Volumens wird das Dateisystem wieder auf die maximal mögliche Größe angepasst.

 Verkleinerung eines logischen Volumens

Im Beispiel soll das logische Volumen „lv-linear“ auf 150MB verkleinert werden. Für die Volumenänderung kommt das Werkzeug „lvresize“ und für die Änderungen am EXT2-Dateisystem die Werkzeuge „resize2fs“ und „fsck“ zum Einsatz. Alternativ kann für die Verkleinerung des logischen Volumens auch das Werkzeug „lvreduce“ verwendet werden. Da sich das gewählte Dateisystem nur im Offline-Betrieb verkleinern lässt, muss es aus dem Verzeichnisbaum demontiert werden. Hierfür kann bei einer exzessiven Nutzung ein Neustart des Servers im Runlevel 1 notwendig sein.

debian:~# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  vg01   1   1   0 wz--n- 976,00M 576,00M
debian:~# lvs
  LV        VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv-linear vg01 -wi-ao 400,00M
debian:~# df /mnt/linear
Dateisystem           1KBlöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/mapper/vg01-lv--linear
                        396972      2309    374183   1% /mnt/linear

Im ersten Schritt wird der Zustand der Volumen und des Dateisystems abgefragt. Das betreffende Volumen hat eine Größe von 400MB und beinhaltet ein Dateisystem, das mit ca. 2,5MB belegt ist. Damit steht fest, dass eine Verkleinerung auf die gewünschte Größe möglich ist.

debian:~# umount /mnt/linear
debian:~# fsck /dev/vg01/lv-linear  -f
fsck 1.41.3 (12-Oct-2008)
e2fsck 1.41.3 (12-Oct-2008)
Durchgang 1: Prüfe Inodes, Blocks, und GröÃen
Durchgang 2: Prüfe Verzeichnis Struktur
Durchgang 3: Prüfe Verzeichnis Verknüpfungen
Durchgang 4: Überprüfe die Referenzzähler
Durchgang 5: Überprüfe Gruppe Zusammenfassung
/dev/vg01/lv-linear: 11/100000 Dateien (0.0% nicht zusammenhängend), 14937/409600 Blöcke
debian:~# resize2fs /dev/vg01/lv-linear 80m
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/vg01/lv-linear to 81920 (1k) blocks.
Das Dateisystem auf /dev/vg01/lv-linear ist nun 81920 Blöcke groß.

Im nächsten Schritt wird das betroffene Dateisystem aus dem Verzeichnisbaum demontiert und eine Überprüfung des Dateisystems erzwungen. Danach wird das Dateisystem verkleinert. Damit das Dateisystem beim Verkleinern des Volumens nicht beschädigt wird, liegt die neue Größe deutlich unter der Wunschgröße von 150MB, aber auch deutlich über dem aktuell Füllstand des Dateisystems.

Im letzten Schritt wir das logische Volumen auf die Wunschgröße verkleinert und das Dateisystem automatisch an die maximal mögliche Größe angepasst. Das Dateisystem wird wieder im Dateibaum montiert und eine Statusabfrage bestätigt eine Volumengröße von 150MB und eine Dateisystemgröße von ca. 150MB

debian:~# lvresize /dev/vg01/lv-linear -L 150m
  WARNING: Reducing active logical volume to 150,00 MB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce lv-linear? [y/n]: y
  Reducing logical volume lv-linear to 150,00 MB
  Logical volume lv-linear successfully resized
debian:~# resize2fs /dev/vg01/lv-linear
resize2fs 1.41.3 (12-Oct-2008)
Resizing the filesystem on /dev/vg01/lv-linear to 153600 (1k) blocks.
Das Dateisystem auf /dev/vg01/lv-linear ist nun 153600 Blöcke groß.
debian:~# mount /dev/vg01/lv-linear /mnt/linear
debian:~# lvs
  LV        VG   Attr   LSize   Origin Snap%  Move Log Copy%  Convert
  lv-linear vg01 -wi-ao 150,00M
debian:~# df /mnt/linear
Dateisystem          1KBBlöcke   Benutzt Verfügbar Ben% Eingehängt auf
/dev/mapper/vg01-lv--linear
                        148799      1550    139569   2% /mnt/linear

Weiter zu Teil 4. - Spezialitäten unter LVM


wiki/seminare/workshops/lvm2/wst03.txt · Zuletzt geändert: 2011-12-20 22:18 von Marek Walther