Ubuntu 19.10 bietet im Installer das Dateisystem ZFS für die Root-Partition an. Noch empfiehlt sich der Klick aber nicht für jeden.
Das am 17. Oktober veröffentlichte Ubuntu 19.10 “Eoan Ermine” bietet im Installer erstmals die Option, ZFS für die Root-Partition zu verwenden – das kann derzeit keine andere Distribution. Allerdings zog das Profi-Dateisystem erst nach der Veröffentlichung der “Ermine”-Beta und nur eine Woche vor der Freigabe der stabilen Version in die Distribution ein; die Integration befindet sich also in einem frühen Stadium.
Aus diesem Grund weist Canonical die Funktion auch noch als experimentell aus, und das sollten Sie ernst nehmen: Die Integration beschränkt sich momentan auf einen Bruchteil der geplanten Funktionen, und in den nächsten Monaten dürften noch teils inkompatible Änderungen einfließen, die unter Umständen zum Verlust von Daten führen. Für Systeme im produktiven Betrieb heißt es also derzeit: Finger weg von ZFS!
Canonical ist bereits seit einigen Jahren bestrebt, das von Sun Microsystems ab 2001 entwickelte und derzeit zu Oracle gehörende Dateisystem ZFS (siehe Kasten “Was bietet ZFS?”), in Ubuntu einzubauen. Bei verschiedenen BSD-Varianten gehört es schon zum Repertoire.
Was bietet ZFS?
Bei ZFS (jetzt der Name, ursprünglich ein Kürzel für Zettabyte File System) handelt es sich um ein Dateisystem mit einer Wortlänge von 128 Bit. Es geht wie Btrfs weit über die üblichen Funktionen von Dateisystemen wie Ext4 oder XFS hinaus. Dazu zählen neben der quasi unerschöpflichen Größe von 256 Zebibyte und der Copy-On-Write-Funktion (COW [7]) unter anderem die Integration von RAID und LVM, Schnappschüssen des gesamten Systems und Prüfsummen gegen Fehler beim Übertragen von Daten. Diese Fähigkeiten machen ZFS besonders attraktiv für Server und Rechenzentren. Bei der heutigen Verfügbarkeit von großen und schnellen Festplatten und günstigem Hauptspeicher bringen sie aber auch auf dem Desktop mehr Flexibilität. Canonical arbeitet daran, das Aufsetzen der sogenannten Speicherpools aus einer oder mehreren Festplatten und deren Administration zu vereinfachen.
Lizenzgerangel
Andere Distributionen halten eher Abstand von ZFS: Sie wollen sich nicht in eine rechtliche Grauzone begeben, die bisher juristisch noch nicht ausgelotet ist. ZFS steht unter der CDDL [1], der Linux-Kernel unter der GPLv2 – beides zwar Copyleft-Lizenzen, doch nicht miteinander vereinbar.
Die Unklarheit dreht sich um die Frage, ob ZFS als abgeleitetes Werk anzusehen ist. Die GPL2 bestimmt, ein von einer GPL-Software abgeleitetes “derivative work” müsse ebenfalls der GPL unterstehen. Wann ein abgeleitetes Werk vorliegt, erläutert die Lizenz allerdings nur sehr schwammig [2]. Dadurch sahen sich Canonicals Rechtsberater 2016 hier auf der sicheren Seite [3] und gaben grünes Licht, den Treiber für ZFS direkt als binäres Modul auszuliefern [4].
Bis dahin mussten Anwender ihn selbst gegen den Kernel kompilieren. Bestenfalls konnten Distributoren per DKMS [5] den Quellcode herunterladen und den Binärcode bauen, wie das etwa bei Virtualbox geschieht. Der Autor hat Canonicals umstrittenes Vorgehen damals in einem Kommentar gewürdigt [6].
ZFS-on-Root
Bisher war es bei Ubuntu schon möglich, ZFS für Partitionen mit Daten zu verwenden. Es ließen sich Pools aus mehreren Platten erstellen und bei Bedarf als RAID-Verbund konfigurieren. Mit Ubuntu 19.10 ist nun der Anfang von ZFS als Root-Dateisystem gemacht. Dabei setzt Canonical auf ZFS on Linux (ZoL) in Version 0.8.1. Bei dieser unabhängig weitergeführten Entwicklung von ZFS im OpenZFS-Projekt [8] flossen mit Version 0.8 wichtige Funktionen ins Projekt ein, wie Unterstützung für TRIM bei SSDs und native Verschlüsselung. Die Kernel-Kompatibilität entspricht bereits dem für Ubuntu 19.10 zu spät veröffentlichten ZoL 0.8.2, sprich: einem Support für Kernel 5.3.
Was hat nun Ubuntu 19.10 in Sachen ZFS zu bieten? Bisher noch nicht viel – aber das, was man sieht, macht Lust auf mehr. Die nur neun Monate unterstützten Versionen der Distribution, die zwischen den Ausgaben mit Langzeitunterstützung erscheinen, dienen genau dazu, experimentelle Funktionen einem breiteren Publikum vorzustellen und die Testbasis zu erweitern.
Es bleibt spannend, zu beobachten, wie die Entwickler um Didier Roche die ZFS-Integration in den kommenden sechs Monaten weiter vorantreiben, um sie möglichst mit Ubuntu 20.04 LTS zu einem Angebot zu machen, das sich für Anwender ohne tieferen technischen Hintergrund eignet.
Mitverfolgen
Möchten Sie diese Entwicklung mitverfolgen, benötigen Sie ein Gerät mit zumindest einer vollkommen leeren Festplatte und das aktuellste Image der täglichen Builds von Ubuntu für den Desktop [9]. Wählen Sie bei der Installation ZFS als Dateisystem aus, belegt es derzeit eine gesamte Festplatte. Stehen mehrere bereit, sehen Sie diese als Auswahl; weitere Optionen existieren nicht.
Bevor Sie loslegen, sollten Sie die Live-Version aktualisieren, um den neuesten Entwicklungsstand zu haben. Dann beginnen Sie mit der Installation. Der einzige Unterschied zum bisherigen Ablauf ist die ZFS-Option im Reiter Installationsart (Abbildung 1).

