ZFS und die Zukunft der Dateisysteme

Veröffentlicht am: von

ZFS_LogoDateisysteme gibt es wie Sand am Meer. Jedes Betriebssystem kommt meist mit seinem eigenen daher und zusätzlich existieren noch mehrere Dutzend eigenständige Entwicklungen und Erweiterungen. Den meisten Benutzern dürften FAT, NTFS, HFS, UFS und ext ein Begriff sein und damit sind die wichtigsten Vertreter auch schon genannt. Viele ähneln sich in den meisten technischen Spezifikationen, können sich aber in entscheidenden Punkten unterscheiden. Doch die Verwaltung der immer größer werdenden Datenberge ist nicht nur für Data-Center ein Problem, zukünftig werden sich die Software-Entwickler etwas einfallen lassen müssen, um die Datenmenge und die dazugehörige Sicherung sowie Zugriffssicherheit zu gewährleisten. Am Beispiel von ZFS wollen wir uns ein mögliches Dateisystem der nahen Zukunft und dessen Features einmal genauer anschauen.

ZFS_1_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

ZFS ist ein von Sun Microsystems entwickeltes Meta-Dateisystem. Inzwischen wurde Sun von Oracle aufgekauft, daher findet sich der Hinweis auf ZFS auf der Oracle-Homepage unter folgendem Link. Es hält gegenüber den üblichen Vertretern zahlreiche Erweiterungen bereit, die nicht nur in Servern und Rechenzentren Verwendung finden, sondern auch für den Heimgebrauch nützlich sein können. Dazu gehören eine integrierte RAID-Funktionalität, ein Volume-Management, ein integriertes Backup-System sowie ein prüfsummenbasierter Schutz der Daten auf Dateisystem-Ebene.

Der Name ZFS stammt ursprünglich von Zettabyte-File-System, inzwischen aber wird dieser Name nicht mehr benutzt. Um der Abkürzung ZFS, die sich inzwischen etabliert hat, aber treu zu bleiben, wird der letzte Buchstabe des Alphabets in diesem Sinne als letztes Wort in Sachen File-System interpretiert. ZFS wird unter einer Sun-Lizenz als Open-Source CDDL geführt und kann daher von jedem versierten Anwender auf ein beliebiges Betriebssystem portiert und verwendet werden. Ursprünglich entwickelt wurde es für Solaris um es dort in Data-Centern einzusetzen.

Bevor wir jetzt auf die Details von ZFS näher eingehen, wollen wir uns die technischen Daten einmal genauer anschauen:

Maximale Wortlänge: 128 Bit - dies bieten auch einige andere Dateisysteme und ist in der Praxis zu vernachlässigen
Höchstzahl von Dateien: 248 - Damit soll auch das zukünftige Datenvolumen noch verwaltet werden können. Zum Vergleich NTFS kann nur 232 Dateien verwalten.
Maximale Größe des Dateisystems: 16x 260 Byte - damit lassen sich mehr Byte in einem ZFS verwalten, als es Atome im bekannten Universum gibt. Zum Vergleich: NTFS kann maximal "nur" 260 Byte verarbeiten.
Maximale Größe einer Datei: 16x 260 Byte - auch hier wieder eine kaum vorstellbare Zahl, an die NTFS mit maximalen 16 TB nicht heran kommt.

Obige Angaben sollen nur unterstreichen, wozu ZFS entwickelt wurde: es soll den Bedarf der Datenverwaltung in der Zukunft sichern. Jeff Bonwick, der Chefentwickler von ZFS, sprach davon, dass diese technischen Voraussetzungen für immer ausreichen sollten. In der Informatik sollte man mit diesen Begriffen aber vorsichtig umgehen. Auch wenn man sich oben genannte Dimensionen momentan noch nicht vorstellen kann, so könnte dies in 20 Jahren schon ganz anders aussehen.


Anlegen eines zPools

Nahezu alle Dateisysteme sind mehr oder weniger an die verwendete Hardware gebunden bzw. gewissen Einschränkungen unterworfen, die sich daraus ergeben. Bei ZFS ist das anders. Hier können Festplatten oder Partitionen nicht nur einzeln verwaltet werden, sondern es werden sogenannte Pools, in diesem Fall zPools, erstellt. Eine theoretisch beliebige (264) Anzahl an Festplatten kann zu einem zPool zusammengefasst werden. So lässt sich eine 1000 GB und eine 500 GB fassende Festplatte zu einem 1,5-TB-zPool zusammenführen. Verwendet werden können aber nicht nur Festplatten, sondern beliebige Volumes, also auch USB-Sticks, SSDs, etc. pp. Diese zPools sind ebenfalls sehr dynamisch zu verwalten und lassen sich zu einem beliebigen Zeitpunkt in ihrer Größe ändern. Reichen die 1,5 TB des bisherigen zPools nicht aus, kann einfach eine weitere 1 TB Festplatte angehängt werden und der zPool erweitert sich auf 2,5 TB.

