silvesterlangen.de

Seite
Menü

Snapshots

Eines der wichtigsten Features von Btrfs ist die Möglichkeit des Snapshots. Das habe ich an LVM schon geliebt. Dass es jetzt das Filesystem selbst kann finde ich noch mal ein Stück geiler :-)

 

Wozu brauche ich Snapshots?

Die Gründe sind verschieden. Mal geht ein Update schief, mal hat man sich versehentlich etwas gelöscht oder man betreibt Btrfs auf einem Fileserver, der durch einen Windows-Client Opfer eines Cryptotrojaners wurde. Egal... Man kann zurück auf einen Punkt gehen wo die Welt noch okay war.

Snapshots werden von Subvolumes und Dateien erstellt.

 

Vorbereitungen

Eigentlich ist da nicht viel nötig. Als Vorbereitung muss nur ein Subvolume bestehen und sinnvollerweise darin einfach ein paar Dateien liegen. Ich habe mir aus /etc/ einfach ein paar Dateien kopiert. Das reicht ja schon.

 

Subvolume-Snapshot erstellen

Einen Subvolume-Snapshot erstellen funktioniert fast so einfach wie ein Subvolume zu erstellen. Mit folgender Zeile erstelle ich einen Snapshot von /mnt/subvol1/ in /mnt/subvol1_snapshot/

btrfs subvolume snapshot /mnt/subvol1 /mnt/subvol1_snapshot/

Schauen wir da nun rein, so finden wir die gleichen Dateien vor wie in /mnt/subvol1/.

ls -lah /mnt/subvol1_snapshot/

Für einen Read-Only-Snapshot verwendet man den Schalter -r.

btrfs subvolume snapshot -r /mnt/subvol1 /mnt/subvol1_snapshot/

 

Daten aus einem Snapshot wiederherstellen

Es gibt genau zwei Wege. Je nach dem was man erreichen will.

Einfaches Kopieren
Es spricht nichts dagegen einfach die Daten aus dem Snapshot rauszukopieren. Ein einfaches cp für die Dateien und Verzeichnisse aus dem Snapshot reicht völlig aus.

Anderes Subvolume (Snapshot) verwenden
Hat man allerdings das Root-Filesystem mit Btrfs und davon einen Snapshot erstellt, dann muss man mit einem Live-Rescue-System booten und den Snapshot einfach einsetzen.

Nach dem Bootvorgang einfach das Btrfs System mounten mit mount /dev/sda2 /mnt und dann das RootFS (ich habe es @ genannt) nach @OLD umbenennen mit mv @ @OLD.

Btrfs wird das Umbenennen erst mal verweigern. Das liegt daran, weil das FS noch Read-Only gemountet ist. Um das zu beheben geht man wie folgt vor:

btrfs property set -ts @snapshots/ROOT1 ro false

Nun schauen wir mal, ob das funktioniert hat:

btrfs property get  /mnt/@snapshots/ROOT1 ro false

Danach den Snapshot in @ umbenennen mit mv @ROOT1 @. Nun in der @/etc/fstab die neue ID des Subvolumes anpassen. Diese bekommt man mit einem

btrfs subvolume list

Danach sollte das System nach einem Reboot wieder funktionieren.

 

Subvolume-Snapshot löschen

Natürlich muss man auch ein Snapshot löschen können. Das geht ganz einfach mit:

btrfs suvolume delete /mnt/subvol1_snapshot

 

Einfaches Backup eines Snapshots erstellen

Ein Backup macht man normalerweise auf einem anderen Gerät. Oft eine USB-Festplatte oder einem iSCSI-Gerät. Das Blöde ist, dass man einen Snapshot nur auf dem Gerät (Festplatte(n) ) erstellen kann, auf dem das Volume erstellt wurde.

Ich kann also nicht einfach so auf einer neuen USB-Festplatte einen Snapshot von der eingehauten HDD auf die USB-Platte übertragen. Aber! Ich kann auf dem USB-Laufwerk ein Btrfs-Volume erstellen und dann den Snapshot dorthin übertragen. In der Praxis erstellt man also auf der USB-Festplatte ganz einfach ein Subvolume, mountet es bspw. in /.backup und überträgt dann mit folgendem Befehl den Snapshot:

btrfs send /.snapshots/ROOT01 | btrfs receive /.backup

Das Snapshot muss natürlich Read-Only erstellt werden!

 

Inkrementelles Backup eines Snapshots erstellen

Nun habe ich Änderungen im System gehabt (geglücktes Update bspw). und lege ein weiteres Snapshot an. Auf der USB-Platte möchte ich aus Platzgründen ein Inkrementelles Backup erstellen. Also nur die Veränderung vom ersten zum zweiten Snapshot übertragen.

Das Snapshot (Read-Only!) lege ich wieder wie gewohnt an mit:

btrfs subvolume snapshot -r / /.snapshots/ROOT02

Danach übertrage ich nur die Änderungen vom Snapshot ROOT01 zu ROOT02 mit folgendem Befehl:

btrfs send -p /.snapshots/ROOT01 /.snapshots/ROOT02 | btrfs receive /.backup

 

Platzprobleme vorprogrammiert

Natürlich ist das jetzt sehr attriktiv einfach von allem Snapshots anzulegen. Das führt daber dazu, dass die Festplatte schneller voll wird als einem lieb ist. Aus diesem Grund immer das Dateisystem im Auge behalten. Der Befehl btrfs filesystem usage / gibt aufschluss darüber wie viel Platz noch da ist.

 

 

 

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login