Die grundlegenden Konzepte von Snapper
- WAS?
In diesem Artikel werden die grundlegenden Konzepte des Snapper-Tools beschrieben, das zum Erstellen und Verwalten von Btrfs-Dateisystem-Snapshots verwendet wird.
- WARUM?
Dieser Artikel bietet einen grundlegenden Überblick über Snapper, die unterstützten Schnittstellen und die wichtigsten Anwendungsbereiche. Er enthält auch Informationen über die Standardeinstellungen für Snapshots in SUSE Linux Enterprise Server.
- AUFWAND
Es dauert bis zu 20 Minuten, um Snapper und seine Standardeinrichtung zu verstehen.
- ANFORDERUNGEN
root- odersudo-RechteSnapper muss installiert werden. Er ist standardmäßig in SUSE Linux Enterprise Server verfügbar.
Eine Größe der Root-Partition (
/) von mindestens 16 GB. Die Größe der Root-Partition hängt vom Produkt ab. Wir empfehlen dringend 50 GB oder mehr.
Dieser Artikel ist der erste Teil der Artikelserie über Snapper. In den folgenden Artikeln behandeln wir häufige Anwendungsfälle wie das Rückgängigmachen von Änderungen, das Zurücksetzen des Systems, das manuelle Erstellen und Verwalten von Snapshots, die automatische Bereinigung von Snapshots und vieles mehr. Jeder Artikel baut auf dem Wissen aus den vorherigen Artikeln auf und bietet ein schrittweise verbessertes Verständnis des Snapper-Tools.
1 Grundlegende Konzepte von Btrfs-Subvolumes und Snapshots #
Btrfs-Subvolumes sind separat einhängbare Dateisysteme in einer physischen Partition. Das Btrfs-Dateisystem ist standardmäßig mit Subvolumes eingerichtet. Snapshots in Btrfs sind eine Art von Subvolume, das Daten mit einem anderen Subvolume teilt. Sie werden mit den Copy-on-Write-Funktionen von Btrfs erstellt, wodurch sie schnell und mit minimalem Speicherplatzverbrauch erstellt werden können. Snapshots können verwendet werden, um den Zustand eines Dateisystems zu einem bestimmten Zeitpunkt zu erfassen und bei Bedarf auf einen früheren Zustand zurückzusetzen.
Ein Btrfs-Subvolume verfügt über eine eigene, unabhängige Datei- und Verzeichnishierarchie. Im Gegensatz zu logischen LVM-Volumes, die auf Blockebene arbeiten, basieren Btrfs-Subvolumes auf Dateierweiterungen. Ein Snapshot wird auch als Subvolume betrachtet, das den ursprünglichen Inhalt des ursprünglichen Subvolumes enthält. Subvolumes erscheinen als Verzeichnisse und können wie jedes andere Verzeichnis bearbeitet werden, einschließlich Umbenennen oder Verschieben.
Einer der Hauptzwecke von Subvolumes besteht darin, explizit in Snapshots ein- oder ausgeschlossen zu werden. Wenn wir einen Snapshot verwenden, um das System zurückzusetzen, müssen wir sicherstellen, dass Daten wie die Basisverzeichnisse der Benutzer, Web- und FTP-Serverinhalte oder Protokolldateien während eines Rollbacks nicht verloren gehen oder überschrieben werden. Dies wird erreicht, indem bestimmte Btrfs-Subvolumes aus Snapshots ausgeschlossen werden. Weitere Informationen und die Liste der ausgeschlossenen Subvolumes finden Sie unter Abschnitt 3.3, „Verzeichnisse, die aus Snapshots ausgenommen sind“.
2 Was ist Snapper? #
Snapper ist ein Tool, mit dem Sie Dateisystem-Snapshots erstellen und verwalten können. Durch Dateisystem-Snapshots kann eine Kopie des Zustands eines Dateisystems zu einem bestimmten Zeitpunkt beibehalten werden. Snapper kann Snapshots erstellen und vergleichen, Snapshots zurücksetzen und automatische Snapshot-Zeitachsen unterstützen. Snapper ändert nie den Inhalt von Snapshots.
Die Standardeinrichtung von Snapper lässt ein Rollback von Systemänderungen zu. Sie können es jedoch auch zum Erstellen von Sicherungen der Benutzerdaten auf Wechseldatenträgern verwenden. Als Grundlage für diese Funktionalität verwendet Snapper zwei Arten von Dateisystemen:
Btrfs, ein Copy-on-Write-Betriebssystem für Linux, das nativ Dateisystem-Snapshots von Subvolumes unterstützt.
LVM-Volumes mit Thin Provisioning formatiert mit XFS und ext4.
Sie können auch von Btrfs-Snapshots booten.
2.1 Funktionsweise von Snapper #
Snapper verfügt über eine Befehlszeilenschnittstelle, mit der Sie Snapshots erstellen, löschen und vergleichen sowie zwischen Snapshots vorgenommene Änderungen rückgängig machen können.
Mit Snapper können die folgenden Aufgaben ausgeführt werden:
Rückgängigmachen von Systemänderungen, die von
zyppervorgenommen wurden.Dateien aus früheren Snapshots wiederherstellen.
System-Rollback durch Booten aus einem Snapshot vornehmen.
Im laufenden System manuell Snapshots erstellen und verwalten.
Automatische Snapshot-Bereinigung durchführen.
2.2 Typen von Snapshots #
Es gibt zwei Aspekte, nach denen Snapshots klassifiziert werden können: nach dem auslösenden Ereignis des Snapshots und nach dem Zeitpunkt der Snapshot-Erstellung.
Die Snapshots an sich unterscheiden sich streng genommen nicht voneinander, werden allerdings dennoch gemäß den Ereignissen, die sie ausgelöst haben, in drei Snapshot-Typen gegliedert.
- Installations-Snapshots
Jedes Mal, wenn ein oder mehrere Pakete installiert werden, werden auf diese Weise Snapshots erstellt:
Snapshot
0 singleist in Snapper immer vorhanden. Er bezieht sich immer auf den aktuellen Systemzustand, wie er in der SpalteDescriptionangegeben ist. Dieser Snapshot erfasst den Zustand des Systems unmittelbar nach Abschluss des Installationsvorgangs.Der Snapshot
1 singlefür die Root-Partition (/) wird automatisch mit dem Namenfirst root filesystemerstellt. Dieser Snapshot wird nach der ersten Reihe von Systemaktualisierungen oder -konfigurationen erstellt.Der Snapshot
2 singlewird automatisch mit dem Namenafter installationerstellt. Dieser Snapshot wird gegen Ende des Installationsprozesses erstellt und alsimportantgekennzeichnet. Er stellt den Zustand des Systems dar, nachdem alle anfänglichen Einstellungen abgeschlossen sind.
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. Um Installations-Snapshots manuell zu deaktivieren, deinstallieren Sie das Paket snapper-zypp-plugin.
- Verwaltungs-Snapshots
Immer wenn Sie Änderungen am System vornehmen, wird ein Snapshot-Paar erstellt: ein Snapshot vor der Systemänderung („pre“) und ein weiterer nach der Systemänderung („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. Administrations-Snapshots sind standardmäßig aktiviert.
- Zeitleisten-Snapshots
In Abständen von einer Stunde wird ein einzelner Snapshot erstellt. Mit Ausnahme des Root-Dateisystems sind Zeitleisten-Snapshots standardmäßig aktiviert. Die Standardintervalle für Zeitleisten-Snapshots sind stündlich, täglich, wöchentlich, monatlich und jährlich. Um diese Intervalle zu ändern, müssen Benutzer die systemd-Timer von Snapper direkt ändern, da dies nicht in Snapper selbst konfiguriert werden kann. Alte Snapshots werden automatisch gelöscht. Standardmäßig wird der erste Snapshot der letzten zehn Tage, Monate und Jahre beibehalten.
Die Snapshot-Typen für Installation und Verwaltung gelten nicht für transaktionale Systeme.
Zeitleisten- und Verwaltungs-Snapshots können unabhängig voneinander aktiviert oder deaktiviert werden.
Bei Verwaltungs- und Installations-Snapshots erkennt Snapper drei verschiedene Typen: Pre-, Post- und Single-Snapshots. Diese unterscheiden sich physisch nicht, sie werden jedoch in Snapper unterschiedlich behandelt.
-
pre Snapshot eines Dateisystems vor einer Änderung. Jeder Nachher-Snapshot (
pre) entspricht einem Vorher-Snapshot (post). Dies wird beispielsweise für automatische Snapshots verwendet.-
post Snapshot eines Dateisystems nach einer Änderung. Jeder Nachher-Snapshot (
post) entspricht einem Vorher-Snapshot (pre). Dies wird beispielsweise für automatische Snapshots verwendet.-
single Eigenständiger Snapshot. Dies wird beispielsweise für automatische stündliche Snapshots verwendet. Dies ist der Standardtyp beim Erstellen von Snapshots.
Dies ist die Liste der Snapshots direkt nach einer Neuinstallation eines Systems mit einer Root-Partition > 16 GB:
# | Type | Pre # | Date | User | Used Space | Cleanup | Description | Userdata -----+--------+-------+--------------------------+------+------------+---------+-----------------------+-------------- 0 | single | | | root | | | current | 1 | single | | Thu Mar 24 12:14:34 2022 | root | 32.44 MiB | | first root filesystem | 2 | single | | Thu Mar 24 12:25:55 2022 | root | 280.40 MiB | number | after installation | important=yes 45 | pre | | Mon Apr 25 17:58:45 2022 | root | 27.52 MiB | number | zypp(zypper) | important=yes 46 | post | 45 | Mon Apr 25 18:00:07 2022 | root | 39.04 MiB | number | | important=yes
2.3 Erstellen von Snapshots #
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.
Snapshots befinden sich stets auf der Partition oder dem Subvolume, auf dem der Snapshot aufgenommen wurde. Es ist nicht möglich, Snapshots auf einem anderen Dateisystem zu speichern.
Folglich müssen Partitionen mit Snapshots größer sein als Partitionen ohne Snapshots. Die genaue Speichermenge ist dabei stark abhängig von der Anzahl der Snapshots und vom Umfang der Änderungen an den Daten. Als Faustregel sollten Sie für diese Partitionen doppelt so viel Speicherplatz vorsehen wie normalerweise. Um zu verhindern, dass es zu wenig Speicherplatz gibt, werden alte Snapshots automatisch bereinigt.
3 Snapper-Standardeinrichtung #
Erfahren Sie mehr über die Standardkonfiguration von Snapper und die Standardeinstellungen.
Snapper wird als Werkzeug zum Rückgängigmachen und Wiederherstellen von Systemänderungen eingerichtet. Standardmäßig ist die Root-Partition (/) von SUSE Linux Enterprise Server mit Btrfs formatiert. Das Erstellen von Snapshots wird automatisch aktiviert, wenn die root-Partition (/) groß genug ist (mehr als ca. 16 GB). Snapshots auf anderen Partitionen als / werden standardmäßig deaktiviert.
Es wird nicht empfohlen, Snapshots manuell zu aktivieren, nachdem das System mit Snapshots installiert wurde. Das Aktivieren von Snapper nach der Installation führt zu einer anderen Einrichtung als hier beschrieben.
Die Größe der Root-Partition ist produktspezifisch. Um den Speicherplatz zu ermitteln, den die Root-Partition belegt, führen Sie Folgendes aus:
>df -h
3.1 Snapper-Standardeinstellungen #
Standardmäßig wird Snapper in SUSE Linux Enterprise Server bei der Systeminstallation automatisch konfiguriert, wenn die folgenden Voraussetzungen erfüllt sind:
Größe der Root-Partition: > 16 GB
Dateisystem der Root-Partition: Btrfs
Snapshots werden nur für die Root-Partition erstellt, und bestimmte Verzeichnisse werden mithilfe von Subvolumes ausgeschlossen. Eine Liste der ausgeschlossenen Subvolumes finden Sie unter Abschnitt 3.3, „Verzeichnisse, die aus Snapshots ausgenommen sind“. Ausführliche Informationen über die Arten von Snapshots, den Zeitpunkt und den Anlässen ihrer Erstellung finden Sie unter Abschnitt 2.2, „Typen von Snapshots“.
Snapper bietet automatische Snapshot-Bereinigungsalgorithmen, um zu verhindern, dass der Speicherplatz auf der Root-Partition knapp wird. Diese Algorithmen unterscheiden zwischen Zeitleisten-Snapshots und nummerierten Snapshots (Snapshot-Paare aus Verwaltung plus Installation). Das Bereinigungsverhalten kann basierend auf den folgenden Kriterien konfiguriert werden:
Begrenzte Anzahl: Das System kann so eingestellt werden, dass alte Snapshots automatisch gelöscht werden, wenn eine bestimmte Anzahl von Snapshots erreicht ist.
Altersgrenze: Alte Snapshots können gelöscht werden, wenn sie ein bestimmtes Alter überschreiten, wobei eine Anzahl von Snapshots für jeden Zeitraum (stündlich, täglich, monatlich, jährlich) beibehalten wird.
Snapshot-Paare aus
Preundpost: Snapshot-Paare auspreundpost, die sich nicht unterscheiden, können automatisch gelöscht werden.
Bei nummerierten Snapshots, die Snapshot-Paare aus Verwaltung und Installation enthalten, wird die Bereinigung durch Parameter wie NUMBER_CLEANUP, NUMBER_LIMIT, NUMBER_LIMIT_IMPORTANT und NUMBER_MIN_AGE gesteuert. Die Standardwerte sind 2–10 für NUMBER_LIMIT und 4–10 für NUMBER_LIMIT_IMPORTANT, was bedeutet, dass nur die jüngsten Snapshots aufbewahrt werden.
Bei Snapshots auf der Zeitachse basiert die Bereinigung auf der Anzahl der Snapshots, die für jeden Typ aufbewahrt werden sollen (stündlich, täglich, wöchentlich, monatlich, jährlich). Zum Beispiel die letzten 24 stündlichen Snapshots, der erste tägliche Snapshot der letzten sieben Tage, der erste Snapshot der letzten zwölf Monate am letzten Tag des Monats usw. Zu den Parametern gehören TIMELINE_CLEANUP, TIMELINE_MIN_AGE sowie Intervallparameter wie TIMELINE_LIMIT_DAILY, TIMELINE_LIMIT_HOURLY und so weiter.
Sie können jederzeit auf einen vorhandenen Snapshot zurücksetzen, indem Sie von dem jeweiligen Snapshot booten und ihn anschließend aktivieren.
Wenn Ihre Root-Partition kleiner als 16 GB ist, ist die automatische Erstellung von Snapshots wie oben beschrieben standardmäßig deaktiviert. In diesem Fall können Sie Snapshots manuell erstellen. Behalten Sie den verfügbaren Speicherplatz im Auge.
Um automatische Snapshots zu deaktivieren, auch wenn Ihre Root-Partition ausreichend groß ist, deaktivieren Sie Snapshots manuell während der Installation im Schritt „Partitionseinrichtung“.
3.2 Snapper in der Root-Partition #
Wenn Snapper für den Betrieb in der Root-Partition konfiguriert ist, wird jedes Btrfs-Subvolume standardmäßig ausgeschlossen.
Das Standardverhalten von Snapper ist in je einer Konfigurationsdatei pro Partition und Btrfs-Subvolume definiert. Diese Konfigurationsdateien sind unter /etc/snapper/configs/ gespeichert.
Wenn Sie Snapper während der Installation deaktiviert haben, können Sie dies später wieder aktivieren. Die Aktivierung von Snapper nach der Installation führt jedoch unter anderem zu Unterschieden in Bezug auf das Layout der Subvolumes und die Variablen. Wir empfehlen dringend, vor Beginn der Installation zu entscheiden, ob Sie Snapshots in Ihrem System benötigen.
3.3 Verzeichnisse, die aus Snapshots ausgenommen sind #
Der primäre Anwendungsfall für Snapshots besteht darin, das System auf einen früheren Zustand zurückzusetzen. Daher gibt es bestimmte Subvolumes (Verzeichnisse), für die die Erstellung von Snapshots deaktiviert ist.
Die folgende Liste enthält Verzeichnisse, die von Snapshots ausgeschlossen sind. Abhängig von Ihrem Produkt und Ihrer Architektur sind möglicherweise nicht alle auf Ihrem System verfügbar.
/boot/grub2/i386-pc,/boot/grub2/x86_64-efi,/boot/grub2/powerpc-ieee1275,/boot/grub2/s390x-emuEin 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.
-
/home Wenn sich
/homenicht auf einer separaten Partition befindet, wird es ausgeschlossen, damit bei einem Rollback keine von Benutzern erstellte Daten verloren gehen./opt,/usr/localDiese Verzeichnisse werden bei der manuellen Installation von Produkten von Drittanbietern verwendet. Sie werden ausgeschlossen, damit die betreffenden Installationen 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 Alle Verzeichnisse, die temporäre Dateien und Caches enthalten, werden aus den Snapshots ausgeschlossen.
-
/var Dieses Verzeichnis enthält viele Variablendateien, einschließlich Protokollen, temporärer Caches und Drittanbieterprodukten in
/var/opt. Es ist der Standardspeicherort für Images und Datenbanken von virtuellen Maschinen. Daher wird dieses Subvolume so erstellt, dass alle Variablendaten von Snapshots ausgeschlossen werden und Copy-on-Write deaktiviert ist.-
/run Dieses Verzeichnis enthält Anwendungslaufzeitdaten und wird von Snapshots ausgeschlossen, um die Größe des Snapshots zu verringern und zu verhindern, dass potenziell vertrauliche Informationen enthalten sind.
Die Liste der Subvolumes ist produktspezifisch. Um zu sehen, welche Subvolumes unter / erstellt werden und welche Verzeichnisse vom Standard-Snapshot-Verhalten ausgeschlossen sind, führen Sie Folgendes aus:
>sudobtrfs subvolume list /
Beim Erstellen eines Snapshots werden keine physischen Datenkopien erstellt. Ein Snapshot besteht nur aus Zeigern auf die jeweiligen Datenblöcke. Solange der Snapshot mit dem aktuellen System konsistent bleibt, belegt er fast keinen zusätzlichen Speicherplatz (abgesehen von den darin enthaltenen Metadaten). Wenn jedoch eine Datei auf dem System geändert wird, werden die ursprünglichen Daten im Snapshot aufgezeichnet. Im Laufe der Zeit, wenn sich weitere Änderungen ansammeln und der Snapshot vom Live-System abweicht, nimmt die Größe des Snapshots entsprechend zu.
Um zu verhindern, dass Datenträger voll laufen (und das System dadurch nicht mehr funktioniert), empfehlen wir eine minimale Größe des Root-Dateisystems. Die erforderliche Größe hängt von der Systemauslastung ab:
Die Häufigkeit der Erstellung von Snapshots
Die Aufbewahrungsdauer von Snapshots
Die Geschwindigkeit der Änderungen am System
Im Allgemeinen gilt: Je mehr Snapshots Sie haben, desto länger werden sie aufbewahrt, und je häufiger sich das System ändert, desto größer muss die Root-Partition sein.
4 Weitere Informationen #
Weitere Informationen zum Btrfs-Dateisystem finden Sie unter https://documentation.suse.com/sles/15-SP5/html/SLES-all/cha-filesystems.html#sec-filesystems-major-btrfs und https://wiki.archlinux.org/title/btrfs.
Weitere Informationen zu LVM-Volumes finden Sie unter https://documentation.suse.com/sles/15-SP5/html/SLES-all/part-lvm.html.
5 Rechtliche Hinweise #
Copyright © 2006–2025 , SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie in Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie in https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.