Login
Newsletter
Werbung

Do, 18. Februar 2010, 19:00

ZFS unter Linux

Das Dateisystem ZFS ist eines der mächtigsten in der Unix-Welt. Es gehört nicht zum Linux-Kernel, aber dennoch kann man es problemlos unter Linux benutzen. Dieser Artikel soll einen kleinen Einblick in das ZFS-Thema geben. Am Beispiel einer Datensammlung und eines Software-RAIDs werden praktische Anleitungen für den Einstieg in dieses besondere Dateisystem gegeben.

Einleitung

Es gibt viele Dateisysteme für Linux und andere Betriebssysteme. Meist werden sie mit einem speziellen Ziel entwickelt, z.B. besonders groß oder schnell zu sein. Unter Linux ist derzeit Ext3 am verbreitetsten, wobei der Nachfolger Ext4 bereits seinen Weg in den Linux-Kernel gefunden hat. Wenn es um sehr große Datenmengen geht, wird auch schon mal ein neues Dateisystem entwickelt, z. B. um die Unmengen von Bildern bei Facebook zu lagern.

In diesem Artikel soll es aber um ein Allzweck-Dateisystem gehen, das nicht nur mit 248 Dateien, die bis zu 16 EiB (= 16·260 Byte) groß sein dürfen, zurecht kommt, sondern auch gleich diverse RAID-Level mit sich bringt. Man kann Festplatten zu einem Pool hinzufügen, wieder entfernen, Unmengen an Dateien anlegen, Backups blitzschnell mit Snapshots erstellen, Bereiche komprimieren und noch sehr viel mehr: Willkommen in der zettabyte-großen Welt von ZFS.

Der Ursprung

Das ZFS-Dateisystem wurde von Sun für Solaris 10 entwickelt. Ursprünglich stand ZFS für Zettabyte File System, heute ist der Name ein Pseudo-Akronym. ZFS steht unter der Lizenz CCDL, was den Einsatz unter OpenSolaris ermöglichte. Mittlerweile gibt es ZFS nicht nur für Solaris und OpenSolaris, sondern auch für FreeBSD, Mac OS X und dank FUSE auch für Linux.

Mit Googles Hilfe

Im Jahr 2006 hat Ricardo Correia das Projekt, ZFS mittels FUSE-Framework zu Linux zu portieren, gestartet. Dies geschah im Rahmen des Google Summer of Code. Daraufhin entstanden auch das zum Projekt gehörige Wiki und sein zfs-on-linux-Blog. Beide sind leider nicht mehr aktuell und Ricardo Correia hat sich aus dem Projekt zurückgezogen. Es wird aber auf einer neuen Seite weiter gepflegt und weiterentwickelt. Aktuell ist hier die Version 0.6.0 Beta. Über die Mailingliste findet man weitere Informationen sowie Kontakt zu anderen Benutzern und den Entwicklern.

ZFS und FUSE installieren

Um ZFS unter Linux zu benutzen, wird weitere Software benötigt. ZFS gehört nicht zum Linux-Kernel und bisher auch zu keiner Standardinstallation.

Mit dem Paketmanager installiert man ZFS, wobei die Pakete je nach Distribution unterschiedlich benannt sind. Die beschriebenen Tests wurden mit Gentoo Linux durchgeführt, bei dem das Paket zfs-fuse (sys-fs/zfs-fuse) genannt wird und in der Version 0.5.0 im portage tree (der offiziellen Gentoo-Paketsammlung) zu finden ist. Hilfen und hilfreiche Links zu Paketen von anderen Distributionen wie Debian und auch Quellcode findet man im WizyWiki bzw. auf der neuen Projektseite. Im Wiki von Ubuntu gibt es auch einen detaillierten Beitrag über die Installation und die Anwendung von ZFS.

Zusätzlich werden weitere Pakete über Abhängigkeiten benötigt und installiert (scons, fuse, ggf. weitere Pakete). Das mitinstallierte FUSE (Filesystem in Userspace) ermöglicht überhaupt erst, ein Dateisystem im Userspace zu benutzen. Auf den Webseiten von FUSE findet man auch eine gute Grafik, die den Zusammenhang zwischen Kernel und FUSE verdeutlicht, denn ansonsten werden Dateisysteme vom Kernel und seinen Modulen zur Verfügung gestellt.

ZFS starten

Um ZFS zu nutzen, müssen die Dienste für FUSE und ZFS erst einmal gestartet werden. Hierzu wird wiederum ein Kernelmodul benötigt. Um das Kernelmodul zu laden, nutzt man den Befehl modprobe fuse. Um die Dienste zu starten, gibt man die folgenden Befehle ein:

/etc/init.d/fuse start
/etc/init.d/zfs-fuse start

Zwei Befehle und alles gehorcht!

Im Grunde gibt es für ZFS nur zwei Befehle: zpool und zfs. Mit zpool schafft man die Grundlagen wie den Pool (ein Zusammenschluss von Festplatten) und das RAID-Level (Grad der redundanten Anordnung unabhängiger Festplatten). Mit dem Befehl zfs konfiguriert man dann die einzelnen Einstellungen, wie z. B. den Einhängepunkt oder die Komprimierung bis ins Detail. Um die beiden Befehle besser kennenzulernen, sollte man deren Hilfe in Form der Manpages lesen. Da ZFS nicht in allen Distributionen eingepflegt ist, kann man den Befehl am einfachsten ohne Argument aufrufen, also zpool bzw. zfs oder die Manpages für zpool und zfs auf den Seiten von Sun betrachten.

In den Beispielen werden drei oder teils auch mehr Festplatten verwendet: /dev/sda, /dev/sdb, /dev/sdc, /dev/sdX. Dabei ist sda das Linux-System und sdb, sdc etc. stehen für ZFS-Tests zur Verfügung. Man muss natürlich nicht ganze Festplatten, USB-Sticks oder sonstige Medien verwenden, es funktionieren ebenfalls Partitionen oder sogar Dateien, wobei letztere in diesem Artikel nicht behandelt werden. Sollte man Partitionen statt ganzen Speichermedien verwenden, muss immer auf die Partitionsnummer (z.B. sdc1, sdf3) geachtet werden, damit es keine Verwechslungen gibt und keine Daten verloren gehen.

Hinweis: Nur mit leeren Festplatten/USB-Sticks testen oder VORHER ein funktionierendes Backup erstellen, damit keine Daten verloren gehen!

Ab in den Pool

Einen Pool im ZFS kann man mit Virtual Volumes von LVM (siehe Der Logical Volume Manager) vergleichen, nur bietet ZFS die Möglichkeit, mehrere dieser Volumes in einem Pool zu vereinen. Gut veranschaulicht wird dies in der Präsentation von James C. McPherson The Last Word in Filesystems. Dort werden auch verschiedene RAID-Level und andere Zusammenhänge in Verbindung mit Festplatten und Dateisystemen verdeutlicht.

Der Pool, der aus einer oder mehreren Festplatten (oder auch USB-Sticks) bestehen kann, wird bei ZFS meist tank genannt, so auch hier in den Beispielen.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung