OpenZFS 2.0.0: FreeBSD und GNU/Linux Hand in Hand

Nach langem Warten ist die erste stabile Version von OpenZFS erschienen. Zum Start bauen Linux und BSDs nun auf einer Codebasis auf, macOS soll folgen.

Lesezeit: 2 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 44 Beiträge

(Bild: kubais / Shutterstock.com)

Von
  • Michael Plura

Das OpenZFS-Projekt, dessen Ziel die Vereinheitlichung der ZFS-Codebasis für FreeBSD und GNU/Linux ist, hat seine erste stabile Version veröffentlicht. Es soll die FreeBSD-Portierung und zfs-0.86 für GNU/Linux ablösen. Das fast 20 Jahre alte und von Sun Microsystems entwickelte Dateisystem wurde bereits 2005 in der Version für OpenSolaris von Sun als Open-Source-Projekt veröffentlicht. Seit 2008 ist es als Portierung fester Bestandteil von FreeBSD. Seit Jahren wird auch an einer ZFS-Version für GNU/Linux gearbeitet, dort steht aber rein rechtlich die GPL im Weg.

Neben dem Closed-Source-Original von ZFS, das nach der Übernahme von Sun Microsystems durch Oracle unter Verschluss gehalten wird, existieren mit dem ZFS-Port für FreeBSD und dem für GNU/Linux – zfs, ZFS-on-Linux – drei nicht voll zueinander kompatible Codebasen. Daher entschied sich die Open-Source-Fraktion dazu, seit 2013 mit OpenZFS eine gemeinsame Codebasis zu entwickeln. Oracles ZFS wird mangels Zusammenarbeit laut OpenZFS mit seinen Versionen ab etwa v29 inkompatibel bleiben, man kann ZFS-Datenträger also im Gegensatz zu OpenZFS nicht immer zwischen den Betriebssystemen austauschen und auf sie zugreifen.

Ein OpenZFS 1.0 sucht man vergeblich, die Entwickler haben den Code aus zfs-0.86 über sieben Release Candidates (rc1-rc7) direkt in eine stabil klingende Version 2.0.0 überführt. Der Quellcode findet sich ab sofort auf GitHub.

In FreeBSD 12 ist OpenZFS bereits seit längerem als Port enthalten und kann als Alternative zum nativen FreeBSD-ZFS installiert werden. Auch die Portierung in NetBSD ist abgeschlossen, auch bei DragonFlyBSD gibt es Bestrebungen, ZFS aufzunehmen – dort liegt der Fokus aber eindeutig auf dem clusterfähigen HAMMER2-Dateisystem. OpenBSD zeigt mangels Zielgruppe keine Anzeichen, ZFS zu integrieren.

Bei GNU/Linux ist es nun mit OpenZFS 2.0.0 die Aufgabe von Maintainern, für die unterschiedlichen Distributionen jeweils eine angepasste OpenZFS-Variante zusammenzustricken, ins Betriebssystem zu integrieren und zu pflegen. Vor allem Ubuntu und die auf Debian GNU/Linux basierende Virtualisierungsplattform Proxmox VE bieten bereits ZFS an. OpenZFS soll im Jahresrhythmus mit neuen Major-Releases veröffentlicht werden – und für OpenZFS 3.0 ist macOS bereits fest eingeplant.

In erster Linie vereint OpenZFS 2.0.0 die Code- und Dokumentationsbasis von ZFS für FreeBSD und GNU/Linux: Aus ein und demselben Repository lassen sich Binaries sowohl für FreeBSD als auch GNU/Linux erzeugen. Voraussetzung dafür ist FreeBSD 12.x/13(HEAD) beziehungsweise ein Linux-Kernel 3.10-5.9. In FreeBSD 13, das für Anfang nächsten Jahres geplant ist, soll OpenZFS das FreeBSD-ZFS ersetzen.

Gleich die erste neue Funktion zeigt, wohin die gemeinsame Entwicklung geht: Mit sequential resilver kann ein ausgefallenes Laufwerk in einem ZFS-Spiegel unter Umständen wesentlich schneller wiederhergestellt werden als mit dem bisherigen healing resilver. Das funktioniert jedoch nicht mit RAIDZ-VDEVs und es beinhaltet im Gegensatz zum normalen Resilver auch keine gleichzeitige Überprüfung der Daten über ZFS-Checksummen. Letzteres muss durch ein anschließendes, separates Scrubbing erfolgen.

Der L2ARC (Level 2 Adaptive Replacement Cache) ist neben dem ARC ein Lese-Cache für ZFS und hält häufig gelesene Blöcke im Speicher (ARC) oder schnellen SSDs oder NVMes (L2ARC) vor. Den L2ARC baut das System normalerweise bei einem Neustart oder beim Importieren eines ZFS-Pools neu auf. Bei OpenZFS 2.0.0 kann der L2ARC optional wiederverwendet werden (Persistant L2ARC).

Den GZIP-Code für die ZFS-Kompression haben die Entwickler durch ZStandard (ZSTD) ersetzt. Dazu wurde die umfangreichen ZSTD-Bibliotheken in OpenZFS aufgenommen, auch wenn nur ein Bruchteil der Funktion genutzt wird. ZSTD arbeitet schneller und komprimiert besser als GZIP. Als Nachteil scheint dafür für FreeBSD zusätzlicher Compatibility-Code notwendig zu sein – und ZSTD dekomprimiert langsamer als GZIP.

Über das neue redacted zfs-send/receive lassen sich die Daten, die bei einer ZFS-Replikation übertragen werden, einschränken. Unwichtige, vor allem aber sensitive Daten lassen sich so von Backups oder Kopien für Entwicklungsabteilungen ausnehmen. Im gleichen Zuge wanderte jedoch die Deduplizierung bei send/receive auf die Liste der nicht mehr vorhandenen Funktionen.

Alle Informationen und die gemeinsame Dokumentation für FreeBS- und GNU/Linux finden sich auf der GitHub-Seite zu OpenZFS 2.0.0.

(fo)