Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Die grundlegenden Konzepte von Snapper

Die grundlegenden Konzepte von Snapper

Veröffentlicht: 20.03.2025
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- oder sudo-Rechte

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

Anmerkung
Anmerkung

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.

Anmerkung
Anmerkung

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!

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

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.

Wichtig
Wichtig

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.

Tipp
Tipp: Überprüfen der Größe der Root-Partition

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 und post: Snapshot-Paare aus pre und post, die sich nicht unterscheiden, können automatisch gelöscht werden.

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

Anmerkung
Anmerkung: Automatisches und manuelles Deaktivieren von Snapper

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.

Tipp
Tipp

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 /
Anmerkung
Anmerkung: Warum ist der Speicherplatz begrenzt?

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.