OpenZFS-Snapshots mit Ubuntu 24.10

Aus LinuxUser 07/2025

OpenZFS-Snapshots mit Ubuntu 24.10

© Narintorn Pornsuknimitkul / 123RF.com

Zurückspulen

Mit OpenZFS lassen sich per Snapshot Abbilder einzelner Pools oder des gesamten Systems erstellen. Im Notfall dienen sie zur Systemrettung.

Wenn Sie spezialisierte Betriebssysteme wie Proxmox, Unraid oder TrueNAS kennen, wissen Sie Snapshots vermutlich zu schätzen. Dahinter verbergen sich Momentaufnahmen des Zustands eines Dateisystems, eines Pools oder eines Subvolumes [1] zu einem bestimmten Zeitpunkt. Snapshots halten den aktuellen Stand von Daten oder Systemkonfigurationen fest, sodass Sie später bei Bedarf zu diesem Zustand zurückkehren können.

Tools wie Timeshift oder Snapper bieten benutzerfreundliche Möglichkeiten, Snapshots zu erstellen und zu verwalten, insbesondere für Systemdateien und Konfigurationen. Die native Verwendung von Snapshots wie mit dem für diesen Artikel verwendeten Dateisystem OpenZFS hält allerdings wesentlich mehr Optionen parat.

Copy on Write

Zunächst muss das genutzte Dateisystem Snapshots unterstützen. Moderne Dateisysteme und Volume-Manager wie ZFS, Btrfs und Bcachefs bringen dafür nativ Support mit. Bei den genannten handelt es sich um Copy-On-Write-Dateisysteme (CoW) [2]. Beim Anlegen eines Snapshots werden dabei zunächst keine Daten kopiert, sondern lediglich die Metadaten in Form von Zeigern auf die bestehenden Datenblöcke gespeichert. Dadurch funktioniert das Erstellen sehr schnell und benötigt erst einmal kaum Speicherplatz.

Nur geänderte Daten werden tatsächlich kopiert und gespeichert. Unveränderte Daten nutzen Snapshot und Original gemeinsam, was enorm speichereffizient ist. Allerdings eignen sich Snapshots nicht als zuverlässiges Backup – dass sie das können, ist eine allzu häufige Fehlannahme. Lässt sich zum Beispiel nicht mehr auf die Festplatte zugreifen, sind meist auch die Snapshots verloren. Deswegen dienen sie eher dazu, ein misslungenes Update zurückzurollen oder Konfigurationsänderungen schnell rückgängig zu machen, ohne Dateien manuell zu sichern oder sich an die ursprüngliche Konfiguration erinnern zu müssen.

Allgemein heißt es, dass das heute zu Oracle gehörende ZFS am effizientesten mit Snapshots umzugehen wisse. Da drängt sich die Frage auf, warum es in Linux nicht zum Einsatz kommt. Verantwortlich dafür ist dessen Lizenz CDDL [3], die mit der GPL nicht kompatibel ist. Fast alle Linux-Distributoren scheuen davor zurück, die Ersten zu sein, die die damit verbundenen lizenzrechtlichen Risiken vor Gericht ausfechten.

Btrfs unterstützt von Haus aus Snapshots von Subvolumes. Das bei Suse entwickelte Tool Snapper gehört zu den gängigen Werkzeugen zum Verwalten von Btrfs-Snapshots. Die auf Debian unstable basierende Distribution Siduction [4] beispielsweise bietet beim Nutzen von Btrfs als Dateisystem nativen Support für Snapshots, die mit Snapper verwaltet werden. Das mit Linux 6.7 im Januar 2024 in den Kernel aufgenommene CoW-Dateisystem Bcachefs [5] kann ebenfalls mit Snapshots umgehen.

Der Logical Volume Manager (LVM) [6] gestattet Snapshots auf Blockgeräte-Ebene. Besonders LVM-Thin-Volumes ermöglichen effiziente Snapshots, die wenig Speicherplatz benötigen. Nicht zuletzt unterstützt auch das von QEMU/KVM in Virtualisierungsumgebungen verwendete QCOW2 (QEMU Copy-On-Write) Snapshots auf Image-Ebene.

