7.1 Standardeinrichtung

Snapper unter SUSE Linux Enterprise Desktop wird als Werkzeug zum Rückgängigmachen und Wiederherstellen von Systemänderungen eingerichtet. Standardmäßig ist die Root-Partition (/) von SUSE Linux Enterprise Desktop mit Btrfs formatiert. Das Anfertigen von Snapshots wird automatisch aktiviert, wenn die Root-Partition (/) groß genug ist (ungefähr mehr als 16 GB). Das Anfertigen von Snapshots auf anderen Partitionen (abgesehen von /) ist standardmäßig nicht aktiviert.

TIPP: Aktivieren von Snapper im installierten System

Wenn Sie Snapper während der Installation deaktiviert haben, können Sie dieses Werkzeug später jederzeit wieder aktivieren. Erstellen Sie hierzu eine Snapper-Standardkonfiguration für das Root-Dateisystem mit

sudo snapper -c root create-config /

Aktivieren Sie dann die verschiedenen Snapshot-Typen gemäß den Anweisungen unter Deaktivieren/Aktivieren von Snapshots.

Denken Sie daran, dass für Snapshots ein Btrfs-Root-Dateisystem erforderlich ist, dessen Subvolumes gemäß den Vorschlägen des Installationsprogramms und mit einer Partitionsgröße von mindestens 16 GB eingerichtet werden müssen.

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!

HINWEIS: Position der Snapshots

Snapshots befinden sich stets auf der Partition oder dem Subvolume, auf dem der Snapshot aufgenommen 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. Um zu verhindern, dass es zu wenig Speicherplatz gibt, werden alte Snapshots automatisch bereinigt. Weitere Informationen finden Sie unter Steuern der Snapshot-Archivierung.

7.1.1 Typen von Snapshots

Die Snapshots an sich unterscheiden sich streng genommen nicht voneinander, werden allerdings dennoch gemäß dem Grund ihrer Erstellung in drei Snapshot-Typen gegliedert:

Zeitleisten-Snapshots

In Abständen von einer Stunde wird ein einzelner Snapshot erstellt. Alte Snapshots werden automatisch gelöscht. Standardmäßig wird der erste Snapshot der letzten zehn Tage, Monate und Jahre beibehalten. Zeitleisten-Snapshots sind standardmäßig deaktiviert.

Installations-Snapshots

Wenn Sie ein oder mehrere Pakete mit YaST oder zypper installieren, wird ein Snapshot-Paar erstellt: ein Snapshot vor Beginn der Installation (Pre) und ein zweiter Snapshot nach Abschluss der Installation (Post). Wird eine wichtige Systemkomponente installiert (z. B. der Kernel), wird das Snapshot-Paar als wichtig gekennzeichnet (important=yes). Alte Snapshots werden automatisch gelöscht. Standardmäßig werden die letzten zehn wichtigen Snapshots und die letzten zehn normalen Snapshots (auch Verwaltungs-Snapshots) beibehalten. Installations-Snapshots sind standardmäßig aktiviert.

Verwaltungs-Snapshots

Wenn Sie die Verwaltung eines Systems mit YaST vornehmen, wird ein Snapshot-Paar erstellt: ein Snapshot beim Starten eines YaST-Moduls (Pre) und ein zweiter Snapshot beim Schließen des Moduls (Post). Alte Snapshots werden automatisch gelöscht. Standardmäßig werden die letzten zehn wichtigen Snapshots und die letzten zehn normalen Snapshots (auch Installations-Snapshots) beibehalten. Verwaltungs-Snapshots sind standardmäßig aktiviert.

7.1.2 Verzeichnisse, die aus Snapshots ausgenommen sind

Bestimmte Verzeichnisse müssen aus verschiedenen Gründen aus den Snapshots ausgenommen werden. Die folgende Liste zeigt alle ausgeschlossenen Verzeichnisse:

/boot/grub2/i386-pc, /boot/grub2/x86_64-efi, /boot/grub2/powerpc-ieee1275, /boot/grub2/s390x-emu

Ein Rollback der Bootloader-Konfiguration wird nicht unterstützt. Die obigen Verzeichnisse sind abhängig von der Architektur. Die ersten beiden Verzeichnisse gelten für AMD64-/Intel-64-Computer und die letzten beiden Verzeichnisse für IBM POWER bzw. für IBM z Systems.

/home

Wenn /home sich nicht auf einer separaten Partition befindet, wird dieses Verzeichnis ausgeschlossen, damit bei einem Rollback kein Datenverlust eintritt.

/opt, /var/opt

Produkte von Drittanbietern werden in der Regel in /opt installiert. Dieses Verzeichnis wird ausgeschlossen, damit die betreffenden Anwendungen bei einem Rollback nicht deinstalliert werden.

/srv

Enthält Daten für Web- und FTP-Server. Ausgeschlossen, damit bei einem Rollback kein Datenverlust eintritt.

/tmp, /var/tmp, /var/cache, /var/crash

