Was ist ZFS? Funktionen und Datensicherheit
Autor: Redaktion Domeny.ForSale Veröffentlicht
Kurz gesagt: ZFS verbindet ein Dateisystem mit der Verwaltung des Speicherplatzes auf Datenträgern. Es prüft die Datenintegrität, ermöglicht Snapshots und fasst Datenträger zu Speicherpools zusammen. Es eignet sich besonders für Server und NAS-Geräte, die Dateien über das Netzwerk bereitstellen, ersetzt aber kein Backup.
Wie ZFS funktioniert und sich von einem gewöhnlichen Dateisystem unterscheidet
Ein Dateisystem legt fest, wie Daten auf einem Datenträger gespeichert und wiedergefunden werden. ZFS übernimmt außerdem Aufgaben, die bei anderen Lösungen häufig eine separate Schicht erledigt: das Zusammenfassen von Datenträgern, die Datenredundanz und die Zuweisung von Speicherplatz. Dadurch hat ZFS direkten Einblick sowohl in die Dateistruktur als auch in den Speicherort der Daten.
ZFS wurde bei Sun Microsystems entwickelt. Heute verwenden viele Linux- und FreeBSD-basierte Lösungen OpenZFS – eine als Open-Source-Software weiterentwickelte Implementierung von ZFS. Welche Funktionen verfügbar sind und wie die Installation abläuft, hängt vom System und der Version ab. Deshalb muss die Konfigurationsanleitung zur jeweiligen Umgebung passen.
Der Speicher in ZFS ist in mehrere Ebenen gegliedert:
- Pool (zpool) bezeichnet einen gemeinsamen Speicherbereich, der aus einer oder mehreren Gerätegruppen besteht.
- Vdev bezeichnet ein logisches Gerät, aus dem ein Pool aufgebaut wird, beispielsweise einen einzelnen Datenträger, einen Spiegel oder eine RAID-Z-Gruppe.
- Dataset bezeichnet ein eigenständiges Dateisystem innerhalb eines Pools, für das sich eigene Einstellungen festlegen lassen, etwa Kompression und Speicherplatzlimits.
Du kannst also separate Datasets für Dokumente, Multimedia und Backups von Computern anlegen, ohne die Datenträger starr in Partitionen mit festen Größen aufzuteilen. Die Datasets nutzen den gemeinsamen freien Speicherplatz unter Berücksichtigung der festgelegten Limits und Reservierungen.
Wie ZFS Datenbeschädigungen erkennt
ZFS verwendet Prüfsummen, also Werte, die aus dem Inhalt der Daten berechnet werden. Beim Lesen prüft es, ob die gespeicherten Blöcke mit ihren Prüfsummen übereinstimmen. So lassen sich unter anderem stille Datenbeschädigungen erkennen, bei denen ein Gerät fehlerhafte Inhalte zurückgibt, ohne einen Lesefehler zu melden.
Ein erkannter Fehler lässt sich nicht immer beheben. Verfügt der Pool über ausreichende Redundanz, etwa durch einen Spiegel, kann ZFS eine intakte Kopie des Blocks lesen und die beschädigte Kopie reparieren. Auf einem einzelnen Datenträger kann ZFS beschädigte Dateidaten erkennen, ihren Inhalt aber ohne eine zusätzliche intakte Kopie nicht wiederherstellen.
ZFS nutzt außerdem Copy-on-Write: Statt einen verwendeten Block zu überschreiben, speichert es die geänderten Daten an einer neuen Stelle und aktualisiert anschließend die Verweise. Das hilft, die Struktur des Dateisystems konsistent zu halten, und bildet die Grundlage für Snapshots. Es bedeutet jedoch nicht, dass bei einem plötzlichen Stromausfall jede zuletzt vorgenommene Änderung einer Anwendung erhalten bleibt.
Zur regelmäßigen Überprüfung dient ein Scrub, bei dem die gespeicherten Daten anhand ihrer Prüfsummen kontrolliert werden. Bei vorhandener Redundanz lassen sich dabei auch erkannte Fehler beheben. Ein Scrub ergänzt die Überwachung der Datenträger, ersetzt aber weder deren Diagnose noch ein Backup.
Snapshots, Kompression und Backups
Ein Snapshot hält den Zustand eines Datasets zu einem bestimmten Zeitpunkt fest. Anfangs benötigt er nur wenig zusätzlichen Speicherplatz. Der Platzbedarf steigt, wenn alte Blöcke geänderter oder gelöschter Daten erhalten bleiben müssen. Deshalb wird durch das Löschen einer großen Datei nicht immer Speicherplatz frei, wenn ein Snapshot ihren Inhalt weiterhin bewahrt.
Ein Beispiel: Bevor du deine Familienfotos aufräumst, erstellst du einen Snapshot. Löschst du versehentlich einen Ordner, kannst du dessen frühere Version wiederherstellen, ohne die gesamte Sammlung von einem externen Datenträger zurückspielen zu müssen. Ein Snapshot im selben Pool hilft jedoch nicht, wenn alle Datenträger verloren gehen, das Gerät gestohlen wird oder ein Angreifer mit den nötigen Berechtigungen den Snapshot löscht.
ZFS kann Snapshots in einen anderen Pool übertragen, auch inkrementell, also indem nur die Änderungen gegenüber einem früheren Zustand übertragen werden. Das bildet die Grundlage für eine komfortable Replikation. Wie sicher eine solche Kopie ist, hängt jedoch vom Speicherort, den Berechtigungen und den Regeln zur Aufbewahrung älterer Versionen ab.
Nützlich ist auch die Kompression beim Schreiben. Sie kann Speicherplatz sparen und die Zahl der Datenträgerzugriffe verringern. Das Ergebnis hängt allerdings von den Daten ab: Text lässt sich meist besser komprimieren als fertige Videos oder Archive. Kompression ist nicht mit Deduplizierung zu verwechseln. Diese beseitigt mehrfach vorhandene Blöcke, kann aber erhebliche Arbeitsspeicherressourcen und sorgfältige Planung erfordern.
Spiegel oder RAID-Z: die Datenträgeranordnung wählen
Ein Spiegel speichert dieselben Daten auf mehreren Datenträgern. Bei zwei Datenträgern gleicher Kapazität entspricht der nutzbare Speicherplatz ungefähr der Kapazität eines einzelnen Datenträgers – noch ohne Verwaltungsaufwand und die empfohlene Reserve an freiem Speicherplatz. Diese Anordnung kann nach dem Ausfall eines Datenträgers weiterarbeiten.
RAID-Z verteilt Daten und die zu ihrer Wiederherstellung nötigen Informationen auf mehrere Datenträger. Die Varianten RAID-Z1, RAID-Z2 und RAID-Z3 verkraften den Ausfall von einem, zwei beziehungsweise drei Datenträgern innerhalb des jeweiligen Vdevs. Die Wahl hängt von der benötigten Kapazität, der Arbeitslast und dem akzeptierten Risiko ab.
Entscheidend ist der Aufbau des gesamten Pools: Der Verlust eines datenführenden Vdevs kann den Verlust des Pools bedeuten. Wenn du einem Pool mit einem abgesicherten Spiegel einen einzelnen Datenträger als weiteres Vdev hinzufügst, gilt der Schutz des Spiegels nicht auch für diesen Datenträger. Prüfe vor einer Erweiterung außerdem die Möglichkeiten deiner OpenZFS-Version – nicht jede Änderung der Anordnung ist verfügbar oder leicht rückgängig zu machen.
Wann sich ZFS lohnt
ZFS eignet sich gut für Dokumente, Archive und Backups, wenn du Integritätsprüfungen und Snapshots benötigst. Es setzt allerdings eine geplante Datenträgeranordnung, die Überwachung des Pool-Zustands und eine Reserve an freiem Speicherplatz voraus. Leistung und RAM-Bedarf hängen von der Arbeitslast und den aktivierten Funktionen ab. Es gibt kein universell gültiges Verhältnis von Arbeitsspeicher zu Datenträgerkapazität.
ECC-Arbeitsspeicher, der bestimmte Speicherfehler erkennt und korrigiert, ist in einem Server vorteilhaft, aber keine zwingende Voraussetzung für den Betrieb von ZFS. Am besten erhält ZFS direkten Zugriff auf die Datenträger, statt dass diese hinter einem Hardware-RAID-Verbund verborgen sind.
Bevor du wichtige Daten überträgst, zeichne einen Plan der Vdevs, lege den Speicherort eines unabhängigen Backups fest und teste die Wiederherstellung eines einzelnen Ordners. Ein solcher Test zeigt mehr darüber, ob die Konfiguration einsatzbereit ist, als das bloße erfolgreiche Anlegen eines Pools.
Siehe auch: Was ist Linux?
