SDB:Snapper

Wechseln zu: Navigation, Suche

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:

# snapper list-configs
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:

# snapper list
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:

# snapper -c home create-config /home

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:

# snapper -c home list
Type   | # | Pre # | Date                         | Cleanup  | Description | Userdata
-------+---+-------+------------------------------+----------+-------------+---------
single | 0 |       |                              |          | current     |         
single | 1 |       | Tue 22 Nov 2011 11:30:01 CET | timeline | timeline    |
# snapper -c home status
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:

# snapper -c home create --description "whatever you want to.."

(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:

# zypper in yast2-snapper


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:

# snapper -c home create-config /home


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:

# snapper create-config /

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.