Lizenzprobleme

Wir erwähnten bereits, dass die CDDL, der ZFS unterliegt, die Verbreitung unter Linux bisher verhindert hat. Die Ausnahme von dieser Regel heißt Ubuntu. Projektleiter Mark Shuttleworth fand das Risiko, verklagt zu werden, akzeptabel – wenn man Vorteile wie die Zuverlässigkeit, die maximale Dateisystemgröße, die effiziente Speicherung und eben die Fähigkeit zu Snapshots bedenkt, die das Verwenden von ZFS mit sich bringt.

Dementsprechend gehörte ab Ubuntu 16.04 LTS “Xenial Xerus” das ZFS-Kernel-Modul zum Lieferumfang der Distribution. Mit Ubuntu 19.10 “Eoan Ermine” bot man ZFS erstmals experimentell im damals neuen Installer an. Damit war Ubuntu die erste große Linux-Distribution, die ZFS in dieser Weise auslieferte.

Die hierbei verwendete ZFS-Implementierung ist das im Jahr 2013 ins Leben gerufene Schirmprojekt OpenZFS [7]. Es ging aus ZFS hervor und vereint die Funktionalitäten eines Dateisystems und eines Volume-Managers [8]. Zur Verfügung steht es unter anderem in FreeBSD, Linux und macOS. Die Unterstützung für OpenZFS in Ubuntu fiel inkonstant aus, ab Ubuntu 22.04 LTS stockte die Entwicklung. Mit Ubuntu 23.04 verschwand OpenZFS sogar ganz aus dem Installer, kehrte aber mit 24.04 LTS wieder zurück.

Testumgebung

Wir testen Snapshots unter OpenZFS mit Ubuntu 24.10, um auf dem aktuellen Entwicklungsstand zu sein. Wenn Sie LTS-Versionen bevorzugen, lässt sich der Test mit Ubuntu 24.04 LTS nachvollziehen. Auf seiner Webseite hat Canonical zwar das Tutorial “Using ZFS Snapshots and Clones” veröffentlicht, aber es lässt einige empfohlenen Vorgehensweisen vermissen.

Nach dem Start von Ubuntu und dem Aufruf des Installers wählen Sie unter Wie möchten Sie Ubuntu installieren die Option Festplatte löschen und Ubuntu installieren. Falls die Festplatte weitere Distributionen enthält, wählen Sie die Manuelle Installation. Unter Erweiterte Funktionen haken Sie je nach Belieben ZFS mit oder ohne Verschlüsselung an. Die dritte Variante der vollständigen Verschlüsselung (Abbildung 1) setzt ein TPM-Modul und Secure Boot voraus, was bei der von uns verwendeten virtuellen Maschine nicht verfügbar war. Wir entschieden uns für diesen Test der Einfachheit halber für die unverschlüsselte Variante und die Nutzung der gesamten Platte (Abbildung 2).

Abbildung 1: Das noch als experimentell ausgewiesene OpenZFS-Dateisystem lässt sich auch verschlüsselt installieren.

Abbildung 1: Das noch als experimentell ausgewiesene OpenZFS-Dateisystem lässt sich auch verschlüsselt installieren.


Abbildung 2: Der neue Ubuntu-Installer zeigt in der Übersicht die geplante Festplattenaufteilung, bevor die eigentliche Installation losgeht.

Abbildung 2: Der neue Ubuntu-Installer zeigt in der Übersicht die geplante Festplattenaufteilung, bevor die eigentliche Installation losgeht.

