Inhaltsverzeichnis
Zusammenfassung
Viele Benutzer fragten bereits nach einer Funktion, mit der sie Snapshots des Dateisystems anfertigen könnten, um so Rollbacks für Linux auszuführen. Dank Snapper, gemeinsam mit dem Btrfs-Dateisystem oder mit Thin Provisioned LVM-Volumes, ist diese Lücke nunmehr geschlossen.
Das neue Copy-on-Write-Dateisystem Btrfs für Linux unterstützt Dateisystem-Snapshots (Kopie des Zustands eines Subvolume zu einem bestimmten Zeitpunkt) von Subvolumes (ein oder mehrere separat einhängbare Dateisysteme auf den einzelnen physischen Partitionen). Mit Snapper verwalten Sie diese Snapshots. Snapper ist mit einer Kommandozeile und einer YaST-Oberfläche ausgestattet.
Standardmäßig fungieren Snapper und Btrfs auf SUSE Linux Enterprise Server als „Rückgängig-Werkzeug“ bei Systemänderungen, die mit YaST oder zypper durchgeführt wurden. Vor und nach dem Ausführen eines YaST-Moduls oder von zypper wird ein Snapshot erstellt. Mit Snapper können Sie die beiden Snapshots vergleichen, und Sie erhalten die Möglichkeit, die Unterschiede zwischen den beiden Snapshots wieder rückgängig zu machen. Die Werkzeuge sorgen außerdem für die Systemsicherung, da stündlich ein Snapshot der System-Subvolumes angefertigt wird.
Btrfs bietet als einziges Dateisystem auf SUSE Linux Enterprise Server die Unterstützung für Snapshots und ist daher auf allen Partitionen und Subvolumes erforderlich, für die ein „Snapshot“ angefertigt werden soll.
Beim Erstellen eines Snapshots verweisen sowohl der Snapshot als auch das Original auf dieselben Blöcke im Dateisystem. Zunächst belegt ein Snapshot also keinen zusätzlichen Speicherplatz auf der Festplatte. Werden Daten im Original-Dateisystem bearbeitet, so werden die geänderten Datenblöcke kopiert, und die alten Datenblöcke werden im Snapshot beibehalten. Der Snapshot belegt daher dieselbe Speicherplatzmenge wie die geänderten Daten. Im Lauf der Zeit wächst der Speicherplatzbedarf eines Snapshots somit an. Wenn Sie also Dateien aus einem Btrfs-Dateisystem löschen, auf dem sich Snapshots befinden, wird unter Umständen kein Speicherplatz freigegeben!
![]() | Position der Snapshots |
|---|---|
Snapshots befinden sich stets auf derselben Partition oder demselben Subvolume wie die Daten, für die der „Snapshot“ angefertigt wurde. Es ist nicht möglich, einen Snapshot auf einer anderen Partition oder einem anderen Subvolume zu speichern. | |
Partitionen mit Snapshots müssen daher größer sein als „normale“ Partitionen. Die Speichermenge ist dabei abhängig von der Anzahl der Snapshots und vom Umfang der Änderungen an den Daten. In der Regel sollten Sie etwa den doppelten Speicherplatz bereitstellen.
![]() | Freigeben von Speicherplatz/Belegung des Festplattenspeichers |
|---|---|
Um Speicherplatz auf einer
Da das Kommando df nicht die richtige Menge an belegtem Speicherplatz auf Wenn Sie eine Aufrüstung von einem Service Pack auf ein höheres Service Pack vornehmen, belegen die entstehenden Snapshots einen großen Teil des Festplattenspeichers auf den System-Subvolumes, da große Mengen an Daten geändert werden (Aktualisierungen der Pakete). Es wird daher empfohlen, diese Snapshots manuell zu löschen, sobald Sie sie nicht mehr benötigen. | |
Mit Snapper können Sie außerdem Snapshots auf Thin Provisioned LVM-Volumes, die mit ext3 oder XFS formatiert sind, erstellen und verwalten (siehe Abschnitt 4.6, „Verwenden von Snapper auf Thin-Provisioned LVM-Volumes“).
Snapper auf SUSE Linux Enterprise Server ist als Werkzeug vorkonfiguriert, mit dem Sie die Änderungen rückgängig machen, die von zypper und YaST vorgenommen werden. Hierzu ist Snapper so konfiguriert, dass vor und nach jeder Ausführung von zypper bzw. YaST ein Snapshot-Paar erstellt wird. Mit Snapper können Sie außerdem Systemdateien wiederherstellen, die versehentlich gelöscht oder geändert wurden. Hierzu werden stündliche Sicherungen angelegt.
Standardmäßig werden automatische Snapshots (wie oben beschrieben) für die Root-Partition und deren Subvolumes konfiguriert. Sollen Snapshots auch für andere Partitionen zur Verfügung stehen, beispielsweise für /home, können Sie benutzerdefinierte Konfigurationen anlegen.
Wenn Sie die Root-Partition während der Installation mit Btrfs einrichten, wird Snapper (für Rollbacks von Änderungen durch YaST oder zypper vorkonfiguriert) automatisch installiert. Bei jedem Starten eines YaST-Moduls und bei jeder zypper-Transaktion werden zwei Snapshots erstellt: ein „Pre-Snapshot“ mit dem Zustand des Dateisystems vor dem Start des Moduls und ein „Post-Snapshot“ nach Beendigung des Moduls.
Mit dem YaST-Snapper-Modul oder mit dem snapper-Kommandozeilenwerkzeug können Sie Dateien aus dem „Pre-Snapshot“ wiederherstellen und so die Änderungen durch YaST/zypper rückgängig machen. Durch den Vergleich der beiden Snapshots mit diesen Werkzeugen erkennen Sie außerdem, welche Dateien geändert wurden. Darüber hinaus können Sie die Unterschiede (Diff) zwischen zwei Versionen einer Datei abrufen.
Linux ist ein Multitasking-System, weshalb die Daten im Zeitraum zwischen dem Pre-Snapshot und dem Post-Snapshot durchaus auch durch andere Prozesse (außer YaST und zypper) geändert werden können. In diesem Fall werden auch alle Änderungen durch andere Prozesse rückgängig gemacht, wenn Sie den Zustand aus dem Pre-Snapshot wiederherstellen. In der Regel ist dies eher unerwünscht. Überprüfen Sie daher sorgfältig alle Änderungen zwischen den beiden Snapshots, bevor Sie das Rollback starten. Wenn Sie Änderungen aus anderen Prozessen finden, die beibehalten werden sollen, wählen Sie die Dateien für das Rollback aus.
![]() | Einschränkungen |
|---|---|
Machen Sie sich mit den Einschränkungen von Snapper vertraut, bevor Sie die Rollback-Funktion nutzen. Weitere Informationen finden Sie in Abschnitt 4.4, „Einschränkungen“. | |
![]() | Speicherdauer der Snapshots |
|---|---|
Standardmäßig werden die letzten 100 YaST- und zypper-Snapshots beibehalten. Sobald diese Anzahl überschritten wird, werden die ältesten Snapshots gelöscht. | |
Prozedur 4.1. Rückgängigmachen von Änderungen mit dem -Modul in YaST¶
Starten Sie das -Modul im Abschnitt in YaST, oder geben Sie yast2 snapper ein.
Unter muss die Option eingestellt sein. Dies ist im Prinzip immer der Fall, sofern Sie nicht eigene Snapper-Konfigurationen manuell hinzugefügt haben.
Wählen Sie ein Pre-/Post-Snapshot-Paar aus der Liste aus. Sowohl die YaST- als auch die zypper-Snapshot-Paare sind vom Typ . Für YaST-Snapshots wird die Bezeichnung yast in der angezeigt, für zypper-Snapshots die Bezeichnung Modulnamezypp (zypper).
![]() |
Klicken Sie auf . Die Liste der Dateien, bei denen Unterschiede zwischen den beiden Snapshots bestehen, wird geöffnet. Die nachfolgende Abbildung zeigt eine Liste von Dateien, die nach dem Hinzufügen des Benutzers tester geändert wurden.
![]() |
Prüfen Sie die Dateiliste. Zum Anzeigen der Unterschiede („Diff“) zwischen der Pre- und der Post-Version einer Datei wählen Sie die Datei aus der Liste aus. Die nachfolgenden Abbildungen zeigen die Änderungen an der Datei /etc/passwd, die nach dem Hinzufügen des Benutzers tester vorgenommen wurden.
![]() |
Zum Wiederherstellen einer Reihe von Dateien aktivieren Sie das entsprechende Kontrollkästchen für die gewünschten Dateien oder Verzeichnisse. Klicken Sie auf , und bestätigen Sie den Vorgang mit .
![]() |
Zum Wiederherstellen einer einzelnen Datei klicken Sie auf den Namen dieser Datei. Die Diff-Ansicht der Datei wird aktiviert. Klicken Sie auf , und bestätigen Sie mit .
Prozedur 4.2. Rückgängigmachen von Änderungen mit dem Kommando snapper¶
Mit dem Kommando snapper list -t pre-post erhalten Sie eine Liste der YaST- und zypper-Snapshots. Für YaST-Snapshots wird die Bezeichnung yast in der angezeigt, für zypper-Snapshots die Bezeichnung Modulnamezypp (zypper).
~ # snapper list -t pre-post
Pre # | Post # | Pre Date | Post Date | Description
------+--------+--------------------------+--------------------------+----------------------+
4 | 5 | Tue Jan 10 14:39:14 2012 | Tue Jan 10 14:39:33 2012 | yast system_settings
65 | 66 | Thu Jan 12 17:18:10 2012 | Thu Jan 12 17:18:23 2012 | zypp(zypper)
68 | 69 | Thu Jan 12 17:25:46 2012 | Thu Jan 12 17:27:09 2012 | zypp(zypper)
73 | 74 | Thu Jan 12 17:32:55 2012 | Thu Jan 12 17:33:13 2012 | yast system_settings
75 | 76 | Thu Jan 12 17:33:56 2012 | Thu Jan 12 17:34:42 2012 | yast users
77 | 92 | Thu Jan 12 17:38:36 2012 | Thu Jan 12 23:13:13 2012 | yast snapper
83 | 84 | Thu Jan 12 22:10:33 2012 | Thu Jan 12 22:10:39 2012 | zypp(zypper)
85 | 86 | Thu Jan 12 22:16:58 2012 | Thu Jan 12 22:17:09 2012 | zypp(zypper)
88 | 89 | Thu Jan 12 23:10:42 2012 | Thu Jan 12 23:10:46 2012 | zypp(zypper)
90 | 91 | Thu Jan 12 23:11:40 2012 | Thu Jan 12 23:11:42 2012 | zypp(zypper)
108 | 109 | Fri Jan 13 13:01:06 2012 | Fri Jan 13 13:01:10 2012 | zypp(zypper)
Mit dem Kommando snapper status PRE erhalten Sie eine Liste der geänderten Dateien für ein Snapshot-Paar.POST. Dateien, deren Inhalt geändert wurde, sind mit gekennzeichnet, hinzugefügte Dateien mit und gelöschte Dateien mit . Das nachfolgende Beispiel zeigt ein Snapshot-Paar für die Installation des Pakets ncftp.
~ # snapper status 108..109
+... /usr/bin/ncftp
+... /usr/bin/ncftpbatch
+... /usr/bin/ncftpget
+... /usr/bin/ncftpls
[...]
+... /usr/share/man/man1/ncftpspooler.1.gz
c... /var/cache/zypp/solv/@System/cookie
c... /var/cache/zypp/solv/@System/solv
c... /var/lib/rpm/Basenames
c... /var/lib/rpm/Dirnames
c... /var/lib/rpm/Filemd5s
c... /var/lib/rpm/Group
c... /var/lib/rpm/Installtid
c... /var/lib/rpm/Name
c... /var/lib/rpm/Packages
c... /var/lib/rpm/Providename
c... /var/lib/rpm/Provideversion
c... /var/lib/rpm/Requirename
c... /var/lib/rpm/Requireversion
c... /var/lib/rpm/Sha1header
c... /var/lib/rpm/Sigmd5
c... /var/lib/zypp/SoftLocks
Zum Anzeigen der Unterschiede (Diff) für eine bestimmte Datei führen Sie snapper diff PRE aus.POST FILENAME. Wenn Sie FILENAME nicht angeben, wird die Diff-Ansicht für alle Dateien angezeigt.
~ # snapper diff 108..109 /var/lib/zypp/SoftLocks
--- /.snapshots/108/snapshot/var/lib/zypp/SoftLocks 2012-01-12 23:15:22.408009164 +0100
+++ /.snapshots/109/snapshot/var/lib/zypp/SoftLocks 2012-01-13 13:01:08.724009131 +0100
@@ -1,4 +1,2 @@
-# zypp::SoftLocksFile generated Thu Jan 12 23:10:46 2012
-#
-ncftp
-#
+# zypp::SoftLocksFile generated Fri Jan 13 13:01:08 2012
+##
Zum Wiederherstellen einer oder mehrerer Dateien führen Sie snapper -v undochange PRE aus.POST FILENAMES. Wenn Sie FILENAMES nicht angeben, werden alle geänderten Dateien wiederhergestellt.
~ # snapper -v undochange 108..109
create:0 modify:16 delete:21
undoing change...
deleting /usr/share/man/man1/ncftpspooler.1.gz
deleting /usr/share/man/man1/ncftpput.1.gz
[...]
deleting /usr/bin/ncftpls
deleting /usr/bin/ncftpget
deleting /usr/bin/ncftpbatch
deleting /usr/bin/ncftp
modifying /var/cache/zypp/solv/@System/cookie
modifying /var/cache/zypp/solv/@System/solv
modifying /var/lib/rpm/Basenames
modifying /var/lib/rpm/Dirnames
modifying /var/lib/rpm/Filemd5s
modifying /var/lib/rpm/Group
modifying /var/lib/rpm/Installtid
modifying /var/lib/rpm/Name
modifying /var/lib/rpm/Packages
modifying /var/lib/rpm/Providename
modifying /var/lib/rpm/Provideversion
modifying /var/lib/rpm/Requirename
modifying /var/lib/rpm/Requireversion
modifying /var/lib/rpm/Sha1header
modifying /var/lib/rpm/Sigmd5
modifying /var/lib/zypp/SoftLocks
undoing change done
Neben den YaST- und zypper-Snapshots erstellt Snapper stündliche Snapshots der Systempartition (/). Mit diesen Sicherungs-Snapshots können Sie Dateien wiederherstellen, die versehentlich gelöscht oder geändert wurden. Mit der Diff-Funktion in Snapper können Sie außerdem feststellen, welche Änderungen an einem bestimmten Zeitpunkt vorgenommen wurden.
Die stündlichen Sicherungs-Snapshots sind vom Typ Einzeln und tragen die Bezeichnung Zeitleiste. Zum Wiederherstellen von Dateien aus diesen Snapshots befolgen Sie die Anweisungen unter Prozedur 4.1, „Rückgängigmachen von Änderungen mit dem -Modul in YaST“ oder Prozedur 4.2, „Rückgängigmachen von Änderungen mit dem Kommando snapper“.
![]() | Speicherdauer der Snapshots |
|---|---|
Standardmäßig wird der erste Snapshot der letzten zehn Tage, Monate und Jahre beibehalten. Weitere Informationen finden Sie unter Beispiel 4.1, „Beispiel für eine Zeitleistenkonfiguration“. | |
Das Verhalten von Snapper ist in je einer Konfigurationsdatei pro Partition und Btrfs-Subvolume definiert. Diese Konfigurationsdateien sind unter /etc/snapper/configs/ gespeichert. Die Standardkonfiguration in Snapper für das Verzeichnis / trägt die Bezeichnung root. Hiermit werden die YaST- und zypper-Snapshots sowie die stündlichen Sicherungs-Snapshots für / erstellt und verwaltet.
Sie können eigene Konfigurationen für andere, mit Btrfs formatierte Partitionen sowie für vorhandene Subvolumes auf einer Btrfs-Partition erstellen. Im nachfolgenden Beispiel wird eine Snapper-Konfiguration zum Sichern der Webserverdaten eingerichtet, die sich auf einer separaten, mit Btrfs formatierten, unter /srv/www eingehängten Partition befinden.
Zum Wiederherstellen von Dateien aus diesen Snapshots verwenden Sie wahlweise snapper selbst oder das -Modul in YaST. In YaST wählen Sie die aus, wobei Sie die Konfiguration für snapper mit dem globalen Schalter -c angeben (z. B. snapper -c myconfig list).
Zum Erstellen einer neuen Snapper-Konfiguration führen Sie snapper create-config aus:
snapper -c www-datacreate-config /srv/www
Der Name der Konfigurationsdatei. | |
Einhängepunkt für die Partition oder das |
Mit diesem Kommando erstellen Sie eine neue Konfigurationdsdatei /etc/snapper/config-templates/www-data mit geeigneten Standardwerten (aus /etc/snapper/config-templates/default übernommen).
![]() | Standardwerte für die Konfiguration |
|---|---|
Die Standardwerte für eine neue Konfiguration werden aus snapper -c www-data create-config -t my_defaults /srv/www | |
Die Konfigurationsdatei lässt sich in einem Editor bearbeiten. Hier befinden sich Schlüssel-Wert-Paare im Format . Sie können lediglich den Schlüssel=WertWert bearbeiten.
SUBVOLUME
Einhängepunkt für die Partition oder das Subvolume am Snapshot. Bearbeiten Sie diese Datei nicht.
FSTYPE
Dateisystemtyp der Partition. Bearbeiten Sie diese Datei nicht.
NUMBER_CLEANUP
Legt fest, ob alte Snapshots automatisch gelöscht werden sollen, sobald die mit NUMBER_LIMIT angegebene Anzahl und das mit NUMBER_MIN_AGE angegebene Alter erreicht werden. Gültige Werte: yes, no
![]() | Grenzwert und Alter |
|---|---|
| |
NUMBER_LIMIT
Definiert die Anzahl der beizubehaltenden Snapshots, wenn NUMBER_CLEANUP auf yes gesetzt ist.
NUMBER_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot aufweisen soll, bevor er automatisch gelöscht werden kann.
TIMELINE_CREATE
Wenn diese Option auf yes gesetzt ist, werden stündliche Snapshots erstellt. Dies ist zurzeit die einzige Möglichkeit, um Snapshots automatisch zu erstellen. Die Einstellung yes wird daher dringend empfohlen. Gültige Werte: yes, no
TIMELINE_CLEANUP
Legt fest, ob alte Snapshots automatisch gelöscht werden sollen, sobald die mit angegebene Anzahl und das mit TIMELINE_LIMIT_*TIMELINE_MIN_AGE angegebene Alter erreicht werden. Gültige Werte: yes, no
TIMELINE_MIN_AGE
Definiert das Mindestalter in Sekunden, das ein Snapshot aufweisen soll, bevor er automatisch gelöscht werden kann.
TIMELINE_LIMIT_HOURLY, TIMELINE_LIMIT_DAILY, TIMELINE_LIMIT_MONTHLY, TIMELINE_LIMIT_YEARLY
Anzahl der Snapshots, die pro Stunde, Tag, Monat und Jahr beibehalten werden sollen.
Beispiel 4.1. Beispiel für eine Zeitleistenkonfiguration¶
TIMELINE_CREATE="yes"
TIMELINE_CLEANUP="yes"
TIMELINE_MIN_AGE="1800"
TIMELINE_LIMIT_HOURLY="10"
TIMELINE_LIMIT_DAILY="10"
TIMELINE_LIMIT_MONTHLY="10"
TIMELINE_LIMIT_YEARLY="10"
In dieser Beispielkonfiguration werden stündliche Snapshots vorgenommen, die automatisch bereinigt werden. TIMELINE_MIN_AGE und TIMELINE_LIMIT_* werden stets gemeinsam ausgewertet. In diesem Beispiel ist das Mindestalter eines Snapshots, ab dem er gelöscht werden kann, auf 30 Minuten (1800 Sekunden) eingestellt. Durch die stündliche Erstellung der Snapshots werden nur die jeweils neuesten Snapshots beibehalten. Wenn TIMELINE_LIMIT_DAILY auf einen Wert ungleich null gesetzt ist, wid auch der erste Snapshot des Tages beibehalten.
Beizubehaltende Snapshots
Stündlich: Die letzten zehn angefertigten Snapshots.
Täglich: Jeweils der erste Snapshot, der zu Tagesbeginn angefertigt wurde, für die letzten zehn Tage.
Monatlich: Jeweils der erste Snapshot, der am letzten Tag des Monats angefertigt wurde, für die letzten zehn Monate.
Jährlich: Jeweils der erste Snapshot, der am letzten Tag des Jahres angefertigt wurde, für die letzten zehn Jahre.
Standardmäßig kann Snapper nur vom root verwendet werden. Unter Umständen müssen jedoch bestimmte Gruppen oder Benutzer in der Lage sein, Snapshots zu erstellen oder Änderungen durch Wiederherstellen eines Snapshots rückgängig zu machen:
Ein Website-Administrator möchte einen Snapshot von /srv/www anfertigen.
Ein Datenbankadministrator möchte einen Snapshot der Datenbanken anfertigen.
Eine Benutzerin möchte einen Snapshot ihres Benutzerverzeichnisses anfertigen.
Für diese Zwecke können Sie Snapper-Konfigurationen erstellen, in denen Benutzern und/oder Gruppen Berechtigungen gewährt werden. Neben dieser Konfigurationsänderung muss das zugehörige Verzeichnis .snapshots für die jeweiligen Benutzer lesbar und zugänglich sein.
Prozedur 4.3. Ermöglichen der Verwendung von Snapper für normale Benutzer
Beachten Sie, dass alle Schritte in diesem Verfahren vom root ausgeführt werden müssen.
Erstellen Sie eine Snapper-Konfiguration für die Partition oder das Subvolume, auf dem der Benutzer Snapper verwenden soll (falls noch nicht vorhanden). Weitere Anweisungen finden Sie unter Abschnitt 4.2.3, „Erstellen und Bearbeiten von Snapper-Konfigurationen“. Beispiel:
snapper --config web_data create /srv/www
Die Konfigurationsdatei wird unter /etc/snapper/configs/ angelegt, wobei NAME dem Wert entspricht, den Sie im vorherigen Schritt mit NAME-c/--config angegeben haben (beispielsweise /etc/snapper/configs/webdaten). Nehmen Sie die gewünschten Anpassungen vor (Details finden Sie unter Abschnitt 4.2.3.1, „Anpassen der Konfigurationsdatei“).
Legen Sie Werte für ALLOW_USERS und/oder ALLOW_GROUPS fest. Damit gewähren Sie bestimmten Benutzern bzw. Gruppen die Berechtigungen. Mehrere Einträge müssen mit Leertaste getrennt werden. Um beispielsweise dem Benutzer www_admin Berechtigungen zu gewähren, geben Sie Folgendes ein:
ALLOW_USERS="www_admin"
Gewähren Sie Lese- und Zugriffsberechtigungen für das Snapshot-Verzeichnis PATH/.snapshots. PATH muss dabei durch das Subvolume ersetzt werden, das Sie im ersten Schritt dieses Verfahrens angegeben haben. Beispiel:
chmod a+rx /srv/www/.snapshots
Die vorhandene Snapper-Konfiguration kann nunmehr durch den oder die angegebenen Benutzer und/oder Gruppen verwendet werden. Testen Sie dies beispielsweise mit dem Kommando list:
www_admin:~ > snapper -c web_data list
Wenn Sie die Root-Partition während der Installation mit Btrfs eingerichtet haben, erstellt Snapper automatisch stündliche Snapshots des Systems sowie Pre- und Post-Snapshots bei YaST- und zypper-Transaktionen. Diese Aufgaben lassen sich jeweils wie folgt deaktivieren:
Bearbeiten Sie /etc/snapper/configs/root, und setzen Sie TIMELINE_CREATE auf no:
TIMELINE_CREATE="no"
Deinstallieren Sie das Paket snapper-zypp-plugin
Bearbeiten Sie /etc/sysconfig/yast2, und setzen Sie USE_SNAPPER auf no:
USE_SNAPPER="no"
Snapper ist nicht auf das automatische Erstellen und Verwalten von Snapshots über eine Konfiguration beschränkt. Mit dem Kommandozeilenwerkzeug oder dem YaST-Modul können Sie auch selbst Snapshot-Paare („vorher/nachher“) oder einzelne Snapshots manuell erstellen.
Alle Snapper-Vorgänge werden für eine vorhandene Konfiguration ausgeführt (weitere Details finden Sie unter Abschnitt 4.2.3, „Erstellen und Bearbeiten von Snapper-Konfigurationen“). Sie können einen Snapshot nur für Partitionen oder Volumes erstellen, für die eine Konfiguration vorhanden ist. Standardmäßig wird die Systemkonfiguration (root) verwendet. Wenn Sie Snapshots für Ihre eigene Konfiguration erstellen oder verwalten möchten, müssen Sie diese Konfiguration explizit auswählen. Verwenden Sie das Dropdown-Menü in YaST, oder geben Sie den Schalter -c in der Kommandozeile an (snapper -c MYCONFIG COMMAND).
Ein Snapshot besteht jeweils aus dem Snapshot selbst und aus einigen Metadaten. Beim Erstellen eines Snapshots müssen Sie auch die Metadaten angeben. Wenn Sie einen Snapshot bearbeiten, so ändern Sie die Metadaten – der Inhalt selbst kann nicht bearbeitet werden. Die folgenden Metadaten sind für jeden Snapshot verfügbar:
Typ: Snapshot-Typ; Details siehe Abschnitt 4.3.1.1, „Snapshot-Typen“. Diese Daten können nicht geändert werden.
Nummer: Eindeutige Nummer des Snapshots. Diese Daten können nicht geändert werden.
Pre Number (Pre-Nummer): Nummer des zugehörigen Pre-Snapshots. Nur für Snapshots vom Post-Typ. Diese Daten können nicht geändert werden.
Beschreibung: Beschreibung des Snapshots.
Benutzerdaten: Erweiterte Beschreibung, in der Sie benutzerdefinierte Daten als kommagetrennte Liste im Format Schlüssel=Wert angeben können, beispielsweise reason=testing_stuff, user=tux
Bereinigungsalgorithmus: Bereinigungsalgorithmus für den Snapshot; Details siehe Abschnitt 4.3.1.2, „Bereinigungsalgorithmen“.
In Snapper gibt es drei Typen von Snapshots: Pre, Post und einzeln. Physisch unterscheiden sie sich nicht, sie werden jedoch in Snapper unterschiedlich behandelt.
Pre
Snapshot eines Dateisystems vor einer Änderung. Zu jedem Pre-Snapshot gibt es einen zugehörigen Post-Snapshot. Wird beispielsweise für die automatischen YaST-/zypper-Snapshots verwendet.
Post
Snapshot eines Dateisystems nach einer Änderung. Zu jedem Post-Snapshot gibt es einen zugehörigen Pre-Snapshot. Wird beispielsweise für die automatischen YaST-/zypper-Snapshots verwendet.
EinzelnEigenständiger Snapshot. Wird beispielsweise für die automatischen stündlichen Snapshots verwendet. Dies ist der Standardtyp beim Erstellen von Snapshots.
Snapper bietet drei Algorithmen zum Bereinigen alter Snapshots. Die Algorithmen werden im Rahmen eines täglichen CRON-Auftrags ausgeführt. Die Bereinigungshäufigkeit selbst ist in der Snapper-Konfiguration für die Partition oder das Subvolume definiert (weitere Informationen siehe Abschnitt 4.2.3.1, „Anpassen der Konfigurationsdatei“).
Löscht alte Snapshots, sobald eine bestimmte Anzahl von Snapshots erreicht wird.
Löscht alte Snapshots, die ein bestimmtes Alter erreicht haben; hierbei wird allerdings eine Reihe von stündlichen, täglichen, monatlichen und jährlichen Snapshots beibehalten.
Löscht Pre-/Post-Snapshot-Paare, zwischen denen keine Unterschiede (Diffs) bestehen.
Zum Erstellen eines Snapshots führen Sie snapper create aus, oder klicken Sie im -Modul in YaST auf . In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Kommandozeile erstellen. Die Anpassung ist über die YaST-Oberfläche ganz einfach.
![]() | Snapshot-Beschreibung |
|---|---|
Geben Sie stets eine aussagekräftige Beschreibung an, mit der der Zweck des Snapshots auch später noch eindeutig erkennbar ist. Über die Option für die Benutzerdaten können Sie noch mehr Informationen festlegen. | |
--description "Snapshot für Woche 2 2013"
Erstellt einen eigenständigen Snapshot (Einzeltyp) für die Standardkonfiguration (root) mit einer Beschreibung. Da kein Bereinigungsalgorithmus angegeben ist, wird der Snapshot nicht automatisch gelöscht.
--config home create --description "Bereinigung in ~tux"
Erstellt einen eigenständigen Snapshot (Einzeltyp) für die benutzerdefinierte Konfiguration (home) mit einer Beschreibung. Da kein Bereinigungsalgorithmus angegeben ist, wird der Snapshot nicht automatisch gelöscht.
--config home create --description "Tägliche Datensicherung" --cleanup-algorithm timeline
Erstellt einen eigenständigen Snapshot (Einzeltyp) für die benutzerdefinierte Konfiguration (home) mit einer Beschreibung. Die Datei wird automatisch gelöscht, sobald die Kriterien für den Zeitleisten-Bereinigungsalgorithmus in der Konfiguration erfüllt sind.
--type pre--print-number--description "Vor Apache-Konfigurationsbereinigung"
Erstellt einen Snapshot vom Pre-Typ und gibt die Snapshot-Nummer aus. Erstes Kommando zum Erstellen eines Snapshot-Paars, mit dem der „Vorher“-/„Nachher“-Zustand festgehalten wird.
--type post--pre-number 30--description "Nach der Apache-Konfigurationsbereinigung"
Erstellt einen Snapshot vom Post-Typ, gepaart mit der Pre-Snapshot-Nummer 30. Zweites Kommando zum Erstellen eines Snapshot-Paars, mit dem der „Vorher“-/„Nachher“-Zustand festgehalten wird.
--command COMMAND--description "Vor und nach KOMMANDO"
Erstellt automatisch ein Snapshot-Paar vor und nach dem Ausführen von KOMMANDO. Diese Option ist nur verfügbar, wenn Snapper in der Kommandozeile verwendet wird.
Bei Snapper können Sie die Beschreibung, den Bereinigungsalgorithmus und die Metadaten eines Snapshots bearbeiten. Alle anderen Metadaten können nicht geändert werden. In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Kommandozeile bearbeiten. Die Anpassung ist über die YaST-Oberfläche ganz einfach.
Um einen Snapshot in der Kommandozeile zu bearbeiten, müssen Sie seine Nummer kennen. Mit snapper list rufen SIe alle Snapshots mit den dazugehörigen Nummern ab.
Im -Modul in YaST werden bereits alle Snapshots aufgelistet. Wählen Sie einen Eintrag in der Liste, und klicken Sie auf .
--cleanup-algorithm "Zeitleiste" 10
Bearbeitet die Metadaten von Snapshot 10 für die Standardkonfiguration (root). Der Bereinigungsalgorithmus ist mit Zeitleiste festgelegt.
--config home modify --description "Tägliche Sicherung" -cleanup-algorithm "Zeitleiste"120
Bearbeitet die Metadaten von Snapshot 120 für die benutzerdefinierte Konfiguration home. Eine neue Beschreibung wird festgelegt, und der Bereinigungsalgorithmus wird aufgehoben.
Zum Löschen eines Snapshots mit dem -Modul in YaST wählen Sie den gewünschten Snapshot in der Liste aus, und klicken Sie auf .
Um einen Snapshot mit dem Kommandozeilenwerkzeug zu löschen, müssen Sie seine Nummer kennen. Führen Sie hierzu snapper list aus. Zum Löschen eines Snapshots führen Sie snapper delete NUMBER aus.
![]() | Löschen von Snapshot-Paaren |
|---|---|
Wenn Sie einen | |
Löscht Snapshot 65 für die Standardkonfiguration (root).
-c home delete 89 90
Löscht Snapshots 89 und 90 für die benutzerdefinierte Konfiguration home.
![]() | Alte Snapshots belegen mehr Speicherplatz |
|---|---|
Wenn Sie Snapshots löschen, um Speicherplatz auf der Festplatte freizugeben (weitere Informationen finden Sie unter Abschnitt 4.1.1, „Snapshots und Festplattenspeicher“), löschen Sie zuerst die älteren Snapshots. Je älter ein Snapshot ist, desto mehr Speicherplatz belegt er. | |
Snapshots werden außerdem im Rahmen eines täglichen CRON-Auftrags automatisch gelöscht. Weitere Informationen finden Sie unter Abschnitt 4.3.1.2, „Bereinigungsalgorithmen“.
Btrfs und Snapper sind für den Einsatz in Produktionsumgebungen bereit, werden jedoch fortlaufend weiterentwickelt. Zurzeit gelten die nachfolgenden Einschränkungen. Diese Punkte sollen in künftigen Versionen behoben werden.
Es gibt keinen Mechanismus, mit dem die Datenkonsistenz beim Erstellen von Snapshots gewährleistet werden kann. Wenn eine Datei (z. B. eine Datenbank) zur selben Zeit geschrieben wird, während der Snapshot erstellt wird, so wird diese Datei beschädigt oder nur teilweise geschrieben. Beim Wiederherstellen dieser Datei treten Probleme auf. Es wird daher dringend empfohlen, die Liste der geänderten Dateien und ihrer Unterschiede (Diffs) in jedem Fall sorgfältig zu prüfen. Stellen Sie nur solche Dateien wieder her, die tatsächlich zu der Aktion gehören, für die das Rollback vorgenommen werden soll.
In der Regel befindet sich das Verzeichnis /home auf einer separaten Partition. Eine solche separate Partition gehört nicht zur Standardkonfiguration für YaST-Rollbacks. Aus diesem Grund wird die Home-Partition des Benutzers nicht gelöscht, wenn das Hinzufügen eines Benutzers mit Snapper rückgängig gemacht wird. Für das Entfernen von Benutzern wird dringend das YaST-Werkzeug empfohlen.
/boot und Bootloadern¶
Zurzeit kann SUSE Linux Enterprise Server nicht von Btrfs-Partitionen gebootet werden. Bei der Installation wird daher eine separate Partition für /boot angelegt, wenn Sie Btrfs für die Systempartition verwenden. Da /boot keine Snapshots unterstützt, gelten die folgenden Einschränkungen für YaST-/zypper-Rollbacks:
Die einzige Datei, für die ein Rollback durchgeführt werden kann, ist die Bootloader-Konfigurationsdatei in /etc. Die Hauptkonfigurationsdateien befinden sich in /boot, und ein Rollback für diese Dateien ist nicht möglich.
Der Kernel selbst und initrd werden in der /boot-Partition, intalliert, die Kernel-Module und -Quellen dagegen in /var/lib bzw. /usr/src. Bei jeder Kernel-Installation werden außerdem die Bootloader-Konfigurationsdateien in /boot geändert. Wenn Sie also ein Rollback vornehmen, bei dem eine Kernel-Installation rückgängig gemacht werden soll, müssen Sie den Kernel und initrd manuell von /boot entfernen und den Boot-Eintrag für den Kernel aus der Bootloader-Konfiguration löschen.
/var/log, /tmp und anderen Verzeichnissen an?
Für einige Verzeichnisse wurde das Anfertigen von „Snapshots“ bewusst deaktiviert, beispielsweise für /var/log, da das Rückgängigmachen von Protokollen die Suche nach Problemen erschweren würde. Sollen für einen Pfad keine „Snapshots“ angefertigt werden, legen Sie ein Subvolume für diesen Pfad an. Die folgenden Einhängepunkte werden beim Anfertigen von „Snapshots“ auf SUSE Linux Enterprise Server nicht berücksichtigt:
/opt
/srv
/tmp
/var/crash
/var/log
/var/run
/var/spool
/var/tmp
Dies ist zurzeit nicht möglich. Der Bootloader auf SUSE Linux Enterprise Server bietet zurzeit keine Unterstützung für das Booten von einer Btrfs-Partition.
Neben Snapshots auf Btrfs-Dateisystemen unterstützt Snapper auch das Anfertigen von „Snapshots“ auf Thin Provisioned LVM-Volumes (Snapshots auf normalen LVM-Volumes werden nicht unterstützt), die mit ext3 oder XFS formatiert sind. Weitere Informationen sowie Anweisungen zur Einrichtung finden Sie unter Abschnitt „LVM-Konfiguration“ (Kapitel 15, Fortgeschrittene Festplattenkonfiguration, ↑Bereitstellungshandbuch).
Um Snapper auf einem Thin Provisioned LVM-Volume zu nutzen, müssen Sie eine Snapper-Konfiguration für dieses Volume erstellen. Auf LVM muss das Dateisystem mit --fstype=lvm( angegeben werden. Zurzeit werden ext3 und XFS unterstützt; FILESYSTEM)ext3 und xfs sind damit gültige Werte für FILESYSTEM. Beispiel:
snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm
Sie können diese Konfiguration gemäß den Anweisungen unter Abschnitt 4.2.3.1, „Anpassen der Konfigurationsdatei“ an Ihre Anforderungen anpassen. Nun können Sie mit Snapper arbeiten und dabei Snapshots erstellen und verwalten, Dateien wiederherstellen und Änderungen rückgängig machen.