SDB:Snapper
Inhaltsverzeichnis
- 1 Was ist Snapper ?
- 2 Anleitung
- 3 FAQ
- 3.1 Wie aktiviert man Snapshots für das /home-Dateisystem ?
- 3.2 Warum zeigt Snapper nie Änderungen in /var/log an ?
- 3.3 Unterstützt Snapper auch ext4 als Dateisystem ?
- 3.4 Unterstützt Snapper auch LVM ?
- 3.5 Mein System hat hohe I/O Prozessorlast nach dem Start von YaST oder Zypper. Was kann ich machen ?
- 3.6 Ich benutze kein openSUSE. Kann ich trotzdem Snapper verwenden ?
- 3.7 Ich habe mein System nicht mit YaST installiert, wie fange ich an ?
- 3.8 Macht Snapper wirklich alles rückgängig ?
Was ist Snapper ?
Snapper ist ein openSUSE eigenes Tool um Btrfs-Snapshots einfach zu verwalten. Neben dem Löschen von bereits angelegten Snapshots und dem Erstellen von neuen Snapshots können Snapshots miteinander verglichen werden. Snapper kann sowohl mit Befehlen im Terminal eingesetzt werden, als auch durch ein Modul in YaST. Beide Varianten greifen intern auf die libsnapper C++-Bibliothek zurück.
openSUSE 12.1 ist, neben Factory, die erste Version, die Snapper standardmäßig anbietet.
Features
- Manuelles Erstellen von Snapshots
- Erstellen von Snapshots mit YaST bzw. snapper
- Erstellen einer Timeline von Snapshots
- Anzeigen und Zurücksetzen von Änderungen
- Arbeitet mit btfs, ext4 und lvm
- Automatisches löschen von alten Snapshots
- Zukünftige Ideen für Snapper
Reviews
Pakete
Snapper RPM-Pakete sind auf dem Standardinstallationsimage vorhanden. Im Buildservice sind Snapper-Pakete für diverse Distributionen verfügbar.
Anleitung
Es wird davon ausgegangen, dass man bei der Installation Btrfs als Dateisystem gewählt hat und openSUSE 12.1 oder neuer verwendet.
Bestehende Konfigurationen anzeigen
Zuerst schaut man wie YaST Snapper konfiguriert hat:
Config | Subvolume -------+---------- root | /
Wie zu sehen hat YaST eine Konfiguration für das Wurzel-Dateisystem („Root-Filesystem“ oder „/“) angelegt.
Existierende Snapshots anzeigen
Um zu sehen, welche Snapshots YaST bereits angelegt hat, verwendet man:
Type | # | Pre # | Date | Cleanup | Description | Userdata -------+---+-------+------------------------------+----------+-------------+--------- single | 0 | | | | current | single | 1 | | Tue 22 Nov 2011 10:30:02 CET | timeline | timeline |
Konfiguration für /home erstellen
Wie zu sehen legt YaST bei der openSUSE-Installation nicht automatisch einen Snapshot für das Home-Dateisystem an. Dies ist allerdings manuell machbar:
home ist nun die für den Snapshot des Home-Dateisystems /home erzeugte Konfiguration.
Immer wenn man nun auf den Snapshot der Home-Partition zugreifen möchte, nutzt man die Option „-c home“.
Stündliche Änderungen anzeigen
Somit kann man nun beispielsweise die stündlichen Änderungen anzeigen lassen:
Type | # | Pre # | Date | Cleanup | Description | Userdata -------+---+-------+------------------------------+----------+-------------+--------- single | 0 | | | | current | single | 1 | | Tue 22 Nov 2011 11:30:01 CET | timeline | timeline |
1..0 comparing snapshots... done +... /home/tux/just-married.jpg
Das „+“ gibt an, dass die folgende Datei neu hinzugefügt wurde.
Snapshot manuell anlegen
Falls man einen Snapshot manuell anlegen möchten, verwendet man:
(home ist die für den Snapshot ausgewählt Konfiguration. home kann dementsprechend mit jeder beliebigen weiteren existierenden Konfiguration ausgetauscht werden)
Snapper Modul für YaST
Um Snapper einfacher bedienen zu können existiert ein Snapper Modul für YaST, namens „yast2-snapper“. Die Installation dieses Moduls kann beispielsweise mithilfe von Zypper mit einem kurzem Befehl ausgeführt werden:
Alternativ kann man yast2-snapper natürlich auch über das Software installieren Modul von YaST installieren.
FAQ
Hier sind die Antworten auf einige oft gestellte Fragen.
Wie aktiviert man Snapshots für das /home-Dateisystem ?
Die Konfiguration für das /home-Dateisystem kann mit folgendem Befehl ganz schnell und simpel angelegt werden:
Warum zeigt Snapper nie Änderungen in /var/log an ?
Für manche spezielle Verzeichnisse haben wir entschieden Snapshots zu deaktivieren, beispielsweise für /var/log weil das Ändern der Logdateien das Finden von Fehlern erschwert. Um von einem Verzeichnis keine Snapshots zu erstellen, kreieren wir ein sog. Subvolume für dieses Verzeichnis. Man kann sich alle subvolumes anzeigen lassen, indem man „btrfs subvolume list /“ in einem Terminal (als Root) ausführt.
Unterstützt Snapper auch ext4 als Dateisystem ?
Ja, allerdings bis jetzt nur experimentell mit einem speziellem Kernel und dem Programm „e2fsprogs“. Mehr Informationen gibt es vom next4-Projekt.
Unterstützt Snapper auch LVM ?
Seit der Version 0.0.12 unterstützt Snapper auch offiziell LVM Snapshots.
Mein System hat hohe I/O Prozessorlast nach dem Start von YaST oder Zypper. Was kann ich machen ?
Wenn man YaST/Zypper startet, erstellt Snapper zwei Snapshots und vergleicht diese. Dieser Vergleich könnte der Grund für die Prozessorlast sein.
Seit Snapper 0.0.10 kann man das automatische Vergleichen im Hintergrund durch das Editieren der Datei „/etc/snapper/configs/root“ (Administrationsrechte benötigt) deaktiviert werden, durch das Setzen von:
BACKGROUND_COMPARISON="no"
Falls man zudem das automatische aufräumen von leeren pre-post Snapshot Paaren deaktivieren wollen, setzt man (in derselben Datei):
EMPTY_PRE_POST_CLEANUP="no"
Ich benutze kein openSUSE. Kann ich trotzdem Snapper verwenden ?
Wir bieten Snapper-Pakete für diverse Distributionen im openSUSE-build-service an:
Natürlich ist es auch möglich Snapper selbst zu kompilieren:
Ich habe mein System nicht mit YaST installiert, wie fange ich an ?
Nachdem man die Snapper Pakete installiert hat, sollte man zuerst eine Konfiguration für die Root-Partition anlegen:
Dann fährt man am besten mit der Anleitung in diesem Artikel fort.
Macht Snapper wirklich alles rückgängig ?
Snapper macht wirklich alle Dateien (text und binär..), Benutzerrechte und Besitzer eingeschlossen, rückgängig. Bestimmte Dateien (wie „/etc/mtab“) sind hier allerdings ausgeschlossen.
Es ist sinnvoll immer den Status-Befehl zu nutzen, um zu sehen, an welchen Dateien Snapper etwas ändern wird.