LVM Snapshot Merge

Aus Thomas-Krenn-Wiki
Zur Navigation springen Zur Suche springen

Wenn man von einem LVM Logical Volume (LV) einen Snapshot erstellt hat, kann dieser Snapshot auch mit dem Original-LV zusammengeführt werden. Dies kann beispielsweise hilfreich sein, wenn man vor einem Applikations-Update einen Snapshot von einem LV mit Dateisystem erstellt und die durchgeführten Änderungen wieder rückgängig machen möchte. Die hier gezeigten Tests wurden unter Ubuntu 12.04 LTS (12.04.5) mit Linux Kernel 3.2 durchgeführt.

Voraussetzungen

Das Device-Mapper Target snapshot-merge muss im Kernel vorhanden sein.

$ dmsetup targets
mirror           v1.12.2
snapshot-merge   v1.1.0
snapshot-origin  v1.7.2
snapshot         v1.10.2
striped          v1.4.1
linear           v1.1.1
error            v1.0.1

LVM Snapshot zusammenführen (merge)

Mit Hilfe des Kommandos lvconvert --merge /dev/vg_testvg/testsnap kann der Snapshot testsnap mit dem Original-LV zusammengeführt werden.

Ob diese Zusammenführung(merge) gleich beginnen kann, hängt vom Status des LV und des Snapshots ab. In [1] werden folgende Möglichkeiten genannt:

  1. Wenn das Original-LV und der Snapshot nicht geöffnet sind, beginnt das Zusammenführen sofort.
  2. Wenn das Original-LV oder der Snapshot geöffnet ist, startet der Merge sobald Original-LV und Snapshot deaktiviert sind und danach eines der beiden wieder reaktiviert wird.
  3. Wenn das Original-LV nicht geschlossen werden kann (z.B. root Dateisystem) wird die Zusammenführung erst durch einen Reboot vom Server gestartet.

Während der Merge läuft werden Lese- und Schreibzugriffe direkt zum Snapshot weitergeleitet. Dies ermöglicht sofortigen Zugriff auf die Daten des Snapshots ohne auf die Fertigstellung des Merge warten zu müssen.

Nach Fertigstellung der Zusammenführung wird der ursprüngliche Snapshot entfernt.

Beispiel einer Zusammenführung

root@lvm:~$ lvcreate -n test -L 1G /dev/vg_testvg
  Logical volume "test" created
root@lvm:~$ mkfs.ext4 /dev/vg_testvg/test 
...
root@lvm:~$ mount /dev/vg_testvg/test /mnt/test/
root@lvm:~$ cd /mnt/test/
root@lvm:/mnt/test$ touch before_snapshot
root@lvm:/mnt/test$ lvcreate -s -n testsnap -L 1G /dev/vg_testvg/test
  Logical volume "testsnap" created
root@lvm:/mnt/test$ touch after_snapshot
root@lvm:/mnt/test$ cd ..
root@lvm:/mnt$ umount test/
root@lvm:/mnt$ lvconvert --merge /dev/vg_testvg/testsnap 
  Merging of volume testsnap started.
  test: Merged: 0.0%
  test: Merged: 0.0%
  Merge of snapshot into logical volume test has finished.
  Logical volume "testsnap" successfully removed
root@lvm:/mnt$ mount /dev/vg_testvg/test /mnt/test/
root@lvm:/mnt$ cd test/
root@lvm:/mnt/test$ ls
before_snapshot  lost+found

Wenn das Dateisystem nicht ausgehängt und deaktiviert wurde, kommt folgende Fehlermeldung.

root@lvm:/mnt$ lvconvert --merge /dev/vg_testvg/testsnap 
  Can't merge over open origin volume
  Merging of snapshot testsnap will start next activation.

In diesem Fall muss das LV deaktiviert und danach wieder aktiviert werden.

root@lvm:~$ umount /mnt/test
root@lvm:~$ lvconvert --merge /dev/vg_testvg/testsnap 
  Snapshot testsnap is already merging
root@lvm:~$ lvchange -an /dev/vg_testvg/test
root@lvm:~$ lvchange -ay /dev/vg_testvg/test
root@lvm:~$ lvconvert --merge /dev/vg_testvg/testsnap 
  One or more specified logical volume(s) not found

Sofern LVM Logging mit einem Level von mindestens 4 (level=4) aktiviert ist, findet man auch in der Log-Datei die Info, sobald der Merge abgeschlossen ist.

Oct 29 13:06:53 lvm lvm[22146]: Parsing: lvconvert --merge /dev/vg_testvg/testsnap
Oct 29 13:06:53 lvm lvm[22146]: Processing: lvconvert --merge /dev/vg_testvg/testsnap
Oct 29 13:23:19 lvm lvm[2346]: Merging of volume testsnap started.
Oct 29 13:23:19 lvm lvm[2346]: test: Merged: 0.0%
Oct 29 13:23:19 lvm lvm[2346]: Merge of snapshot into logical volume test has finished.
...
Oct 29 13:24:18 lvm lvm[3328]: Can't merge over open origin volume
Oct 29 13:24:18 lvm lvm[3328]: Merging of snapshot testsnap will start next activation.
Oct 29 13:25:44 lvm lvm[4251]: Merge of snapshot into logical volume test has finished.

Einzelnachweise


Foto Christoph Mitasch.jpg

Autor: Christoph Mitasch

Christoph Mitasch arbeitet in der Abteilung Web Operations & Knowledge Transfer bei Thomas-Krenn. Er ist für die Betreuung und Weiterentwicklung der Webshop Infrastruktur zuständig. Seit einem Studienprojekt zum Thema Hochverfügbarkeit und Daten Replikation unter Linux beschäftigt er sich intensiv mit diesem Themenbereich. Nach einem Praktikum bei IBM Linz schloss er sein Diplomstudium „Computer- und Mediensicherheit“ an der FH Hagenberg ab. Er wohnt in der Nähe von Linz und ist neben der Arbeit ein begeisterter Marathon-Läufer und Jongleur, wo er mehrere Weltrekorde in der Team-Jonglage hält.


Das könnte Sie auch interessieren

LVM Grundlagen
LVM vergrößern
LVM VG vgname metadata too large for circular buffer beheben