Soweit so gut - nun kann ein erstes File-System unter ZFS angelegt werden, wobei der Begriff "File-System" nicht mit dem eigentlichen Dateisystem verwechselt werden darf. Der ZFS formatierte zPool ist bereits vorhanden und die Dateiverwaltung findet auf Basis von ZFS statt, doch der Anwender kann in einem zPool virtuelle Laufwerke anlegen. Per Default wird der komplette zPool als "Tank"-Volume angelegt und kann ab sofort verwendet werden.

RAID-Z

Wem diese eindimensionale Dateispeicherung zu unsicher ist, dem stehen zudem RAID-Fähigkeiten zur Verfügung. Wie bei einem üblichen RAID auch, wird durch Festlegung der Anzahl der Festplatten über die Redundanz entschieden. Kommen zwei Festplatten zum Einsatz, stehen dem Anwender das übliche RAID0 und RAID1 zur Verfügung. Ab dem Einsatz von drei Festplatten kommen dann noch weitere Optionen hinzu. RAID-Z1 entspricht in etwa dem RAID5. Es vereint die Performance von RAID0 und die Sicherheit von RAID1 durch ein Parity-Bit. Wer vier Festplatten einsetzt, der kann seine Daten auch einem RAID-Z2 anvertrauen. Dies entspricht einem RAID6 mit zwei Parity-Bits. Ab einer weiteren Festplatte steht auch RAID-Z3 zur Verfügung, bei dem drei Parity-Bits vorhanden sind und die Sicherheit nochmals deutlich erhöht.

Vielen Soft- und Hardware-Controllern für den RAID-Betrieb ist es nicht möglich unterschiedlich große Festplatten zu verwenden. Auch hier arbeitet ZFS deutlich flexibler. So können drei Festplatten mit Größen von 500 GB, 1 TB und 2 TB in einem RAID-Z verwendet werden. Im RAID-Z1 würde dies einer maximal verwendbaren Volume-Größe von 1 TB (2x 500 GB + 1 TB Parity) entsprechen. Wird die 500-GB-Festplatte durch ein Modell mit einer Kapazität von 1 TB ausgetauscht, erhöht sich das nutzbare Volume auf 2 TB (2x 1 TB + 2 TB Parity). Dies alles kann geschehen, ohne dass das RAID neu aufgebaut werden muss. Das ZFS baut die Dateistrukturen selbstständig neu um, ohne Zutun des Anwenders.


Checksum-Support

Magnetische Festplatten gehören inzwischen zu den anfälligsten Teilen eines Computer-Systems. Da hier die meisten Datenfehler auftreten, besitzt ZFS einen integrierten Checksum-Support. Dazu wird eine 32-Bit-Prüfsumme zusammen mit einem 256-Bit-Hash verwendet. Wird der entsprechende Datenblock gelesen, werden die Daten über diesen Mechanismus verifiziert. Datenfehler werden so schon auf Dateisystem-Ebene erkannt und können gegebenenfalls behoben werden. Zudem ergibt dieses System einen deutlich zuverlässigeren Überblick über den Zustand der Festplatte, als dies der S.M.A.R.T.-Status tut. 

Daten, die bereits vorhanden sind und verändert werden, werden nicht einfach überschrieben. Stattdessen wird ein neuer Block angelegt, die Veränderungen geschrieben und diese dann verifiziert. Metadaten des zu überschreibenden Blocks werden übernommen und zum neuen Block hinzugefügt. So steht noch immer eine alte Version des Datenblocks zur Verfügung, falls bei der Bearbeitung des aktuellen etwas nicht korrekt abläuft und die Daten nicht geschrieben werden können.

Snapshot

Wohl das wichtigste und revolutionärste Feature von ZFS sind die sogenannten Snapshots. Dabei wird vom "lebenden" Dateisystem ein Schnappschuss angefertigt - das Dateisystem wird im aktuellen Zustand eingefroren. Dieser Vorgang nimmt aber keinerlei Zeit in Anspruch, da die Dateien sich ja bereits auf der Festplatte befinden. Im Anschluss werden einfach nur noch die Veränderungen geschrieben. Snapshots lassen sich auch in andere zPools übertragen und erlauben so ein einfaches Backup des File-Systems bei möglichst geringer Datenmenge.

Gerade im Vergleich zu anderen Backup-Lösungen zeigen sich die Vorteile der Snapshots. Nehmen wir einmal Time-Machine von Mac OS X. Verändert sich hier eine 1 GB große Datei, so wird beim nächsten Backup die komplette 1 GB große Datei gesichert. Erfolgen diese Veränderungen in regelmäßigen Abständen, würde dies bei einer stündlichen Sicherung ein gewaltiges Datenaufkommen nach sich ziehen. Die Snapshots von ZFS arbeiten auf Dateiblock-Ebene und speichern eben nur die Veränderungen der Datei. Dies spart Datenplatz und erlaubt auch schnelle Sicherungen bzw. deren Übertragung.


Clones

Eine Art Erweiterung der Snapshots sind Clones. Hierbei wird ein beschreibbarer Snapshot angelegt, was in zwei separaten File-Systemen auf einem Datenblock resultiert. Werden nun Veränderungen an einem der Klone durchgeführt, werden neue Datenblöcke von beiden angelegt. Auf unveränderte Daten greifen aber weiterhin beide Klone zurück.

Quota und Reservation

In einem zPool angelegten File-Systems können Attribute wie Quota und Reservation zugeteilt werden. Dabei wird festgelegt, wie viel Speicherplatz das jeweilige File-System im zPool verbrauchen darf. Zudem lassen sich über Reservation bestimmte Größen für File-Systeme reservieren. Diese Pool-Eigenschaften können aber auch global vom zPool aus, auf alle File-Systeme, vererbt werden.

Kompression

Wie viele andere Dateisysteme auch, unterstützt ZFS ebenfalls die Kompression der Daten auf dem Dateisystem. Natürlich handelt es sich dabei um eine verlustfreie Kompression. Geplant war und ist weiterhin auch eine automatische Erkennung des Datei-Typs und darauf folgend die Anwendung einer bestimmten, oftmals verlustbehafteten, Kompression wie beispielsweise MP3 oder JPEG.


Einrichtung und Verwaltung von ZFS

ZFS_2_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Um sich einen ersten Einblick in ZFS zu verschaffen, empfiehlt sich der Aufbau eines Linux-Systems. Wir entschieden uns hier für FreeBSD in der aktuellen Version 8.0. Die entsprechenden Extensions können durch Eingabe des entsprechenden Kommandozeilen-Codes heruntergeladen werden.

ZFS_3_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Danach können die ZFS-Pakete installiert werden und schon stehen unter FreeBSD die vollen ZFS-Features zur Verfügung.

ZFS_4_rs

Durch Klick auf das Bild gelangt man zu einer vergrößerten Ansicht

Nun können freie Volumes ausgewählt und darauf ein zPool angelegt werden. Detaillierte Anleitungen zur weiteren Konfiguration sind im Wiki zu FreeBSD zu finden.


Die eigentliche Intension dieses Artikels war der Blick in die Zukunft der Dateisysteme. Dabei haben wir uns am Beispiel von ZFS orientiert, da es derzeit das einzige Dateisystem mit Zukunftsaussichten ist und auch noch frei und relativ einfach verwendet werden kann. Ursprünglich war auch ein Support von ZFS unter Mac OS X 10.6 geplant, Apple hat diesen aber kurz vor der Veröffentlichung von Snow Leopard gestrichen. Inzwischen arbeitet man bei Apple vermutlich selbst an einem Next-Generation-Dateisystem.

Ähnliches gilt auch für Windows, wo schon mit Vista mit WinFS gerechnet wurde. Microsoft hat aber einen anderen Weg eingeschlagen und "Innovationen" aus WinFS bereits in Windows 7 einfließen lassen. Dabei wurden natürlich einige Features gestrichen, da kein komplett neues Dateisystem eingepflegt wurde. Auch bei Microsoft arbeitet man sicher an einem kommenden Dateisystem, um den Anforderungen, die zukünftig erwartet werden, gerecht zu werden.

Wer etwas Spaß an Basteleien hat und wer auch vor der Kommandozeile in einem UNIX-System nicht zurückschreckt, der sollte sich ZFS einmal näher anschauen. Gerade wenn es um die Speicherung von großen Datenmengen, eine hohe Flexibilität und auch Ausfallsicherheit geht, kann ZFS überzeugen. Rein auf technischer Ebene ist noch kein Fall bekannt, bei dem durch die Verwendung von ZFS Daten verloren gegangen sind.

Natürlich bieten auch andere Dateisysteme einige Features von ZFS. Quota, Reservation und Kompression wird auch von anderen Systemen beherrscht. Der Checksum-Support auf Dateisystem-Ebene und die Snapshots heben ZFS aber deutlich von den übrigen Dateisystemen ab.

Weitere Links: