LVM Desaster Recovery

Um einen einzelnen Befehl rückgängig zu machen speichert LVM per Default unter /etc/lvm/backup/ für jede Volume Group die Konfiguration vor der Ausführung des letzten Kommandos. Mit dieser Datei kann man dann per vgcfgrestore nachdem man die Volume Group offline genommen hat den vorherigen Zustand wiederherstellen.

In Fällen wo diese Datei nicht (mehr) existiert oder man mehr als ein Kommando rückgängig machen will (z.B. lvremove -f /dev/vg/vServerA-disk; lvremove -f /dev/vg/vServerA-swap aber eigentlich sollte vServerB gelöscht werden, vServerA wird noch benötigt) hat man trotzdem noch eine Chance. LVM speichert am Anfang der physical Volumes mehre Kopien der Konfiguration. Diese kann man (wie auch hier beschrieben) mittels dd if=/dev/md0 bs=512 count=255 skip=1 of=/tmp/vg.txt auslesen (/dev/md0 ist natürlich durch ein passendes physical Volume zu ersetzen). Die Datei kann man dann in einen Texteditor öffnen, und findet (hoffentlich) noch die gewünschte Version der Konfiguration. Am Ende jeder dort gesicherten Konfiguration steht ein Zeitstempel mit Versionsangabe der Tools, auf welchen Host es erstellt wurde. So lässt sich die gewünschte Konfiguration leichter finden. Die wiederherzustellende Version kopiert man dann in eine neue Datei (z.B. /tmp/recover.txt) und nachdem man wieder die Volume Group offline genommen hat (oder LVM komplett mit /etc/init.d/lvm stop) stellt man die gewünschte Version mit vgcfgrestore -f /tmp/recover.txt VolumeGroupName wieder her. Nach einem online nehmen (oder /etc/init.d/lvm start) ist der gewünschte Zustand wieder hergestellt.

ACHTUNG: Das funktioniert natürlich nur dann fehlerfrei, wenn die Blöcke in der Zwischenzeit nicht anderweitig überschrieben wurden (nach einem vgcreate, vgresize und Nutzung des logical Volumes u.Ä.).