Abbildung 1: Der Haken bei ZFS ist die einzige Möglichkeit, die der Installer derzeit in Bezug auf das Dateisystem anbietet. Ubuntu belegt dabei eine komplette Festplatte.
Wählen Sie hier das Optionsfeld bei EXPERIMENTAL: Erase disk and use ZFS, und klicken Sie auf Jetzt installieren. Der nächste Bildschirm informiert Sie unter anderem darüber, dass das Setup eine Ext4-Partition vorbereitet. Der Installer legt beim jetzigen Entwicklungsstand während des Formatierens die Root-Partition zunächst als Ext4 an, bei der Installation formatiert er die dann aber als ZFS (Abbildung 2). Der weitere Verlauf der Installation und der folgende Neustart unterscheiden sich nicht vom bisher bekannten Ablauf, optisch bleibt alles beim Alten.

Abbildung 2: Eine Ext4-Partition erstellt der Installer nur beim ersten Formatieren. Am Ende der Installation ist aber alles korrekt aufgesetzt.
Sie fragen sich jetzt womöglich, wie Sie im privaten Einsatz von einem Dateisystem wie ZFS profitieren. Dazu schauen Sie sich am besten zunächst im Terminal an, wie der Installer das System aufgesetzt hat. Vorher installieren Sie noch das Paket zsys, das vermutlich in den nächsten Monaten zunehmend an Bedeutung gewinnt.
Partitionen
Die Ausgabe von fdisk -l /dev/sda zeigte im Test, dass Ubuntu auf dem älteren Notebook im BIOS-Modus neben einer Boot-Partition drei erweiterte Partitionen angelegt hat. Bei einer davon handelt es sich um eine automatisch angelegte Swap-Partition von 2 GByte. Dahinter folgt eine als Boot-Pool (bpool) bezeichnete Partition von ebenfalls 2 GByte, in die ZFS das Boot-Verzeichnis einhängt. Hier liegen später unter anderem die Snapshots, die das System beim Systemstart anbietet. Der Rest der Platte gehört der Root-Partition (im Test 108 GByte groß), die den Namen rpool erhält (Abbildung 3).

