ZFS, ein Dateisystem für Mac OS X?
ml, den 10. Juni 2007Vor knapp acht Monaten stellte die Firma SUN ein neues Dateisystem unter dem Namen ZFS vor. Fast genauso alt sind die Gerüchte, Apple wird in Mac OS X Leopard sein Dateisystem HFS+ durch ZFS ersetzen. Erstmals tauchte ZFS im Leopard-Build 9A321 auf. Seitdem war es recht ruhig, bis letzte Woche Sun-Chef Jonathan Schwartze verriet, dass ZFS das Standard-Dateisystem von OS X Leopard wird.
Das ist der Grund für uns in einem Artikel einmal die Vor- und Nachteile des momentanen Standard-Dateisystems HFS+ mit denen von ZFS zu vergleichen. Gleichzeitig möchte ich erklären, warum es „so toll ist“, aber auch auf Schwächen bzw. Probleme aufmerksam machen.
HFS
Apple führte das „Hierarchical File System“ (HFS) vor knapp 21 Jahren ein. Für die damalige Zeit war es ein sehr fortschrittliches System. Mit Hilfe der Data- und Ressource-Forks war es nämlich möglich Programmcode und z. B. Icons in voneinander getrennten Teilen einer Datei zu speichern. Schon damals wurden Metadaten unterstützt, die in den sogenannten B*-trees gespeichert wurden.
Vor 8 Jahren erneuerte Apple für Mac OS 8.1 das mittlerweile in die Jahre gekommene Dateisystem und machte es fit für die sprunghaft angestiegenen Festplattengrößen. Im ursprünglichen HFS wurden Festplatten in 65.536 Blöcke (2^16) eingeteilt. Ein Block ist die kleinste Größe, die eine Datei im HFS einnimmt, selbst wenn die eigentliche Dateigröße viel geringer ist. Auf einer 1 GB großen Festplatte hatte man daher schon 16 KB große Blöcke. Mit HFS+ wurde die Anzahl der Blöcke auf 2^32 erhöht. Weitere wesentliche Verbesserungen waren die Unterstützung großer Dateien (Blockadressgröße 32 Bit gegenüber 16 Bit bei HFS) und bis zu 255 Zeichen lange Dateinamen im Unicode-Zeichensatz.
Mit Mac OS X 10.2.2 wurde HFS+ um eine Journaling-Funktion erweitert. Dies erhöht vor allen Dingen die Zuverlässigkeit des Dateisystems, da bevor eine Datei in das Dateisystem geschrieben wird, zunächst diese Änderungen in einer Log-Datei protokolliert werden. Die Log-Datei wird in einem speziellen Bereich der Festplatte abgelegt und ermöglicht es, das System nach einem Absturz schnell ohne aufwändige Festplattenchecks wieder lauffähig zu machen. Seit OS X 10.3 gibt es eine weitere HFS-Variante genannt HFSX die Dateien in Groß- und Kleinschreibung unterscheiden kann.
Trotz der vielen Verbesserungen am Dateisystem über die letzten Jahre, fehlen HFS+ etliche Dinge, die andere moderne Dateisysteme haben:
- Effiziente Speicherung und Verwaltung kleiner Dateien,
- logische Verwaltung der Laufwerke,
- Sicherstellung der Datenintegrität mit Hilfe von Checksummen und
- Systemabbilder (sog. Snapshots)
Effizienz und Sicherheit
Bevor ich mit der Vorstellung von ZFS beginne, möchte ich die genannten Punkte etwas näher erläutern und erklären, warum sie für den normalen Mac-OS-X-Benutzer interessant und wichtig sind.
Bei den Größen heutiger Festplatten, sind kleine Dateien der erklärte Feind schneller Dateisysteme. Durch seine Unix-Verwandtschaft bringt Mac OS X hunderttausende Dateien mit, die sich selbst auf einem normalen System schnell auf über eine Million summieren. Hinzu kommt, dass Spotlight einzelne Dateien verlangt, um diese zu indizieren. Das Programm Mail speichert in Mac OS X Tiger E-Mails daher nicht mehr im standardkonformen mbox-Format, sondern als einzelne Dateien, damit sie von Spotlight erfasst werden können. Für kleine Dateien sind kleine Blockgrößen daher ideal, allerdings nicht für große Dateien. Eine mögliche Lösung wären variable Blockgrößen oder mehrere kleine Dateien in einem Block zusammenzufassen.
Ein weiteres Ziel moderner Dateisysteme ist eine Abstraktion der logischen Laufwerke (Volumes) von den physischen (Festplatte). Damit ließe sich z. B. die Größe eines Volumes einfach durch Hinzufügen einer weiteren Festplatte erhöhen. Volumes müssten nicht neu formatiert werden und teure Spezialhardware wäre nicht nötig.
Früher war die Sicherstellung von Datenintegrität etwas, was von Banken gebraucht und genutzt wurde. Mit der Wandlung des Computers zum Zentrum des digitalen Lifestyles, werden solche Funktionen aber für Endanwender interessant. Denn wer verliert schon gerne seine Musik- oder Photosammlung aufgrund von zerstörten Daten. Checksummen können verhindern, dass Daten schleichend, z. B. durch einen Festplattenfehler, zerstört werden. Systemabbilder bilden den Zustand des Dateisystems zu einem bestimmten Zeitpunkt ab. Das klingt erstmal nach einem Backup, aber es gibt zwei wesentliche Unterschiede:
- Systemabbilder verbrauchen viel weniger Speicherplatz als Backups, da nur die geänderten Blöcke gesichert werden.
- Die Zeit um ein Backup zu erstellen, steigt mit der Größe des zu sichernden Speichermediums. Systemabbilder lassen sich unabhängig von der Größe immer in konstanter Zeit erstellen.
ZFS
Zunächst bietet ZFS alle Funktionen, die HFS+ bisher schon bietet. Darüber hinaus adressiert es aber die vorher genannten Probleme und löst sie.
Um eine zeitgemäße Laufwerksverwaltung zu ermöglichen, ist das Dateisystem nicht mehr nur auf eine Festplatte beschränkt, sondern kann ohne die Hilfe von Volume-Managern auf mehrere Festplatten ausgedehnt werden. Das wird mit Hilfe von sog. „zpools“ erreicht, die aus virtuellen Geräten bestehen. Virtuelle Geräte können einen RAID-Verbund, eine oder mehrere Festplatten darstellen. Damit steht die volle Kapazität aller virtuellen Geräte eines „zpools“ allen Dateisystemen, die auf diesen Pool zugreifen, zur Verfügung. Dabei muss man sich vorläufig keine Gedanken über die Größe machen, denn ZFS ist ein 128-Bit-Dateisystem und damit lassen sich 18 Milliarden Milliarden (18×10^18) mal mehr Daten speichern als mit aktuellen 64-Bit-Dateisystemen.
Um Snapshots zu unterstützen, schreibt ZFS geänderte Daten nicht in alte Blöcke des Dateisystems, sondern reserviert neue dafür. Die Blöcke mit den alten Daten werden erhalten und nicht zur Wiederverwendung freigegeben. Damit stehen alle Informationen für einen Snapshot sofort zur Verfügung. Diese Technik ist außerdem sehr effizient. Denn nicht geänderte Datenblöcke nutzen unterschiedliche Snapshots gemeinsam. So lassen sich Snapshots platzsparend speichern.
Da ein Snapshot normalerweise unveränderlich ist, lassen sich zusätzlich sog. „Klone“ erzeugen, die einen beschreibbaren Snapshot darstellen. Damit erzeugt man zwei unabhängige Dateisysteme. Diese nutzen zunächst alle Blöcke gemeinsam. Erst wenn Daten geändert werden, werden diese in Blöcken gespeichert, die dem Klon zugeordnet sind. Unveränderte Blöcke nutzen also alle Klonen immer gemeinsam.
Um den Umgang mit unterschiedlichen Dateigrößen und kleinen Dateien zu verbessern, erlaubt ZFS die Nutzung variabler Blockgrößen von bis zu 128 KB pro Block. Das verbraucht z. B. bei vielen kleinen Dateien weniger Speicherplatz. Zudem kann man sie so schneller von der Festplatte lesen. Die Geschwindigkeit des Dateisystems wird zusätzlich durch die Unterstützung von IO-Prioritäten und einer global-optimalen Abarbeitung von IO-Aufgaben verbessert.
Vorteile
Wie die Vorstellung der Funktionen von ZFS zeigt, ist es in der Lage die in HFS+ fehlenden Funktionen zu liefern und es evtl. sogar zu ersetzen. Damit könnte Mac OS X ein modernes, sicheres und schnelles Dateisystem bekommen, das auch die in Leopard kommende Time-Machine-Funktion deutlich besser als eine auf HFS+ realisierte Implementierung ermöglichen würde.
Durch das moderne Laufwerksmanagement ist es problemlos möglich, existierende Dateisysteme dynamisch mit mehr Speicherplatz zu versorgen, indem einfach eine weitere Festplatte als virtuelles Gerät dem „zpool“ hinzugefügt wird. Diese Funktion ist insbesondere für Betreiber von Servern interessant.
Nachteile
Trotz aller Vorteile bietet ZFS momentan noch einen gravierenden Nachteil. Von ZFS-Partitionen kann man bislang keine Betriebssysteme starten. Damit wäre ein Einsatz als Standarddateisystem in Mac OS X erstmal nicht möglich. Jedoch arbeitet man bei Sun an der entsprechenden Umsetzung dieser Funktion. Bis Ende dieses Jahres soll es soweit sein.
Fazit
ZFS ist ein Dateisystem, welches viele Menschen in Leopard eingesetzt sehen möchten. Die ersten Preview-Versionen von Leopard haben gezeigt, dass Apple vermutlich mindestens ZFS unterstützen wird. Damit könnte sich ein Migrationspfad andeuten, der, sobald ZFS Boot-Unterstützung bietet, den vollständigen Umstieg von HFS+ ermöglicht. Da Leopard jedoch noch bis mindestens Oktober auf sich warten lassen wird, ist es durchaus vorstellbar, dass Apple in Zusammenarbeit mit Sun diese Funktion bis dahin implementieren wird. Damit würde einem Einsatz von ZFS als Standarddateisystem in Leopard nichts im Wege stehen.
Die Vorzeichen stehen also gut und ZFS würde für Mac OS X gegenüber Windows Vista einen weiteren Vorteil darstellen. Jetzt ist also Steve Jobs an der Reihe, am Montag auf der Keynote ZFS als integralen Bestandteil von Leopard anzukündigen.