Alle Verzeichnisse, die temporäre Dateien und Caches enthalten, werden aus den Snapshots ausgeschlossen.

/usr/local

Dieses Verzeichnis wird bei der manuellen Installation von Software verwendet. Dieses Verzeichnis wird ausgeschlossen, damit die betreffenden Installationen bei einem Rollback nicht deinstalliert werden.

/var/lib/libvirt/images

Die Standardposition für Images von virtuellen Rechnern, die mit libvirt verwaltet werden Dieses Verzeichnis wird ausgeschlossen, damit bei einem Rollback keine Images von virtuellen Rechnern durch ältere Versionen ersetzt werden. Standardmäßig wird dieses Subvolume mit der Option no copy on write (keine Kopie beim Schreibvorgang) erstellt.

/var/lib/mailman, /var/spool

Verzeichnisse, die Emails oder Email-Warteschlangen enthalten, werden ausgeschlossen, damit kein Email-Verlust nach einem Rollback eintritt.

/var/lib/named

Enthält Zonendaten für den DNS-Server. Aus den Snapshots ausgeschlossen, damit ein Nameserver auch nach einem Rollback noch funktionsfähig ist.

/var/lib/mariadb, /var/lib/mysql, /var/lib/pgqsl

Diese Verzeichnisse enthalten Datenbankdaten. Standardmäßig werden diese Subvolumes mit der Option no copy on write (keine Kopie beim Schreibvorgang) erstellt.

/var/log

Standort der Protokolldatei. Aus den Snapshots ausgeschlossen, damit die Protokolldateien auch nach dem Rollback eines fehlerhaften Systems noch analysiert werden können.

7.1.3 Anpassen der Einrichtung

Die Standardeinrichtung von SUSE Linux Enterprise Desktop deckt die meisten Anwendungsfälle ab. Sie haben jedoch die Möglichkeit, alle Aspekte beim Anfertigen und Beibehalten der Snapshots ganz nach Ihren Anforderungen zu konfigurieren.

Deaktivieren/Aktivieren von Snapshots

Die drei Snapshot-Typen (Zeitleiste, Installation, Administration) können unabhängig voneinander einzeln aktiviert oder deaktiviert werden.

Deaktivieren/Aktivieren von Zeitleisten-Snapshots

Aktivieren snapper-c root set-config "TIMELINE_CREATE=yes"

Deaktivieren snapper -c root set-config "TIMELINE_CREATE=no"

Mit Ausnahme der Root-Partition sind Zeitleisten-Snapshots standardmäßig aktiviert.

Deaktivieren/Aktivieren von Installations-Snapshots

Aktivieren: Installieren Sie das Paket snapper-zypp-plugin.

Deaktivieren: Deinstallieren Sie das Paket snapper-zypp-plugin

Installations-Snapshots sind standardmäßig aktiviert.

Deaktivieren/Aktivieren von Administrations-Snapshots

Aktivieren: Stellen Sie USE_SNAPPER in /etc/sysconfig/yast2 auf yes ein.

Deaktivieren: Stellen Sie USE_SNAPPER in /etc/sysconfig/yast2 auf no ein.

Administrations-Snapshots sind standardmäßig aktiviert.

Steuern von Installations-Snapshots

Das Anfertigen von Snapshot-Paaren beim Installieren von Paketen mit YaST oder Zypper erfolgt mit snapper-zypp-plugin. Die XML-Konfigurationsdatei /etc/snapper/zypp-plugin.conf definiert den Zeitpunkt, an dem die Snapshots erstellt werden sollen. Standardmäßig sieht die Datei folgendermaßen aus:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <snapper-zypp-plugin-conf>
 3  <solvables>
 4   <solvable match="w" important="true">kernel-*</solvable>
 5   <solvable match="w" important="true">dracut</solvable>
 6   <solvable match="w" important="true">glibc</solvable>
 7   <solvable match="w" important="true">systemd*</solvable>
 8   <solvable match="w" important="true">udev</solvable>
 9   <solvable match="w">*</solvable>
10  </solvables>
11 </snapper-zypp-plugin-conf>

Das Übereinstimmungsattribut definiert, ob das Schema eine Wildcard im Unix-Shell-Format (w) oder ein regulärer Python-Ausdruck (re) ist.

Wenn für das angegebene Schema eine Übereinstimmung vorliegt und das entsprechende Paket als wichtig gekennzeichnet ist (z. B. Kernel-Pakete), wird der Snapshot ebenfalls als wichtig gekennzeichnet.

Schema, das mit einem Paketnamen abgeglichen werden soll. Gemäß der Einstellung für das Attribut match werden Sonderzeichen entweder als Shell-Wildcards oder als reguläre Ausdrücke interpretiert. Dieses Schema stimmt mit allen Paketnamen überein, die mit kernel- beginnen.

Mit dieser Zeile werden alle Pakete als übereinstimmend eingestuft.

Bei dieser Konfiguration werden Snapshot-Paare angefertigt, sobald ein Paket installiert wird (Zeile 9). Wenn Kernel-, dracut-, glibc-, systemd- oder udev-Pakete installiert werden, die als wichtig gekennzeichnet sind, wird auch das Snapshot-Paar als wichtig gekennzeichnet (Zeile 4 bis 8). Alle Regeln werden ausgewertet.

Zum Deaktivieren einer Regel können Sie die betreffende Regel löschen oder mithilfe von XML-Kommentaren deaktivieren. Wenn das System beispielsweise keine Snapshot-Paare für alle Paketinstallationen anfertigen soll, kommentieren Sie Zeile 9 aus:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <snapper-zypp-plugin-conf>
 3  <solvables>
 4   <solvable match="w" important="true">kernel-*</solvable>
 5   <solvable match="w" important="true">dracut</solvable>
 6   <solvable match="w" important="true">glibc</solvable>
 7   <solvable match="w" important="true">systemd*</solvable>
 8   <solvable match="w" important="true">udev</solvable>
 9   <!-- <solvable match="w">*</solvable> -->
10  </solvables>
11 </snapper-zypp-plugin-conf>

Erstellen und Einhängen neuer Subvolumes

Das Erstellen eines neuen Subvolumes unter der /-Hierarchie und das dauerhafte Einhängen dieses Subvolumes werden unterstützt. Ein solches Subvolume wird in den Snapshots nicht berücksichtigt. Das Subvolume darf nicht in einem vorhandenen Snapshot angelegt werden, da Sie dann nach einem Rollback keine Snapshots mehr löschen könnten.

SUSE Linux Enterprise Desktop ist mit dem Subvolume /@/ konfiguriert, das als unabhängiger Root für dauerhafte Subvolumes wie /opt, /srv oder /home fungiert. Alle erstellten und dauerhaft eingehängten Subvolumes müssen in diesem anfänglichen Root-Dateisystem erstellt werden.

Führen Sie hierzu die nachfolgenden Befehle aus. In diesem Beispiel wird das neue Subvolume /usr/important aus /dev/sda2 erstellt.

sudo mount /dev/sda2 -o subvol=@ /mnt
sudo btrfs subvolume create /mnt/usr/important
sudo umount /mnt

Der zugehörige Eintrag in /etc/fstab muss dabei wie folgt lauten (Beispiel):

/dev/sda2 /usr/important btrfs subvol=@/usr/important 0 0

TIPP: Deaktivieren des Copy-on-Write-Verfahrens (COW)

Ein Subvolume kann Dateien enthalten, die sich fortwährend ändern, z. B. virtualisierte Festplatten-Images, Datenbankdateien oder Protokolldateien. Wenn dies der Fall ist, sollten Sie die Copy-on-Write-Funktion für dieses Volume deaktivieren, damit die Festplattenblöcke nicht dupliziert werden. Geben Sie hierzu die Einhängeoption nodatacow in /etc/fstab an:

/dev/sda2 /usr/important btrfs nodatacow,subvol=@/usr/important 0 0

Mit dem Befehl chattr +C PATH können Sie das Copy-on-Write-Verfahren alternativ für einzelne Dateien oder Verzeichnisse deaktivieren.

Steuern der Snapshot-Archivierung

Snapshots belegen Speicherplatz auf der Festplatte. Damit keine Systemfehler wegen mangelnden Festplattenspeichers auftreten, werden alte Snapshots automatisch gelöscht. Standardmäßig werden zehn wichtige Installations- und Verwaltungs-Snapshots und bis zu zehn normale Installations- und Verwaltungs-Snapshots beibehalten. Wenn diese Snapshots mehr als 50 % des Root-Dateisystems einnehmen, werden zusätzliche Snapshots gelöscht. Mindestens vier wichtige und zwei normale Snapshots werden immer beibehalten.

Anweisungen zum Ändern dieser Werte finden Sie in Abschnitt 7.4.1, Verwalten vorhandener Konfigurationen.

Verwenden von Snapper auf Thin Provisioned LVM-Volumes

Neben Snapshots auf Btrfs-Dateisystemen unterstützt Snapper auch das Anfertigen von Snapshots auf LVM-Volumes mit Thin-Provisioning (Snapshots auf normalen LVM-Volumes werden nicht unterstützt), die mit XFS, Ext4 oder Ext3 formatiert sind. Weitere Informationen zu LVM-Volumes sowie Anweisungen zum Einrichten dieser Volumes finden Sie im Abschnitt 8.2, LVM-Konfiguration, (↑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(FILESYSTEM) angegeben werden. Zulässige Werte für FILESYSTEM sind ext3, etx4 und xfs. Beispiel:

sudo snapper -c lvm create-config --fstype="lvm(xfs)" /thin_lvm

Sie können diese Konfiguration gemäß den Anweisungen unter Abschnitt 7.4.1, Verwalten vorhandener Konfigurationen an Ihre Anforderungen anpassen.