Hardware-RAID-Controller waren über Jahrzehnte der Standard für Redundanz, doch sie haben eine fatale Schwäche: Sie sind blind für den Inhalt der Daten. Ein Controller schiebt lediglich Nullen und Einsen, ohne zu wissen, ob es sich um ein kritisches Datenbank-Log oder leeren Speicherplatz handelt.
ZFS (Zettabyte File System) und dessen Implementierung RAID-Z brechen mit diesem Paradigma, indem sie den Logical Volume Manager und das Dateisystem verschmelzen. Das Ergebnis ist eine Architektur, die nicht nur Ausfälle kompensiert, sondern stille Datenkorruption aktiv bekämpft.

„Write Hole“: Copy-on-Write erklärt
RAID-Z ist kein RAID 5 auf Software-Ebene, auch wenn die Paritätslogik ähnlich erscheint. Der entscheidende architektonische Unterschied liegt im Schreibverhalten. Klassische RAIDs leiden unter dem „Write Hole“-Phänomen: Fällt der Strom während eines Schreibvorgangs aus, passen Datenblock und Paritätsblock eventuell nicht mehr zusammen. Das Array ist inkonsistent.
ZFS eliminiert dieses Risiko durch Copy-on-Write (CoW). Wenn du eine Datei änderst, überschreibt ZFS niemals die ursprünglichen Datenblöcke. Stattdessen wird die Änderung in einen neuen Block geschrieben. Erst wenn dieser Schreibvorgang (inklusive neuer Prüfsumme) erfolgreich abgeschlossen ist, wird der Metadaten-Zeiger auf den neuen Block umgelegt. Dies ist eine atomare Operation. Entweder der Schreibvorgang ist komplett erfolgreich, oder er hat logisch nie stattgefunden. Ein korrupter Zwischenzustand ist technisch ausgeschlossen.

Dynamische Stripes statt starrer Blöcke
Ein weiterer Engpass klassischer Controller ist die feste Stripe-Size. RAID-Z verwendet eine dynamische Streifenbreite. Jeder logische Block wird als eigener Datensatz geschrieben. Das bedeutet, dass ZFS die Stripe-Breite on-the-fly an die zu schreibenden Daten anpasst. Dadurch werden Performance-Einbußen durch „Read-Modify-Write“-Zyklen bei kleinen Random-Writes signifikant reduziert, da das System intelligent entscheidet, wie Daten und Parität auf die physischen Disks verteilt werden.
Integrität durch den Merkle Tree (Self-Healing)
Das oft zitierte „Self-Healing“ basiert auf einer Hash-Baum-Struktur (Merkle Tree). Anders als herkömmliche Dateisysteme speichert ZFS die Prüfsumme (Checksum) eines Datenblocks nicht im Block selbst, sondern in dessen übergeordnetem Metadaten-Block (Parent Pointer).
Liest das System nun Daten, berechnet es die Prüfsumme der gelesenen Bits und vergleicht sie mit der im Parent-Block hinterlegten Summe. Stimmen diese nicht überein, liegt eine „Silent Data Corruption“ (Bit Rot) vor. Da ZFS die Topologie der Daten kennt, verwirft es den defekten Block sofort. Es greift auf die Paritätsinformationen der anderen Laufwerke im Verbund (vdev) zu, rekonstruiert den korrekten Bitstrom und überschreibt den defekten Sektor auf der Platte mit den validen Daten. Dieser Vorgang geschieht vollautomatisch im I/O-Pfad.

Entscheidung: RAID-Z vs. RAID-Z2 vs. RAID-Z3
Die Wahl des RAID-Z-Levels ist eine Abwägung zwischen Brutto-Kapazität, Performance und der statistischen Wahrscheinlichkeit eines URE (Unrecoverable Read Error) während eines Rebuilds. Alle Laufwerke werden in Virtual Devices (vdevs) organisiert.
RAID-Z1 (Single Parity)
Hier wird ein Paritätsblock pro Stripe verwendet. Es erlaubt den Ausfall einer einzelnen Festplatte.
- Für moderne Festplatten (> 4 TB) ist Z1 oft fahrlässig. Fällt eine Platte aus, muss das gesamte Array resilvered (wiederhergestellt) werden. Tritt während dieser massiven Leselast ein einziger Lesefehler auf einer weiteren Platte auf, ist der Pool meist verloren. Einsatzgebiet: Ausschließlich kleine SSD-Arrays oder unwichtige Daten.
RAID-Z2 (Double Parity)
Z2 nutzt zwei Paritätsblöcke und verkraftet den Ausfall von zwei beliebigen Disks im vdev.
- Dies ist der Industriestandard. Selbst wenn eine Platte ausfällt und während des Rebuilds ein Lesefehler auf einer zweiten Platte auftritt, gewährleisten die verbleibenden Paritätsdaten die Integrität. Das Verhältnis von Kapazitätsverlust zu Sicherheit ist hier am besten balanciert.
RAID-Z3 (Triple Parity)
Drei Paritätsblöcke erlauben den Ausfall von drei Laufwerken.
- Die Rechenlast für die Paritätsberechnung steigt hier signifikant an, was die Performance (besonders IOPS) senken kann. Z3 ist für extrem große Arrays mit sehr großen HDDs (z.B. 20TB+) konzipiert, wo Rebuild-Zeiten Tage oder Wochen dauern können und das Risiko weiterer Ausfälle statistisch relevant steigt.
Der direkte Vergleich:
| Feature | RAID-Z (Z1) | RAID-Z2 | RAID-Z3 |
| Analogie | Ähnlich wie RAID 5 | Ähnlich wie RAID 6 | Einzigartig für ZFS |
| Parität | Einfache Parität (1 Block) | Doppelte Parität (2 Blöcke) | Dreifache Parität (3 Blöcke) |
| Fehlertoleranz | 1 Laufwerk kann ausfallen | 2 Laufwerke können ausfallen | 3 Laufwerke können ausfallen |
| Mindestanzahl Disks | 3 Laufwerke | 4 Laufwerke | 5 Laufwerke |
| Einsatzgebiet | Geschwindigkeit & Kapazität wichtiger als extreme Sicherheit | Der „Sweetspot“ für Sicherheit und Leistung | Maximale Sicherheit für sehr große Arrays |
Datenwiederherstellung von RAID-Z
Trotz der Robustheit von ZFS gibt es Szenarien, die manuelles Eingreifen erfordern. Wir unterscheiden zwischen physischem Ausfall und logischer Korruption.
Szenario A: Physischer Drive-Failure Wenn das System eine Platte als FAULTED markiert, läuft der Pool im „Degraded“ Modus weiter. Die Parität wird in Echtzeit berechnet, um Leseanfragen zu bedienen. Du tauschst die Hardware aus und initiierst den „Resilver“-Prozess. ZFS kopiert dabei nur die tatsächlich genutzten Daten, nicht die leeren Blöcke (ein massiver Zeitvorteil gegenüber klassischem RAID-Rebuild).

Szenario B: Metadaten-Verlust Wenn das Dateisystem selbst so stark beschädigt ist, dass der Pool nicht mehr gemountet werden kann (z.B. durch Controller-Fehler, die Müll schreiben), helfen Standard-Bordmittel wie zpool scrub oft nicht mehr, da der Einstiegspunkt in den Merkle Tree fehlt.
In solchen Fällen, in denen der zpool import fehlschlägt, ist spezialisierte Forensik-Software notwendig, die die On-Disk-Struktur von ZFS versteht und Fragmente ohne intakte Metadaten-Pointer zusammensetzen kann. Tools wie DiskInternals RAID Recovery setzen hier an, indem sie die Rohdaten der Platten scannen und versuchen, die Transaktionsgruppen (TXGs) manuell zu verketten, um Dateien zu extrahieren. Dies ist jedoch die letzte Verteidigungslinie vor dem Backup-Restore.
Fazit
RAID-Z ist mehr als nur Speicherplatz-Aggregation; es ist eine Lebensversicherung für Datenintegrität. Die Entscheidung gegen Hardware-RAID und für ZFS ist eine Entscheidung für Datenkonsistenz. Für produktive Umgebungen solltest du RAID-Z1 vermeiden und direkt auf RAID-Z2 setzen, um die mathematische Unausweichlichkeit von Lesefehlern bei großen Festplatten zu mitigieren. Software-Defined Storage verlangt zwar mehr RAM und CPU-Leistung, zahlt dies aber durch mathematisch beweisbare Datenkorrektheit zurück.
Möchtest du, dass ich für deine spezifische Hardware-Konfiguration berechne, wie sich die Nettokapazität und die Ausfallwahrscheinlichkeit zwischen RAID-Z2 und Z3 verhalten?

