ZFS-Eigenschaften

ZFS ist ein Dateisystem, welches die Rollen eines Volumenmanagers und Dateisystems miteinander kombiniert. Das Besondere ist, dass ZFS die Struktur der Speichermedien kennt und auf diese Weise ein zusammenhängender Speicher-Pool (zpool) zur Verfügung steht. Der Speicher-Pool wird unter den verfügbaren Dateisystemen aufgeteilt. Sobald weitere Speichermedien zum Pool hinzugefügt werden, wachsen die existierenden Dateisysteme automatisch mit und der neue Speicherplatz wird allen Dateisystemen zur Verfügung gestellt.

Herkömmliche Dateisysteme, wie beispielsweise NTFS, ext3 oder UFS verhalten sich anders. Hier werden Festplatten, RAID-Controller, Volumenmanager und Dateisystem voneinander getrennt. Dateisysteme können nur auf einer Festplatte gleichzeitig angelegt werden. Sobald eine zweite Festplatte eingefügt wird, müssen zwei separate Dateisysteme erstellt werden.

Weitere Vorteile von ZFS sind:

ZFS-Eigenschaften 1:
Übersicht zum Aufbau des Speicher-Pools inklusive Speichermedien und Datasets.

vDev
Die vDevs repräsentieren die zugrundeliegende Hardware, wie beispielsweise HDDs, SSDs oder CFast-Karten. Es gibt verschiedene vDev-Arten. Ein vDev kann aus einer Festplatte, einer Gruppe von Festplatten, einem File, einem Mirror aus zwei oder mehreren Festplatten oder verschiedenen RAID-Z-Konfigurationen bestehen.

Wenn mehrere vDevs eingesetzt werden, dann werden die Daten unter den verfügbaren vDevs aufgeteilt, um die Geschwindigkeit zu steigern und den Speicherplatz optimal auszunutzen. Wenn ein vdev ausfällt sind die Daten des gesamten Pools verloren. Daher ist eine entsprechende Redundanz (z.B. RAID1) bei einem vdev sinnvoll.

Speicher-Pool (zpool)
Ein Speicher-Pool (zpool) wiederum besteht aus einem oder mehreren vDevs. Ein Speicher-Pool (zpool) ist die Basis von ZFS und ist im Grunde eine Ansammlung von vDevs. Die vDevs repräsentieren ihrerseits die zugrundeliegende Hardware, wie beispielsweise HDDs, SSDs oder CFast-Karten, die die Daten speichern.

Die vDevs werden zu einem Speicher-Pool zusammengefasst. Ein Speicher-Pool wird dann verwendet, um ein oder mehrere Dateisysteme (Datasets) oder Blockgeräte (Volumes) zu erstellen. Diese Datasets und Volumes teilen sich den im Pool verfügbaren Speicherplatz.

Datasets
Dataset ist der allgemeine Begriff für ein ZFS-Dateisystem, Volume, Snapshot oder Klon. Es können beliebig viele Datasets angelegt werden, die ihrerseits auf einem Speicher-Pool aufsetzen und Verzeichnisse und Dateien beihalten. Datasets bauen hierarchisch aufeinander auf. Es gibt ein Wurzel-Dataset, mit darauffolgenden Eltern-Datasets, Kind-Datasets und weiterführende Abstufungen.

Die Datasets erben alle Eigenschaften von den Eltern und Großeltern. Es ist aber möglich, die geerbten Standardwerte der Eltern und Großeltern zu ändern und zu überschreiben. Grundsätzlich können für jedes Dataset Eigenschaften, wie beispielsweise Komprimierung, Schreib- und Lesezugriff, Speicherplatzreservierung (quotas) oder Netzwerkfreigaben festgelegt werden.

Beispiel für ein Dataset:
zroot/tmp

In diesem Beispiel ist zroot/ das Wurzel-Dataset und gleichzeitig die Bezeichnung für den Speicher-Pool (zpool) unter TwinCAT/BSD. Sie können sich alle vorhandenen Datasets mit dem Befehl zfs list anzeigen lassen.

ZFS-Eigenschaften 2:
Datasets des TwinCAT/BSD-Betriebssystems.

Das Dataset zroot/ROOT/defaul beinhaltet das Basissystem, alle Programme und TwinCAT. Das Dataset zroot/ROOT/restore ist eine Bootumgebung die zum Wiederherstellen von Wiederherstellungspunkten und dem Zurücksetzen auf Werkseinstellungen genutzt wird (siehe: Wiederherstellungsoptionen). Die anderen Datasets werden in ihren jeweiligen Mountpoints gemountet und sind über die Dateisystemhierachie zu erreichen (siehe: Verzeichnisstruktur). Datasets ermöglichen das individuelle Definieren von Optionen wie Lese- und Schreibrechten für ganze Speicherbereiche oder die Begrenzung von Speicherplatz für beispielsweise Logdateien oder das Home-Verzeichnis. Darüber hinaus lassen sich einzelne Datasets durch Snapshots sichern.

Zusätzlich dazu, wird mit zfs list zu jedem Dataset der Standard-Mountpoint angegeben, also der Punkt in der Dateisystemhierarchie des Betriebssystems, über den auf das Dataset zugegriffen werden kann, sofern es gemountet ist. Die meisten Datasets werden direkt nach dem Systemstart automatisch gemountet. Mit dem Befehl zfs mount lassen sich die aktuell tatsächlich gemounteten Datasets anzeigen. Erst durch gemountete Datasets wird ein Dateisystem, Verzeichnis oder Gerät für den Benutzer zugänglich gemacht. Der Speicher-Pool (zpool) und die dazugehörigen Datasets werden in TwinCAT/BSD direkt nach dem Booten gemountet.

Volumes
Ein Volume ist ein spezieller Typ von Dataset. Es wird nicht als Dateisystem eingehängt und ist stattdessen ein Blockgerät unter /dev/zvol/poolname/dataset. Dies erlaubt es das Volume für andere Dateisysteme zu verwenden, die Festplatten einer virtuellen Maschine bereitzustellen oder über Protokolle wie iSCSI oder HAST (Highly Available Storage) exportiert zu werden. Ein Volume kann mit einem beliebigen Dateisystem formatiert werden oder als reiner Datenspeicher fungieren. Für den Benutzer erscheint ein Volume als eine gewöhnliche Platte mit einer fixen Größe.