Über ZFS

Bei ZFS handelt es sich um ein relativ neues Dateisystem von Sun Microsystems. Ich hatte bereits vor einigen Jahren in einem Heise Online Artikel über ZFS gelesen und war damals sofort sehr angetan von diesem Dateisystem.

Das besondere an ZFS ist, dass es nicht nur ein Dateisystem ist, sondern auch noch gleich einen Volume-Manager integriert hat. Der Volume-Manager unsterstütz dabei RAID-0 (Daten werden gleichzeitig auf mehrere Platten aufgeteilt), RAID-1 (Mirroring) und RAID-Z. Bei RAID-Z handelt es sich um eine Art von RAID-5, bei dem auch eine Festplatte ausfallen darf. Ebenfalls kann durch den Volume-Manager die Dateisystemgröße, durch hinzufügen oder entfernen von Festplatten, während des Betriebes geändert werden.

Bei dem Dateisystem handelt es sich um ein 128-Bit Dateisystem und unterstützt daher riesige Partitionen bzw. Dateigrößen. Ebenfalls besitzt ZFS die Fähigkeit schnell und einfach Snapshots und Clones vom Dateisystem zu erstellen. ZFS ist zudem immer in einem konsistenten Zustand, benötigt daher kein Journal oder Filesystem-Checks. Eine weitere Fähigkeit von ZFS ist die Kompression.

Ich benutze ZFS nun seit einiger Zeit auf meinem File-Server (Betriebssystem: Solaris 10) zu Hause, auf dem ich zum größten Teil Backups meiner Rechner bzw. meines Servers lagere.

Besonders schön finde ich die Administration von ZFS, die wirklich sehr einfach und schnell zu lernen ist. Es geht wirklich sehr schnell einen Pool anzulegen und in diesen dann wiederum Dateisysteme zu erstellen. Für diese ganzen Aktionen sind nur zwei Programme notwendig: zpool und zfs. Um einen Eindruck über die Administration zu erhalten, empfehle ich einen Blick auf diesen Screencast zu werfen.

Besonders die Kompressionsfähigkeit von ZFS finde ich vorteilhaft für meinen File-Server. Zwar bremst die eingeschaltete Kompression etwas die Performance aber das Sparen von Speicherplatz ist mir auf meinem File-Server wichtiger. Genau aus diesem Grund habe ich mich dazu entschieden, zu testen wie gut in ZFS komprimiert wird. Ich habe habe das mit einer ca. 8MB großen Log-Datei und einem Ordner mit insgesamt etwa 33MB an verschiedenen Dateien getestet. Zum Vergleich habe ich die Dateien ebenfalls mit gzip und bzip2 komprimiert. Zusätzlich habe ich diese auch auf ein NTFS Laufwerk mit eingeschalteter Kompression kopiert, um auch Kompressionsraten von NTFS von denen mit ZFS zu vergleichen. Bei gzip und bzip2 wurden die Standardeinstellungen verwendet.

Die Ergebnisse:

Log-Datei
Mechanismus Größe Größe in %
ohne 8264kB 100%
ZFS 927kB 11,2%
NTFS 5184kB 62,7%
gzip 304kB 3,7%
bzip2 136kB 1,6%

 

Ordner mit Dateien
Mechanismus Größe Größe in %
ohne 33649kB 100%
ZFS 20153kB 59,9%
NTFS 22887kB 68,0%
gzip 8840kB 26,3%
bzip2 6336kB 18,8%

Wie zu erwarten war, hat ZFS gegen bzip2 und gzip keine Chance, was die Kompressionraten angeht, jedoch sind die Ergebnisse zufriedenstellend. Bei der Log-Datei hat ZFS besser komprimiert als bei dem Ordner mit mehreren Dateien. Eindeutiger Verlierer war NTFS, besonders bei der Log-Datei hat NTFS eine, im Vergleich zu den anderen Methoden, sehr schlechte Kompression erreicht. 

Fazit: Für meinen File-Server reicht die Kompression von ZFS aus, da sie einen guten Kompromiss aus Performance und Kompressionsrate liefert. Ich kopiere meine Backups meistens per rsync auf den File-Server, also nicht komprimiert und da ist die Kompression von ZFS sehr nützlich. Auch die Möglichkeit den Pool jederzeit durch den Einbau einer Platte zu vergrößern, ist ein großer Pluspunkt. Natürlich kann man das auch durch andere Systeme ermöglichen, wie z.B. unter Linux mit LVM, jedoch sind diese nicht so leicht und schnell zu konfigurieren wie ZFS. Daher ist ZFS für mich ein sehr gutes Dateisystem. Außer Solaris und OpenSolaris unterstützen mittlerweile auch andere Betriebssysteme ZFS.  So existiert in Mac OS X 10.5 bereits die Möglichkeit lesenden auf ZFS zuzugreifen und es wird in Zukunft bestimmt auch einen schreibenden Zugriff geben. FreeBSD besitzt seit Release 7.0 eine experimentelle Version von ZFS.