Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
Bezieht sich auf SUSE Linux Enterprise Server 11 SP4

4 Snapshots/Rollback mit Snapper

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 unter 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.

4.1 Anforderungen

Btrfs bietet als einziges Dateisystem unter 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.

4.1.1 Snapshots und Festplattenspeicher

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!

Anmerkung
Anmerkung: 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.

Tipp
Tipp: Freigeben von Speicherplatz/Belegung des Festplattenspeichers

Um Speicherplatz auf einer Btrfs-Partition mit Snapshots freizugeben, müssen Sie keine Dateien löschen, sondern die nicht mehr benötigten Snapshots. Ältere Snapshots belegen mehr Speicherplatz als neuere Snapshots.

Da das Kommando df nicht die richtige Menge an belegtem Speicherplatz auf Btrfs-Dateisystemen angibt, müssen Sie das Kommando btrfs filesystem df MOUNT_POINT verwenden. Die Btrfs-Werkzeuge unterstützen zurzeit noch nicht die Anzeige des Speicherplatzes, der von einem Snapshot belegt wird.

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“).

4.2 Rückgängigmachen von Systemänderungen mit Snapper

Snapper unter 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.

4.2.1 Rückgängigmachen von Änderungen durch YaST oder Zypper

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.

Wichtig
Wichtig: 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“.

Anmerkung
Anmerkung: 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 Snapper-Modul in YaST
  1. Starten Sie das Snapper-Modul im Abschnitt Verschiedenes in YaST, oder geben Sie yast2 snapper ein.

  2. Unter Aktuelle Konfiguration muss die Option root eingestellt sein. Dies ist im Prinzip immer der Fall, sofern Sie nicht eigene Snapper-Konfigurationen manuell hinzugefügt haben.

  3. Wählen Sie ein Pre-/Post-Snapshot-Paar aus der Liste aus. Sowohl die YaST als auch die Zypper-Snapshot-Paare sind vom Typ Pre & Post. Für YaST-Snapshots wird die Bezeichnung yast Modulname in der Spalte „Beschreibung“ angezeigt, für zypper-Snapshots die Bezeichnung zypp(zypper).

  4. Klicken Sie auf Änderungen anzeigen. 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.

  5. 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.

  6. Zum Wiederherstellen einer Reihe von Dateien aktivieren Sie das entsprechende Kontrollkästchen für die gewünschten Dateien oder Verzeichnisse. Klicken Sie auf Auswahl wiederherstellen, und bestätigen Sie den Vorgang mit Ja.

    Zum Wiederherstellen einer einzelnen Datei klicken Sie auf den Namen dieser Datei. Die Diff-Ansicht der Datei wird aktiviert. Klicken Sie auf Vom ersten wiederherstellen, und bestätigen Sie mit Ja.

Prozedur 4.2: Rückgängigmachen von Änderungen mit dem Kommando snapper
  1. 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 Modulname in der Spalte „Beschreibung“ angezeigt, für zypper-Snapshots die Bezeichnung zypp(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)
  2. 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 c 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
  3. 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
         +##
  4. 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

4.2.2 Wiederherstellen von Dateien aus stündlichen Sicherungen mit Snapper

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 Snapper-Modul in YaST“ oder Prozedur 4.2, „Rückgängigmachen von Änderungen mit dem Kommando snapper.

Anmerkung
Anmerkung: 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“.

4.2.3 Erstellen und Bearbeiten von Snapper-Konfigurationen

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 Snapper-Modul in YaST. In YaST wählen Sie die Aktuelle Konfiguration 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-data1 create-config
   /srv/www2

1

Der Name der Konfigurationsdatei.

2

Einhängepunkt für die Partition oder das Btrfs-Subvolume am Snapshot.

Mit diesem Kommando erstellen Sie eine neue Konfigurationdsdatei /etc/snapper/config-templates/www-data mit geeigneten Standardwerten (aus /etc/snapper/config-templates/default übernommen).

Tipp
Tipp: Standardwerte für die Konfiguration

Die Standardwerte für eine neue Konfiguration werden aus /etc/snapper/config-templates/default übernommen. Sollen eigene Standardwerte verwendet werden, erstellen Sie eine Kopie dieser Datei in demselben Verzeichnis, und passen Sie diese Kopie gemäß Ihren Anforderungen an. Geben Sie dann die Option -t option für das Kommando create-config an:

snapper -c www-data create-config -t my_defaults /srv/www

4.2.3.1 Anpassen der Konfigurationsdatei

Die Konfigurationsdatei lässt sich in einem Editor bearbeiten. Hier befinden sich Schlüssel-Wert-Paare im Format Schlüssel=Wert. Sie können lediglich den Wert 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

Anmerkung
Anmerkung: Grenzwert und Alter

NUMBER_LIMIT und NUMBER_MIN_AGE werden stets gemeinsam ausgewertet. Die Snapshots werden nur dann gelöscht, wenn beide Bedingungen erfüllt sind. Wenn stets eine bestimmte Anzahl von Snapshots unabhängig von ihrem Alter beibehalten werden soll, setzen Sie NUMBER_MIN_AGE auf 0. Sollen umgekehrt Snapshots nicht über ein bestimmtes Alter hinaus beibehalten werden, setzen Sie NUMBER_LIMIT auf 0.

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 TIMELINE_LIMIT_* angegebene Anzahl und das mit 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.

4.2.3.2 Verwenden von Snapper als normaler Benutzer

Standardmäßig kann Snapper nur von 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 von root ausgeführt werden müssen.

  1. 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
  2. Die Konfigurationsdatei wird unter /etc/snapper/configs/NAME angelegt, wobei NAME dem Wert entspricht, den Sie im vorherigen Schritt mit -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“).

  3. 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"
  4. 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

4.2.4 Deaktivieren der automatischen Snapshots

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:

Deaktivieren der stündlichen Snapshots

Bearbeiten Sie /etc/snapper/configs/root, und setzen Sie TIMELINE_CREATE auf no:

TIMELINE_CREATE="no"
Deaktivieren der zypper-Snapshots

Deinstallieren Sie das Paket snapper-zypp-plugin

Deaktivieren der YaST-Snapshots

Bearbeiten Sie /etc/sysconfig/yast2, und setzen Sie USE_SNAPPER auf no:

USE_SNAPPER="no"

4.3 Manuelles Erstellen und Verwalten von Snapshots

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ü Aktuelle Konfiguration in YaST, oder geben Sie den Schalter -c in der Kommandozeile an (snapper -c MYCONFIG COMMAND).

4.3.1 Snapshot-Metadaten

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“.

4.3.1.1 Snapshot-Typen

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.

Einzeln

Eigenständiger Snapshot. Wird beispielsweise für die automatischen stündlichen Snapshots verwendet. Dies ist der Standardtyp beim Erstellen von Snapshots.

4.3.1.2 Bereinigungsalgorithmen

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“).

Zahl

Löscht alte Snapshots, sobald eine bestimmte Anzahl von Snapshots erreicht wird.

Zeitleiste

Löscht Snapshots, die ein bestimmtes Alter erreicht haben; hierbei wird allerdings eine Reihe von stündlichen, täglichen, monatlichen und jährlichen Snapshots beibehalten.

empty-pre-post (Leer-Pre-Post)

Löscht Pre-/Post-Snapshot-Paare, zwischen denen keine Unterschiede (Diffs) bestehen.

4.3.2 Erstellen von Snapshots

Zum Erstellen eines Snapshots führen Sie snapper create aus, oder klicken Sie im Snapper-Modul in YaST auf Erstellen. In den nachfolgenden Beispielen wird erläutert, wie Sie Snapshots über die Kommandozeile erstellen. Die Anpassung ist über die YaST-Oberfläche ganz einfach.

Tipp
Tipp: 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.

snapper create --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.

snapper --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.

snapper --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.

snapper create --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.

snapper create --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.

snapper create --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.

4.3.3 Bearbeiten von Snapshot-Metadaten

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 Snapper-Modul in YaST werden bereits alle Snapshots aufgelistet. Wählen Sie einen Eintrag in der Liste, und klicken Sie auf Bearbeiten.

snapper modify --cleanup-algorithm "Zeitleiste" 10

Bearbeitet die Metadaten von Snapshot 10 für die Standardkonfiguration (root). Der Bereinigungsalgorithmus ist mit Zeitleiste festgelegt.

snapper --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.

4.3.4 Löschen von Snapshots

Zum Löschen eines Snapshots mit dem Snapper-Modul in YaST wählen Sie den gewünschten Snapshot in der Liste aus, und klicken Sie auf Löschen.

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.

Tipp
Tipp: Löschen von Snapshot-Paaren

Wenn Sie einen Pre-Snapshot löschen, müssen Sie auch den zugehörigen Post-Snapshot löschen (und umgekehrt).

snapper delete 65

Löscht Snapshot 65 für die Standardkonfiguration (root).

snapper -c home delete 89 90

Löscht Snapshots 89 und 90 für die benutzerdefinierte Konfiguration home.

Tipp
Tipp: 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“.

4.4 Einschränkungen

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.

4.4.1 Datenkonsistenz

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.

4.4.2 Rückgängigmachen des Hinzufügens von Benutzern

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 Benutzer- und Gruppenverwaltung empfohlen.

4.4.3 Kein Rollback bei Änderungen an /boot und Bootloadern

Derzeit kann SUSE Linux Enterprise Server nicht von einer Btrfs-Partition booten. 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:

Kein Rollback von Konfigurationsänderungen am Bootloader

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.

Kein vollständiges Rollback für Kernel-Installationen

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.

4.5 Häufig gestellte Fragen

Warum zeigt Snapper keine Änderungen in /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 unter SUSE Linux Enterprise Server nicht berücksichtigt:

  • /opt

  • /srv

  • /tmp

  • /var/crash

  • /var/log

  • /var/run

  • /var/spool

  • /var/tmp

Kann ich einen Snapshot über den Bootloader booten?

Dies ist zurzeit nicht möglich. Der Bootloader unter SUSE Linux Enterprise Server bietet zurzeit keine Unterstützung für das Booten von einer Btrfs-Partition.

4.6 Verwenden von Snapper auf Thin Provisioned LVM-Volumes

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 15.2, „LVM-Konfiguration“.

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(FILESYSTEM) angegeben werden. Zurzeit werden ext3 und XFS unterstützt; 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.

Diese Seite drucken