Abbildung 3: Der Befehl fdisk -l zeigt, wie Ubuntu beim Einsatz von ZFS die Partitionen aufteilt. Neben der Boot-Partition sind in einer erweiterten Partition der Swap-Bereich und zwei weitere Partitionen mit dem Label FreeBSD angelegt.
Pools
Betrachten Sie diese Daten-Pools mittels zfs list, dann sehen Sie, dass sowohl bpool als auch rpool sich in weitere Datasets unterteilen (Abbildung 4). Der rpool enthält das Root-Dateisystem inklusive des Home-Verzeichnisses. Einen genaueren Blick darauf erlaubt der Befehl zfs list -r rpool (Abbildung 5).

Abbildung 4: Einen genauen Überblick über alle angelegten Pools liefert der Befehl zfs list. Hier sehen Sie die detaillierte Aufteilung von Boot-Pool und Root-Pool.

Abbildung 5: Mittels zfs list -r rpool grenzen Sie die Ansicht auf den Root-Pool ein. Das Unterteilen in weitere Datasets ermöglicht differenzierte Schnappschüsse einzelner Sets.
Der Vorteil beim Aufteilen in viele separate Datasets liegt darin, dass diese Untergliederung neben Schnappschüssen des Gesamtsystems auch gezielte Schnappschüsse etwa des Home-Verzeichnisses ermöglicht. Mit zpool status erhalten Sie einen Überblick über das gesamte Konstrukt (Abbildung 6).

Abbildung 6: Eine Statusabfrage mittels zpool status zeigt den Zustand aller Pools und eventuell notwendige Aktionen an.
Snapshots
Die Schnappschüsse, im Fachjargon Snapshots, sind eine der für Desktop-Anwender interessantesten Funktionen von ZFS. Der Sinn dieser Sicherungen liegt darin, wie bei Btrfs ein defektes System wieder in den vorherigen Zustand zurückzuversetzen. Bei OpenSuse sorgt etwa Snapper [10] dank Btrfs dafür, dass das System vor jedem Upgrade einen Snapshot anlegt.
Das automatische Erstellen von Snapshots steht bei Ubuntu 19.10 noch nicht bereit. Sie dürfen aber von Hand Schnappschüsse anlegen. Im Test stellten wir das System auf die Probe, indem wir zunächst einen Sicherungspunkt des Systems anlegten, dann ein Paket entfernten, und anschließend alles wieder zurückrollten.
Als Namen für den zu erstellenden Snapshot, den wir mit dem Befehl aus der ersten Zeile von Listing 1 anlegten, wählten wir snaptest. Da der Befehl ohne Meldung zum Prompt zurücksprang, drängte es sich auf, das Ergebnis zu überprüfen. Das gelang mit dem List-Befehl aus der zweiten Zeile des Listings (Abbildung 7).
Listing 1
$ sudo zfs snapshot -r rpool@snaptest $ sudo zfs list -rt snap rpool | grep snaptest

Abbildung 7: Der List-Befehl zeigt, dass Ubuntu für jedes Dataset einen einzelnen Snapshot anlegt. Derzeit fehlt noch eine einfache Möglichkeit, alle auf einmal zurückzurollen. Das gehört künftig vermutlich unter anderem zu den Aufgaben des Zsys-Daemons.
Umständlicher Rollback
Wie das List-Kommando zeigt, liegen alle Datasets im Root-Pool als einzelne Schnappschüsse vor. Diese müssten Sie beim jetzigen Stand der Entwicklung alle einzeln zurückrollen. Um sich diese Arbeit zu ersparen, genügt ein wenig Bash-Magie: Ein Skript für einen einfachen Rollback finden Sie in Listing 2. Auf dem Testsystem sorgte es dafür, dass die nach dem Snapshot und vor dem Rollback entfernte Anwendung Shotwell wieder vorhanden war – der Rollback hatte also funktioniert (Abbildung 8).
Listing 2
$ sudo zfs list -rt snap rpool | grep snaptest | awk '{print $1}' | xargs -I% sudo zfs rollback -r %

Abbildung 8: Ein nach dem Snapshot entferntes Paket ist nach dem bislang noch etwas umständlichen Zurückrollen wieder im System vorhanden.
Das System verwaltet die Schnappschüsse im versteckten Verzeichnis .zfs/snapshot/. Bei Bedarf sichern Sie manuell einzelne Dateien oder Verzeichnisse aus diesem Ordner zurück, wie das bei manchen anderen Backup-Anwendungen möglich ist (Abbildung 9).

Abbildung 9: Das System ermöglicht den Zugriff auf die Snapshots über einen Ordner, aus dem Sie anstelle des gesamten Snapshots bei Bedarf einzelne Dateien und Verzeichnisse manuell wiederherstellen.
Zsys
In den nächsten Monaten besteht die Hauptaufgabe der Entwickler darin, Befehlskonstrukte wie jenes aus Listing 2 überflüssig zu machen und den Anwendern eine grafische Anwendung zu präsentieren, die den Einsatz der ZFS-Funktionen vereinfacht. Ein solches Programm existiert bereits in Grundzügen unter dem Namen Zsys, bewirkt aber noch nichts Erkennbares. Ein dem User zugewandter Client ergänzt die als Daemon ausgelegte Software. Er soll den Einsatz von ZFS auf dem Desktop vereinfachen und übernimmt unter anderem das automatisierte Erstellen der Snapshots.
Zudem liegt vor den Entwicklern noch viel Arbeit, um die Funktionen von ZFS mit anderen Systemkomponenten zu verbinden. An einigen Stellen haben sie das bereits erledigt, um die Integration in Ubuntu 19.10 zu präsentieren. Ein Beispiel dafür bietet die Datei /etc/grub.d/10_linux_zfs, die für das Einbinden des Dateisystems in den Bootloader sorgt.
Fazit
Canonical steckt derzeit viel Entwicklerzeit in den Einsatz von ZFS auf der Root-Partition. Das wertet Ubuntu für den Desktop auf und vertreibt den in der Vergangenheit schon häufiger aufgekommenen Eindruck, die Desktop-Version sei für das Unternehmen lediglich Mittel zum Zweck und erhalte kaum noch Aufmerksamkeit und Ressourcen.
Noch kann man nicht viel sehen, und das Gebotene befindet sich im frühen Alpha-Stadium. Somit sind Fehler zu erwarten. Das ändert sich hoffentlich in den nächsten sechs Monaten, sodass Canonical dann in der Lage ist, interessierten Anwendern mit Ubuntu 20.04 LTS ein leicht zu administrierendes ZFS anzubieten. Bleibt die Frage nach der Verträglichkeit der Lizenzen; hier fährt Canonical derzeit auf der Schiene: Wo kein Kläger, da kein Richter.
Infos
-
CDDL: https://de.wikipedia.org/wiki/Common_Development_and_Distribution_License
-
GPLv2: https://www.ifross.org/wann-muss-eigenentwickelte-software-unter-gpl-lizenziert-werden
-
Rechtslage laut Canonical: http://blog.dustinkirkland.com/2016/02/zfs-licensing-and-linux.html
-
SFLC: https://www.softwarefreedom.org/resources/2016/linux-kernel-cddl.html
-
Gastkommentar ZFS: Ferdinand Thommes, “Abwege”, LU 10/2016, S. 8, http://www.linux-community.de/37158
-
Daily Builds: http://cdimage.ubuntu.com/daily-live/current/
-
Snapper: Ferdinand Thommes, “Letzte Rettung”, LU 05/2016, S. 32, http://www.linux-community.de/36865





