LVM Snapshot Merge
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:
- Wenn das Original-LV und der Snapshot nicht geöffnet sind, beginnt das Zusammenführen sofort.
- 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.
- 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
- ↑ Merging a Snapshot with the Source Logical Volume to Revert Changes or Roll Back to a Previous State SLES11: Storage Adminstraton Guide (www.suse.com)
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.
|