Aus LinuxUser 05/2016

Mit Snapper und Btrfs Dateien auf Knopfdruck wiederherstellen

© Sellingpix, 123RF

Letzte Rettung

Snapper erlaubt im Fall eines Falles dank Btrfs-Snapshots das Zurücksetzen eines Systems auf einen früheren Zustand.

Bei OpenSuse vertrauen die Entwickler auf das Dateisystem Btrfs [1]. Es ist seit OpenSuse 13.2 beziehungsweise seit Version 12 des Suse Linux Enterprise Servers (SLES) das Dateisystem für die Root-Partition. Die Distribution CoreOS, die stark auf die Container-Technologie setzt, hat sich dagegen kürzlich wieder von Btrfs abgewandt, da das Dateisystem im Einsatz noch zu viele Fehler zeigte (siehe Kasten „Warnung“).

Die Arbeit an dem Dateisystem dauert nun schon seit rund acht Jahren an. Btrfs setzt, wie das von Sun für Solaris 10 entwickelte ZFS [2], auf Funktionen, die üblicherweise nicht zum Repertoire von Dateisystemen gehören. Dazu zählen neben einem erweiterten Speicherbereich die Unterstützung für RAID 0, 1, 5, 6 und 10, Snapshots und Subvolumes sowie die Möglichkeit, Partitionen während des Betriebs zu defragmentieren. Zudem besteht die Möglichkeit, Ext3/4-Partitionen nach Erstellen eines Backups über den Befehl btrfs-convert aus den Btrfs-Tools nach Btrfs umzuwandeln.

Warnung

Verschiedene Distributionen und Fachleute beurteilen die Sicherheit des noch relativ jungen Dateisystems Btrfs unterschiedlich. Dabei kommt es stark auf das Einsatzgebiet und die Funktionen an, die Sie jeweils benutzen. Btrfs-Chefentwickler Chris Mason etwa, der bei seinem Arbeitgeber Facebook das Dateisystem im Backend im großen Stil einsetzt, hält Btrfs reif für den produktiven Einsatz. Auch in den Support-Kanälen von Suse ließen sich keine Meldungen über Datenverluste in Zusammenhang mit Btrfs und Snapper finden. Um Snapper auszuprobieren, bietet es sich aber an, zuerst ein Testsystem aufzusetzen oder zeitnahe Backups anzulegen, sodass keine wertvollen Daten verloren gehen.

OpenSuse schnappt

Für den Test von Snapper unter Btrfs verwendeten wir die aktuelle OpenSuse Leap 42.1 sowie ein aktuelles Ubuntu 16.04 Beta, für den Versuch unter Ext4 setzten wir auf Siduction aka Debian „Sid“. Da bei der Arbeit mit Btrfs und Snapshots ein aktuelles System samt Kernel wichtig ist, aktualisierten wir alle drei Systeme vor dem Start unserer Versuche auf den neuesten Stand. Bei Suse kam damit Kernel 4.1.15 sowie btrfsprogs 4.1.2-10.1 und snapper 0.2.9.1 auf die Platte. Zusätzlich installierten wir pam_snapper, um Snapper beim Anmelden am System zu starten. Siduction und Ubuntu aktualisierten wir ebenfalls entsprechend.

Für die Auswahl von OpenSuse als Testplattform war unter anderem maßgeblich, dass der Suse-Entwickler Arvin Schnell federführend Snapper entwickelt hat und es für die Distribution ein grafisches Werkzeug gibt, das das Verwalten der Snapshots erleichtert. Snapper findet sich jedoch auch in den Archiven von anderen Distributionen, wie beispielsweise Arch [3], Debian und Ubuntu. Debian wählten wir, um zu testen, ob Snapper auch unter Ext4 seinen Dienst tut – die Aussagen dazu im Internet widersprechen sich teils. Zudem wollten wir eine Debian-Installation mit Ext4 nach Btrfs umwandeln und Snapper auch dort testen.

Konfiguration

