Original-URL des Artikels: https://www.golem.de/news/zfs-erklaert-ein-dateisystem-alle-funktionen-1911-144776.html    Veröffentlicht: 04.11.2019 12:05    Kurz-URL: https://glm.io/144776

ZFS erklärt

Ein Dateisystem, alle Funktionen

Um für möglichst redundante und sichere Daten zu sorgen, ist längst keine teure Hardware mehr nötig. Ein Grund dafür ist das Dateisystem ZFS. Es bietet Snapshots, sichere Checksummen, eigene Raid-Level und andere sinnvolle Funktionen - kann aber zu Anfang überfordern.

Ein möglichst redundantes System für Datensicherheit und Integrität aufzubauen, ist seit einiger Zeit nicht mehr nur eine Sache des richtigen Raid-Verbundes. Auch die Wahl des Dateisystems, mit dem Informationen auf Festplatten und SSDs gespeichert werden, spielt eine große Rolle. Systeme wie Windows und diverse Linux-Distributionen nutzen standardmäßig NTFS respektive Ext4, entsprechend groß ist ihre Verbreitung in der IT.

Sobald es darum geht, Laufwerke mit verschiedenen Methoden vor Datenverlust zu schützen, kommen aber beide genannten Filesysteme an ihre Grenzen. Aus diesem Grund ist im Bereich der Netzwerkspeicher und Serversysteme auch das Zettabyte File System - ZFS - bekannt. Doch was zeichnet dieses im Vergleich zu NTFS und Ext4 aus?

Wir denken: Jeder Administrator muss sich damit auseinandersetzen. Allerdings ist das System mit seinen vielen Möglichkeiten sehr komplex, hat einige Einschränkungen und kann daher schnell verwirren. Golem.de gibt eine Übersicht.

Diverse Funktionen, die Datenredundanz sicherstellen sollen - darunter Snapshots, Copy-on-write oder vom Dateisystem verwaltete Raid-Systeme - gehören zu den Eigenschaften von ZFS. Hier kommt auch ein ähnliches, aber unabhängig entwickeltes Dateisystem ins Spiel: das B-Tree File System, kurz Btrfs.

Für welches der beiden Systeme wir uns entscheiden, hängt dabei eher von unserem genutzten Betriebssystem ab. ZFS wird etwa unter FreeBSD unterstützt, welches auf diversen NAS-Systemen verbreitet ist. Auch das beliebte NAS-OS FreeNAS unterstützt ZFS nativ. Golem.de konnte sich im Eigenbau bereits einen eigenen Netzwerkspeicher damit erstellen. Auch konnten wir das Dateisystem anderweitig ausprobieren.

Wo kommt ZFS her?

Nachdem ZFS als Teil des Betriebssystems Solaris durch Oracle gekauft wurde, stellte das Unternehmen die Lizenz des Dateisystems effektiv von Open Source wieder auf ein proprietäres und geschlossenes Modell um und bot dafür keine weiteren Updates an. Das Konzept wurde daher mit dem Open-Source-Projekt Illumos, das auf Opensolaris basiert, später wieder weiterentwickelt.

Seit 2013 beschäftigt sich das Projekt OpenZFS mit der Weiterentwicklung des Dateisystems. Dabei handelt es sich aber um ein separat erhältliches Paket, das nicht mit der GNU Public License kompatibel ist. Aus diesem Grund ist ZFS zwar mit Linux-Distributionen und auch MacOS kompatibel, wird aber nicht im Linux-Kernel verankert und dort weiterentwickelt. Das System wird derzeit von einer Community gepflegt, die FreeBSD, Linux, MacOS und Windows verwendet.

Raid-Z funktioniert ohne zusätzliche Hardware

Von Grund auf unterscheidet sich ZFS von Dateisystemen wie NTFS und Ext4. Es ist Volume Manager und Dateisystem in einem, kennt also physische Laufwerke des Hostcomputers und deren logische Partitionen. Damit ermöglicht ZFS beispielsweise eine Raid-Funktion, das sogenannte Raid-Z. Dabei handelt es sich im Prinzip um ein herkömmliches Raid 5 oder Raid 6, allerdings mit einem dynamischen Striping. ZFS schreibt einzelne Blöcke immer als ganzen eigenen Stripe. Damit wird Datenverlust während des Schreibvorgangs verhindert, etwa wenn währenddessen ein Laufwerk ausfällt oder das System beschädigt wird.

Einen Raid-Z können Anwender mit beliebig vielen Paritätslaufwerken definieren, etwa mit einer, zwei oder mehr Redundanzen. Das kann beispielsweise dann sinnvoll sein, wenn Anwender keinen Raid-Controller auf dem Mainboard selbst oder einen dedizierten Controller verwenden möchten oder können. Mit ZFS kann dabei auch aus einem simplen JBOD-Array - also einer Ansammlung mehrerer physischer Datenträger - ein vom Anwender einzelnes sichtbares logisches Volume, ein Virtual Device (Vdev), erstellt werden. Meist besteht ein Vdef aus einer einzelnen Festplatte oder SSD. Die Zusammenfassung mehrerer logischen Laufwerke wird in ZFS auch Pool oder Zpool genannt. Sie werden über alle darin definierten physischen Datenträger verteilt in Stripes abgelegt - ähnlich eines RAID-0-Systems. Oracle selbst gibt eine weiterführende Übersicht über die Fachbegriffe von ZFS.

ZFS ist dabei auch in der Lage, eine Art Raid 1 aufzuziehen. Möglich ist das mit ZFS Mirror. Dabei werden die Daten des Quellpools bei Schreibvorgängen auch auf redundante Pools repliziert. Sollte so ein Gerät ausfallen, können die Daten von der zusätzlichen Hardware gelesen werden. Ein ZFS Mirror ist dabei in der Lage, auch wesentlich mehr als eine redundante Kopie zu erstellen. Wollen wir ein Datenlaufwerk mit zehn redundanten Laufwerken absichern, können wir dies tun. Wir sollten beachten, dass dies natürlich teuer ist. Hier sollten Administratoren abwägen, wie kritisch ihre Daten sind.

Doch wie heißt es in der Welt der IT-Administration: Ein Raid ersetzt kein Backup. Auch hier bietet ZFS eine Lösung an, mit Snapshots des Dateisystems.

Ein Raid ersetzt kein Backup

Doch nicht nur durch Raid eignet sich ZFS gerade für Server und NAS-Systeme. Das Dateisystem unterstützt beispielsweise Snapshots, die den derzeitigen Zustand eines Laufwerks als Backuppunkt abspeichern. Beim initialen Erstellen benötigen Snapshots keinen Platz auf dem Speichermedium. Jedoch wird der benötigte Speicherplatz mit jeder veränderten, erzeugten oder verschobenen Datei innerhalb des vom Snapshot abgedeckten Datensets vergrößert.

Der von Snapshots belegte Speicher ist read only, belegt also permanent Speicher auf dem Datenträger, der nicht modifiziert werden kann. Das ist nur logisch, wollen wir doch keine Inkonsistenzen in Snapshots haben. Denn damit ist es beispielsweise möglich, einen älteren Zustand des abgebildeten Laufwerks wiederherzustellen.

Es sollte allerdings beachtet werden: Da Snapshots phyisch nah an den Quelldaten liegen, sollten wir dies nicht als volles Backup betrachten. Per zfs send und zfs receive können Snapshots auf externe Laufwerke ausgelagert und von dort wieder zurückgespielt werden. Diese Replikationsfunktion ermöglicht ein weitaus effizienteres Backup auf komplett unabhänige und physisch getrennte Storage-Systeme.

ZFS ermöglicht Snapshots, da es ein Copy-on-write-Dateisystem ist. Beim Überschreiben einer Datei kopiert es die neuen Daten zuerst an eine andere Stelle und löscht die ursprünglichen Daten nicht direkt, wie es beispielsweise bei NTFS und ext4 der Fall ist. Sollte das eigene System beim Schreibvorgang abstürzen, ist es so etwa weniger wahrscheinlich, dass Daten verloren gehen.

Allerdings hat dieser Prozess auch einen Nachteil: Ein in ZFS formatiertes Laufwerk sollte nicht zu 100 Prozent mit Daten belegt sein. Administratoren sprechen auch von der 80-Prozent-Regel. Danach sollten 20 Prozent der Festplatte oder SSD frei bleiben. Der Youtube-Channel 45 Drives hat dies wohl bereits getestet und festgestellt, dass die Leistungseinbußen eines ZFS-Laufwerks in der Praxis aber erst ab etwa 85 bis 90 Prozent Belegung auftreten. Trotzdem: Bei großen Applikationen mit vielen physischen Datenträgern - etwa ein großer Fileserver - sollte dies bei einer Kostenrechnung beachtet werden.

Wie andere Dateisysteme auch, nutzt ZFS für die Prüfung gespeicherter Dateien Checksummen - in diesem Fall sind diese 256 Bit groß. Sie werden aber nicht zusammen mit den Daten im gleichen Block abgespeichert. Stattdessen werden sie unabhängig von Dateien abgelegt - in über den Datenblöcken liegenden Eltern-Datenblöcken. Das Dateisystem legt dazu mehrere übergeordnete Blöcke an, in denen Informationen zu den Positionen einzelner Daten und eben deren Checksummen für die Prüfung auf ihre Richtigkeit abgelegt werden.

Jeder Eltern-Block im ZFS-Storage-Pool ist an mehreren Stellen auf dem Datenträger redundant abgelegt und wird seinerseits wieder von der Checksumme in einer Ebene darüber abgesichert. Die Daten selbst sind dabei auf der untersten Ebene des Baumes, den Blättern, abgelegt. Die Wurzel des Baumes ist der sogenannte Überblock, der in sehr vielen Kopien abgelegt wird. Dieses Prinzip wird Merkle-Baum genannt.

Was der Haltbarkeit von SSDs und HDDs zugutekommt, ist die sogenannte Deduplizierung. Mit Hilfe dieser Funktion werden Daten, die bereits an anderer Stelle auf dem Datenträger vorhanden sind, nicht noch einmal komplett neu geschrieben. Stattdessen legt das System einfach nur einen Zeiger an, der auf den Standort der abgelegten Datenblöcke verweist. Das spart Schreibvorgänge und mindert dadurch den Verschleiß der Hardware. Nicht nur ZFS beherrscht diese Technik, allerdings kann es Deduplizierung schon während eines Schreibvorgangs, also inline, durchführen und muss dies nicht im Nachgang mit einem separaten Task erledigen, das kostet allerdings Rechenleistung.

Das Verschlüsseln von Daten auf Laufwerken ist in ZFS genauso möglich wie auf vielen anderen Dateisystemen auch. Es ermöglicht zusätzlich die Kompression von Dateien, beispielsweise durch lz4. Das kann sehr viel Speicherplatz auf den Datenträgern einsparen, benötigt allerdings zusätzliche CPU-Leistung, wie das IT-Magazin Servethehome in der Praxis testen konnte.

Die Alternative für viele Linux-Nutzer ist Btrfs

Wie anfangs erwähnt, ist ZFS derzeit kein Teil eines Linux-Kernels, da es zum einen von Oracle unter geschlossener Lizenz entwickelt wird und zum anderen als OpenZFS-Projekt, an dem dezentral einige Community-Mitglieder arbeiten.

Unter anderem deshalb hat sich das B-Tree File System Btrfs entwickelt, das derzeit Teil von Suse Enterprise Linux ist und seit der Version 12 dort sogar als Standard verwendet wird. Es ist zudem Teil des Linux-Kernels und muss nicht über separat unterstützte Tools installiert werden. Funktional ist das Dateisystem mit ZFS eigentlich identisch, bis auf eine fehlende Inline-Deduplizierung. Auch hier können Raid-Verbunde, Snapshots und Mirroring genutzt werden, wobei auch hier Copy-on-write im Zentrum der Funktionalität steht.

Ein großes Unternehmen, das Btrfs in angepasster Form in seinen eigenen Rechenzentren verwendet, ist Facebook. Das soziale Netzwerk beschäftigt ein ganzes Entwicklerteam, das nur für das Dateisystem zuständig ist. Der Vorteil: Es wird dadurch ständig und täglich und im weitreichenden praktischen Einsatz weiterentwickelt. Obwohl Btrfs noch vergleichsweise jung ist, hat es dadurch Potenzial, in seiner Reife und Stabilität ZFS irgendwann zu überholen.

Derzeit teilen sich die beiden Dateisysteme jedoch ihre Nutzerbasis auf. Free-BSD-Systeme wie Heim-NAS-Server oder einige Geräte von Netzwerkanbietern werden weiterhin ZFS verbreiten. Die Linux-Community verwendet lieber Btrfs. Fakt ist: Beide Dateisysteme sind in Sachen Sicherheit und Datenstabilität anderen Systemen voraus, sei es Microsofts NTFS oder Exfat, ext4 und andere Standards.

Auch Apple entwickelt mit dem Apple File System APFS ein Dateisystem, das einige Funktionen von ZFS und Btrfs unterstützt - allem voran Snapshots und die Copy-on-Write-Mechanik. Was hier fehlt, ist etwa die Möglichkeit, redundante RAID-Systeme aufzuspannen und eine von den Daten unabhängige Fehlererkennung durch Checksummen.

Dort, wo es möglich ist: Administratoren sollten ernsthaft in Betracht ziehen, eines der beiden Dateisysteme in ihrer Netzwerkumgebung zu verwenden. Wie wir erfahren, ist anfangs einige Arbeit notwendig, sich darin zurechtzufinden. Es lohnt sich aber: Wir können mit Snapshots Backups erstellen, können unsere Daten mit einem Dateisystem-Raid redundant speichern und wir können uns sicher sein, dass wir es mit weniger Datenverlust während Schreibvorgängen oder durch Bitkorrumpierung zu tun haben.  (on)


Verwandte Artikel:
Canonical: Ubuntu 19.10 soll ZFS auf Root-Partition unterstützten   
(08.08.2019, https://glm.io/143069 )
ZFS ausprobiert: Ein Dateisystem fürs Rechenzentrum im privaten Einsatz   
(11.10.2017, https://glm.io/129252 )
Dateisystem: Microsoft bringt Exfat in die Linux-Community   
(29.08.2019, https://glm.io/143512 )
Statt Docker und Kubernetes: Facebook braucht Tupperware für seine Container   
(24.10.2017, https://glm.io/130782 )
Eoan Ermine: Ubuntu 19.10 erscheint mit ZFS und i386-Paketen   
(17.10.2019, https://glm.io/144478 )

© 1997–2020 Golem.de, https://www.golem.de/