LVM2 - snapshot merge

Sun 15 August 2010 by admin

Efekt przerwy urlopowej wyraźnie wpłynął na częstotliwość pojawiania się nowych wpisów. Na rozłąkę z tą blogową ciszą niech posłuży temat dotyczący LVM i jego usprawnienia w zakresie snapshotów...

Często na łamach bloga nawiązywałem do systemu ZFS, w którym to snapshoty i ich zapisywalne odpowiedniki czyli clone'y były szybkie i bardzo użyteczne. Użyteczność ich w systemie OpenSolaris podkreślało rozwiązanie boot enviroment (beadm), które umożliwiało łatwe przywrócenie stanu systemu do tego sprzed update'a (patrz. pkg image-update). Wraz z wprowadzeniem dystrybucji Fedora 13, doczekaliśmy się i w systemie Linux podobnej funkcjonalności promowanej wraz z eksperymentalnym jeszcze systemem plików Btrfs [1]. Mało jednak wspomniane jest o rozwiązaniu tego problemu z systemem LVM, chodzi tutaj o rozszerzenie ,,merge'' umożliwiające cofnięcie stanu wolumenu do wybranego snapshot'a. Funkcjonalność ta pojawia się wraz z wprowadzeniem kernel'a 2.6.33.
Wyobraźmy sobie sytuację kiedy chcemy zabezpieczyć systemu przed ważnym update'em, tak aby w razie niepowodzenia łatwo przywrócić stan systemu sprzed zmiany.
Zanim rozpoczeniemy ww. update'em wykonamy snapshot'a wolumenu, którego dotyczyć będzie zmiana:

# touch /etc/before-update

# lvcreate -L 2G -s -n snap1 vg_fedora13/lv_root

następnie wykonujemy ww. update, który dla uproszczenia zilustrowałem jako skasowanie pliku /etc/before-update ;)

# rm /etc/before-update

po restarcie systemu okazuje się, że musimy szybko cofnąc zmiany:

# lvconvert --merge vg_fedora13/snap1
Can't merge over open origin volume
Merging of snapshot snap1 will start next activation.

komunikat informuje, że operacji na podmontowanym systemie plików jest niemożliwia w związku z tym restartujemy system i sprawdzamy:

# ls /etc/before-update

/etc/before-update

operacja się udała mamy stan systemu sprzed zmian. Jednak kolejny snapshot kończy się komunikatem:

Snapshots of an origin that has a merging snapshot is not supported.

wówczas wystarczy aktywować ponownie dany wolumen:

lvchange -ay vg_fedora13/lv_root

Tym prostym sposobem otrzymujemy szybkie narzędzie do cofania zmian, należy jednak pamiętać o tym, że dla LVM wykonywanie snapshot'ów i ich utrzymywanie może odbijać się negatywnie na szybkości działania w przeciwieństwie do systemu ZFS i Btrfs opartych o rozwiązanie COW i pewnie ta idea przyświecała twórcom wspomianego narzędzia dla Fedory.

[1] http://fedoraproject.org/wiki/Features/SystemRollbackWithBtrfs


Comments