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. Hier finden Sie auch Informationen zu den Standardeinstellungen für Snapshots unter SUSE Linux Micro.
- AUFWAND
Es dauert bis zu 20 Minuten, um Snapper und seine Standardeinrichtung zu verstehen.
- ANFORDERUNGEN
root
- odersudo
-RechteSnapper muss installiert werden. Es ist standardmäßig in SUSE Linux Micro 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 Kopie-beim-Schreiben-Betriebssystem für Linux, das nativ Dateisystem-Snapshots von Subvolumes unterstützt.
LVM-Volumes mit Thin Provisioning formatiert mit XFS.
Sie können auch von Btrfs
-Snapshots booten.
2.1 Funktionsweise von Snapper #
Snapper verfügt über eine Kommandozeilen-Schnittstelle und eine YaST-Schnittstelle. Sowohl die Kommandozeilenschnittstelle als auch die YaST-Schnittstelle können austauschbar verwendet werden. Dadurch können Sie Snapshots erstellen, löschen und vergleichen sowie Änderungen zwischen Snapshots rückgängig machen.
Mit Snapper können die folgenden Aufgaben ausgeführt werden:
Systemänderungen rückgängig machen, die von
zypper
und YaST vorgenommen wurden.Dateien aus früheren Snapshots wiederherstellen.
System-Rollback durch Booten aus einem Snapshot vornehmen.
Im laufenden System manuell Snapshots erstellen und verwalten.
Führen Sie eine automatische Snapshot-Bereinigung durch.
2.2 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, einen Snapshot auf einer anderen Partition oder einem anderen Subvolume 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 Micro 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 #
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“.
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
Pre
undpost
: Snapshot-Paare auspre
undpost
, die sich nicht unterscheiden, können automatisch gelöscht werden.
NUMBER_CLEANUP
Bei nummerierten Snapshots, die Snapshot-Paare aus Verwaltung und Installation enthalten, wird die Bereinigung durch Parameter wie 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.
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-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.
-
/home
Wenn sich
/home
nicht auf einer separaten Partition befindet, wird es ausgeschlossen, damit bei einem Rollback keine von Benutzern erstellte Daten verloren gehen./opt
,/usr/local
Diese 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:
>
sudo
btrfs 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 geänderten 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 im Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im 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.