Nach der Installation von OpenSuse Leap 42.1 ist Snapper für die Root-Partition bereits eingerichtet. In diesem Zustand legt es vor und nach jeder Aktion mit YaST oder Zypper einen Snapshot an. Zudem besteht die Möglichkeit, über die sogenannte Timeline stündliche Snapshots zu erstellen; alternativ legen Sie diese von Hand an. Die Software löscht die meisten Schnappschüsse nach einem festgelegten Plan, einige bewahrt es jedoch standardmäßig auf.

Belassen Sie die Einstellungen bei den Vorgaben aus der Datei /etc/snapper/configs/root, dann belegen die Schnappschüsse schnell viel Platz. Dies gilt es beim Partitionieren zu bedenken. Eine Root-Partition, die normalerweise mit 30 GByte Platz auskommt, sollte – je nach geplanter Snapper-Konfiguration – für Snapshots zwischen 100 und 300 GByte Platz erhalten.

Dabei kommt erschwerend hinzu, dass Befehle wie df -h oder du zur Anzeige des belegten und freien Platzes auf den verschiedenen Partitionen der Snapshots, die in Subvolumes liegen, nicht wie erwartet funktionieren. Das ist eines der Ärgernisse von Btrfs, das zur im Internet in diesem Zusammenhang oft zu findenden Fehlermeldung no space left on device führt. Es empfiehlt sich daher, statt der klassischen Befehle grundsätzlich das Kommando btrfs filesystem show zu verwenden (Abbildung 1).

Abbildung 1: Irritationen beim belegten Speicherplatz: Unter Btrfs gibt es bei den Ausgaben der Befehle <code>df -h</code> und <code>btrfs filesystem show</code> erhebliche Unterschiede.
Abbildung 1: Irritationen beim belegten Speicherplatz: Unter Btrfs gibt es bei den Ausgaben der Befehle df -h und btrfs filesystem show erhebliche Unterschiede.

Möchten Sie zusätzlich für die Home-Partition Snapper nutzen, so stellen Sie bei der Installation das Dateisystem für diese Partition von XFS auf Btrfs um. Verbleibt Home auf der Root-Partition, erfasst Snapper es nicht.

Nach dem Kernel-Update (Listing 1), aber noch vor dem Aktualisieren des Systems via YaST oder Zypper, sollten Sie die Datei /etc/snapper/configs/root editieren. Hier legen Sie die Intervalle für das Erstellen und Löschen von Schnappschüssen fest. Bei einem Desktop-System lohnt es sich, die vorgegebenen Werte an einigen Stellen herunterzusetzen. Listing 2 zeigt dies exemplarisch für die wichtigsten Stellen. Die Manpage zu snapper-configs gibt hier weiteren Einblick [4]. Eine detaillierte Liste der Parameter finden Sie in der Suse-Dokumentation [5].

Listing 1

$ sudo zypper ar -f http://download.opensuse.org/repositories/Kernel:/stable/standard/ kernel
$ zypper ref
$ zypper dup -r kernel

Listing 2

# subvolume to snapshot
SUBVOLUME="/"
# filesystem type
FSTYPE="btrfs"
[...]
# run daily number cleanup
NUMBER_CLEANUP="yes"
# limit for number cleanup
NUMBER_MIN_AGE="1800"
NUMBER_LIMIT="10"
#create hourly snapshots
TIMELINE_CREATE="yes"
[...]
#cleanup hourly snapshots after some time
TIMELINE_CLEANUP="yes"
# limits for timeline cleanup
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="3"
TIMELINE_LIMIT_DAILY="2"
TIMELINE_LIMIT_MONTHLY="0"
TIMELINE_LIMIT_YEARLY="0"

Möchten Sie Schnappschüsse der Home-Partition erstellen, dann legen Sie die entsprechende Konfiguration mittels des Befehls sudo snapper -c home create-config /home an und editieren sie dann analog zu der für Root. Überprüfen Sie anschließend mit sudo snapper list-configs, ob das System beide Subvolumes korrekt eingebunden hat. Neben dem Eintrag für root sollte es jetzt noch einen für home geben (Abbildung 2).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 7 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
KAUFEN
LinuxUser 05/2016 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: