ZFS: Was bringt ein Dateisystem?
Autor/Redakteur: Heiko Wüst, Sales Engineer, Nexenta Systems/gg
Gibt es gute Gründe, sich für eine neues Dateisystem zu entscheiden, um seine Daten zu speichern? Seit langem reden Storage-Experten vom Open Source Dateisystem ZFS, doch nach über zehn Jahren Entwicklungszeit herrscht bei Anwendern noch viel Unklarheit über dessen Vorteile. Das fängt mit der Abkürzung an, die zeitweise für „Zettabyte File System“ stand, aber mittlerweile nur noch ein Pseudo-Akronym ist. ZFS ist eine Kombination aus Dateisystem und einem logischen Volume-Manager. Es bietet eine praktisch unlimitierte Speicherkapazität, den prüfsummenbasierten Schutz vor Übertragungsfehlern, die Integration von Snapshots, ein kontinuierliche Überprüfung der Datenintegrität und automatische Reparatur von korrupten Daten. Deutlicher wird die Bedeutung von ZFS aber, wenn man darstellt, was es vor anderen Dateisystemen auszeichnet. Und das sind die folgenden neun Punkte.
Das Open Source Dateisystem ZFS bietet:
1.) 128-bit statt 64-bit
2.) Selbstheilung statt Datenkorruption
3.) Copy-on-Write statt batteriegepuffertem Speicher (NVRAM)
4.) ARC (Adaptive Replacement Cache) statt Tiered Storage
5.) Flexibilität eines Speicherpools statt Volume-Manager und Partitionierung
6.) RAID-Z in der Software statt proprietärem Hardware-RAID-Controller
7.) Deduplizierung statt Mehrfachablage
8.) Volle Datenhistorie statt limitierter Snapshots
9.) Unified Storage statt Speicherwildwuchs
Dieser Beitrag geht im Detail auf die genannten neun Punkte ein.
1. 128-bit statt 64-bit
Im Gegensatz zu anderen Dateisystemen, die gewöhnlich 64 Bit aufweisen, ist ZFS ein 128-Bit-Dateisystem. In vielen Unternehmen verdoppelt sich die Datenmenge mittlerweile jährlich und so kommen 64-Bit-Dateisysteme in vielen größeren Speicherumgebungen an ihre Grenze. In ein 128-Bit-Dateisystem kann man schlichtweg viel mehr Daten speichern – so viele, dass die reale Grenze eher darin besteht, die nötige Energie für den Strom aufzubringen. Jeff Bonwick, einer der Erfinder von ZFS, wird mit den Worten zitiert, man könne einen 128-Bit-Speicher-Pool nicht füllen, “ohne die Ozeane zu verdampfen.” Es gibt in der Praxis kein Limit für Dateigröße oder die Anzahl an Dateien. Daher sind hochskalierbare ZFS-basierte Systeme oft die erste Wahl für Cloud-Storage- oder Hosting-Anbieter sowie in virtuellen Umgebungen. Wenn Installationen in den Petabyte-Bereich gehen, wird es fast alternativlos, ein 128-Bit-Dateisystem zu wählen.
2. Selbstheilung statt Datenkorruption
Keines der proprietären Dateisysteme großer Hersteller bietet vollkommenen Schutz gegen den Verlust von Daten. Alle Systeme leiden unter schleichender Datenkorruption (englisch “Silent Data Corruption”). Das bedeutet, dass Datenblöcke aufgrund ihres Alters nicht mehr lesbar sind beziehungsweise, dass ionisierende Strahlung oder Magnetfelder sie verändert haben. Weitere Ursachen sind verirrte Schreiboperationen, fehlerhafte Motherboards, Controllerkarten, Firmware oder aber Phantom-Schreibvorgänge. Bei letzteren wurden die Daten nie tatsächlich geschrieben, aber die Festplatte hat bereits Vollzug gemeldet. Die Informationen sind dann unwiederbringlich verloren. Traditionelle Dateisysteme bekämpfen Datenkorruption mit Prüfsummen mit einer Größe von acht Bit, speichern diese jedoch im entsprechenden Datenblock. Damit können diese zwar Bit-Fäule (Bit Rot) erkennen, nicht jedoch Phantom-Schreibvorgänge, falsch adressierte Schreibvorgänge, DMA Paritätsfehler, Treiberbugs oder zufälliges Überschreiben. ZFS bietet dagegen verteilte End-to-End-Prüfsummen, die dafür sorgen, dass jedes einzelne Bit im gesamten Dateisystem stimmt oder andernfalls wieder automatisiert wiederhergestellt wird. ZFS bildet Prüfsummen über Metadaten und Nutzdaten ab und speichert diese Informationen im Gegensatz zu traditionellen Systemen in einem extra Block, dem sogenannten “Parent Block”, ab. Die Prüfsummen werden hierarchisch in einem Merkle-Baum erstellt – bis hin zum letzten Block, dem sogenannten “Überblock”. Auf diese Weise wird die Datenintegrität konsistent über alle Informationen sichergestellt. Das System heilt Datenfehler ohne manuelle Eingriffe selbst.
3. Copy-on-Write statt batteriegepufferter Speicher (NVRAM)
Eng mit dem vorangegangenen Thema der Datenintegrität hängt auch das Thema zusammen, wie Informationen geschrieben werden. Herkömmliche Storage-Systeme nutzen das Read-write-modify-Verfahren. Das heißt, originale Blöcke werden während einer Schreiboperation mit neuen Daten überschrieben. Ein klassisches “RAID-5 Schreibloch” entsteht, wenn das System zwischen der Änderung von Daten und der Neuberechnung der Paritätsdaten ausfällt. Die Folge sind falsche Paritätsdaten. Wenn jemals die Originaldaten mit diesen falschen Paritätsdaten wiederhergestellt werden sollen, sind komplett unbrauchbare Daten das Ergebnis. Das schlimmste: Die Fehler werden immer erst erkannt, wenn die Daten bereits verloren sind. Dagegen helfen soll in herkömmlichen Systemen ein batteriegepufferter Speicher (NVRAM). Dieser hilft jedoch nur gegen Stromausfälle, nicht aber gegen Systemausfälle aus anderen Gründen.
ZFS vermeidet dieses Problem von vornherein, indem es nie die ursprünglichen Daten mit den neuen Daten überschreibt. Dies nennt sich Copy-on-Write Verfahren. Stattdessen werden die geänderten Daten neu allokiert und der gesamte Prüfsummenbaum neu berechnet. Auf diese Weise sind Daten in ZFS stets konsistent – und es wird kein NVRAM in der Hardware benötigt, das die Speichersysteme teurer macht.
Um das Schreiben der Daten zu beschleunigen, kommt bei ZFS das “copy-on-write transactional I/O Modell” zum Einsatz. Wenn aktive Daten mit neuen Daten ersetzt werden sollen, wird ein neuer Block zugewiesen. Die Metadaten als Referenz des Originals ändern sich, um auf den neuen Block zu verweisen. Als Resultat sind die meisten I/Os in ZFS sequentiell und deshalb schneller zu finden. Außerdem nutzt ZFS ein Log, in dem alle Schreiboperationen gelistet sind. Im Falle eines Fehlers wird dieses Log genutzt, um die befallenen Blöcke ohne manuelle Eingriffe wiederherzustellen.