Nachdem Sie das System installiert und erstmalig gestartet haben, überprüfen Sie, ob das System unter OpenZFS als Dateisystem läuft. Im Erfolgsfall liefert der Befehl zfs list die standardmäßig angelegten Pools, wobei zwischen bpool und rpool unterschieden wird (Abbildung 3). Die Begriffe stehen für Boot-Pool und Root-Pool. Der Boot-Pool enthält alle für den Systemstart notwendigen Dateien und Verzeichnisse, typischerweise den Inhalt von /boot. Der Root-Pool beherbergt das Root-Dateisystem, also alles unter / mit der Ausnahme von /boot. Hier liegen das Betriebssystem, Benutzerdateien und Anwendungen. Der Root-Pool lässt sich bei der Installation verschlüsseln, während der Boot-Pool unverschlüsselt bleibt – es sei denn, Sie nutzen Vollverschlüsselung mit TPM. Diese Methode haben wir im LinuxUser 12/2024 [9] vorgestellt.

Abbildung 3: So sieht die Auflistung der einzelnen Boot- und Root-Pools und der Einhängepunkte gleich nach der Installation aus.

Abbildung 3: So sieht die Auflistung der einzelnen Boot- und Root-Pools und der Einhängepunkte gleich nach der Installation aus.

Snapshots erstellen

Am Anfang gibt es noch keine Snapshots, wie der Befehl zfs list -t snapshot belegt. Deshalb erstellen Sie nun einen ersten, indem Sie zunächst mit zfs list herausfinden, wie der entsprechende Pool heißt und daraufhin mit der Information den Snapshot erzeugen. In unserem Fall erstellen wir einen Snapshot unseres Home mit dem Namen aus dem Pool rpool/USERDATA/home 73k0zd und dem von uns gewählten Zusatz mein_home (erste Zeile, Listing 1).

Listing 1

Erster Snapshot

$ sudo zfs snapshot rpool/USERDATA/home 73k0zd@mein_home
$ sudo zfs destroy rpool/USERDATA/home 73k0zd@mein_home

Der Einfachheit halber verwenden Sie in Kommandos anstatt snapshot die Kurzform snap. Anschließend überprüfen Sie das Ergebnis mittels zfs list -t snapshot. Die Zahl in der Kolumne USED zeigt den Platz, den Änderungen seit dem Erstellen des Snapshots einnehmen. Einen nicht mehr benötigten Snapshot löschen (Abbildung 4) Sie, indem Sie, um in unserem Beispiel zu bleiben, die zweite Zeile aus Listing 1 aufrufen.

Abbildung 4: Der erste erstellte Snapshot von <code>/home</code> wird aufgelistet und mit dem Befehlszusatz <code>destroy</code> bei Bedarf wieder gel&ouml;scht.

Abbildung 4: Der erste erstellte Snapshot von /home wird aufgelistet und mit dem Befehlszusatz destroy bei Bedarf wieder gelöscht.

Zurückrollen

Vorrangig dienen Snashots dazu, mittels des Rollback-Befehls auf einen vorherigen Stand (Abbildung 5) zurückzukehren. Falls Ihnen ein Fehler unterlaufen ist, etwa das unbeabsichtigte Löschen eines Verzeichnisses, wechseln Sie in unserem Beispiel mit dem folgenden Befehl zum Stand des Snapshots zurück:

$ sudo zfs rollback rpool/USERDATA/home 73k0zd@mein_home

Wenn Sie nach diesem Snapshot noch weitere von Home erstellt haben, müssen Sie sie vorher löschen. Dazu hängen Sie beim Rollback zusätzlich den Parameter -r an.

Abbildung 5: Versehentlich gel&ouml;schte Dateien oder Fehlkonfigurationen lassen sich bequem durch Zur&uuml;ckrollen eines Snapshots wiederherstellen.

Abbildung 5: Versehentlich gelöschte Dateien oder Fehlkonfigurationen lassen sich bequem durch Zurückrollen eines Snapshots wiederherstellen.

Volle Systeme sichern

Darüber hinaus schaffen Sie mit OpenZFS-Snapshots auch bootfähige System-Backups. Einen rekursiven Snapshot sämtlicher Pools einschließlich des Datensatzes und aller untergeordneten Datensätze erstellen Sie mit dem ersten Aufruf aus Listing 2.

Listing 2

System-Backup

$ sudo zfs snapshot -r rpool@snap-full-$(date +"%b-%d") && sudo zfs snapshot -r bpool@snap-full-$(date
 +"%b-%d")
$ for snap in $(zfs list -t snapshot -H -o name | grep '^rpool|^bpool'); do zfs rollback -r $snap; done

Der Befehl deckt sowohl bpools als auch rpools ab. Wie gehabt, überprüfen Sie das Ergebnis mit zfs list -t snap (Abbildung 6).

Abbildung 6: Einen bootf&auml;higen Snapshot des gesamten Systems sehen Sie hier in der Auflistung. Damit l&auml;sst sich ein nicht mehr startbares System wiederbeleben.

Abbildung 6: Einen bootfähigen Snapshot des gesamten Systems sehen Sie hier in der Auflistung. Damit lässt sich ein nicht mehr startbares System wiederbeleben.

Um den System-Snapshot zu testen, entfernen Sie nun beliebige Dateien oder Verzeichnisse aus Ihrer Installation. Zur Wiederherstellung des Systems zum Zeitpunkt des Snapshots booten Sie per Neustart in den Wiederherstellungsmodus (Abbildung 7), indem Sie in GRUB die Advanced Options auswählen und dort den zweiten Eintrag bestätigen.

Im daraufhin erscheinenden Fenster wählen Sie den Eintrag root aus (Abbildung 8) und geben dort den Befehl aus der zweiten Zeile von Listing 2 ein. Damit wird Ihr System auf den Stand zum Erzeugungszeitpunkt des Snapshots zurückgerollt. Überprüfen Sie den Erfolg, indem Sie nachschauen, ob sich die zuvor entfernten Dateien oder Verzeichnisse wieder an Ort und Stelle befinden.

Abbildung 7: Um einen System-Snapshot einzuspielen, wird zun&auml;chst in den Wiederherstellungsmodus gebootet.

Abbildung 7: Um einen System-Snapshot einzuspielen, wird zunächst in den Wiederherstellungsmodus gebootet.


Abbildung 8: In der Root-Befehlszeile des Wiederherstellungsmodus geben Sie abschlie&szlig;end den Befehl zum Start in den System-Snapshot ein.

Abbildung 8: In der Root-Befehlszeile des Wiederherstellungsmodus geben Sie abschließend den Befehl zum Start in den System-Snapshot ein.

Fazit und Ausblick

Mit der hier für Ubuntu mit dem Dateisystem OpenZFS und der im Siduction-Handbuch für Btrfs beschriebenen Methode lassen sich Systemabbilder zuverlässig erstellen und zurückspielen. Bei ZFS können Sie die Erstellung von Snapshots mit zfs_autobackup automatisieren [10], bei Btrfs gelingt das mithilfe von Snapper [11]. Um tiefer in die Materie rund um ZFS-Snapshots einzusteigen, empfehlen wir die Dokumentation von Oracle [12].

Zum Schluss noch ein Wort der Warnung: Seit seiner Einführung bei Ubuntu ist die Unterstützung von OpenZFS als Dateisystem als experimentell ausgewiesen. Zwischenzeitlich sah es so aus, als habe das Projekt diese Variante stillschweigend fallen gelassen. Wer die oft erratischen Entscheidungen bei Canonical kennt, weiß, dass ein langfristiger Support von OpenZFS bei Ubuntu nicht garantiert ist.

Daher empfehlen wir dieses Dateisystem bei Ubuntu lediglich als Möglichkeit, ZFS-Snapshots unkompliziert kennenzulernen. Wenn Sie ZFS-Snapshots produktiv einsetzen möchten, werfen Sie auf der Webseite von OpenZFS einen Blick auf Anleitungen [13] für unterschiedliche Distributionen. Im Privatbereich müssen Sie sich außerdem nicht um die zur GPL nicht kompatible CDDL-Lizenz kümmern. (csi)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDF
LinuxUser 07/2025 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben