ZFS: Mirror vs. RAID-Z

14

Ich plane den Aufbau eines Dateiservers mit OpenSolaris und ZFS, der zwei primäre Dienste bereitstellt - ein iSCSI-Ziel für virtuelle XenServer-Maschinen und ein allgemeiner Home-Dateiserver. Die Hardware, die ich betrachte, umfasst 2x 4-Port-SATA-Controller, 2x kleine Boot-Laufwerke (eines auf jedem Controller) und 4x große Laufwerke für die Speicherung. Dies ermöglicht einen freien Port pro Controller für die spätere Aufrüstung des Arrays.

Wo ich ein bisschen verwirrt bin, ist, wie man die Speicherlaufwerke einrichtet. Für die Leistung scheint die Spiegelung König zu sein. Es fällt mir schwer zu erkennen, welchen Vorteil die Verwendung von RAIDZ gegenüber der Spiegelung hätte. Mit diesem Setup sehe ich zwei Optionen - zwei gespiegelte Pools in einem Stripe oder RAIDZ2. Beide sollten vor 2 Laufwerksausfällen und / oder einem Controller-Ausfall schützen. Der einzige Vorteil von RAIDZ2 besteht darin, dass 2 beliebige Laufwerke ausfallen könnten. Der Speicher sollte in beiden Fällen 50% der Kapazität ausmachen, aber der erste sollte eine viel bessere Leistung haben, oder?

Die andere Sache, um die ich mich kümmern möchte, ist der Vorteil von gespiegelten Arrays mit mehr als zwei Geräten. Was wäre für die Datenintegrität, wenn überhaupt, der Vorteil einer RAIDZ gegenüber einem Drei-Wege-Spiegel? Da ZFS die Dateiintegrität beibehält, was bringt RAIDZ auf den Tisch ... negieren die Integritätsprüfungen von ZFS nicht den Wert der RAIDZ-Parität?

John Clayton
quelle

Antworten:

13

Die einfache Antwort ist, dass das Spiegeln von Daten fast keine Rechenleistung erfordert - es wird nur ein zweites Mal auf die Festplatte geschrieben. Für RAID-Z2 müssen Sie einen völlig neuen Paritätsblock berechnen, der die CPU zwar klein machen kann, wenn Sie große Datenmengen schnell schreiben müssen.

Mirroring ist immer die bevorzugte Lösung für Hochgeschwindigkeits - Daten, wenn es nur Massenspeicher ohne schnelle Schreibgeschwindigkeiten, RAID-Z2 ist eine gute Alternative , die erlaubt alle zwei Laufwerke , wie Sie anspielen zu sterben.

Der andere Vorteil ist, dass gespiegelte Pools mit mehr gespiegelten Geräten erweitert werden können - während ein RAID-Z2 nicht erweitert werden kann -, obwohl dem Pool mehr RAID-Z2-Speicher hinzugefügt werden kann, werden zwei RAID-Z2-Speicherpools verkettet (in Effekt) anstatt gleichmäßig zwischen dem gesamten Speicher und gestreift aufgeteilt.

Dotwaffle
quelle
Aber was gibt Ihnen der Paritätsblock von RAIDZ in ZFS? Bietet es zusätzliche Datenintegrität über das hinaus, was ZFS bereits bietet? Oder müssen einfach zwei Laufwerke sterben? Wenn dies der einzige Vorteil ist, gibt es keinen Vorteil von RAIDZ gegenüber einem Spiegel, oder?
John Clayton
1
Bei RAID-Z kann ein Laufwerk sterben. Wenn Sie 10 Laufwerke haben, erhalten Sie Daten im Wert von 9 Laufwerken. Mit RAID-Z2 können Sie zwei beliebige Laufwerke aussterben lassen und Daten auf 8 Laufwerken speichern. Mit dem Spiegel können Sie die Hälfte der Laufwerke sterben lassen, aber nur eines von jedem Satz von zwei. Ich vermute, dass Sie das bereits wissen, aber es ist dieser Randfall von 4 Laufwerken, der zwei Lösungen für den Ausfall von zwei Laufwerken bietet - RAID-Z2 und Mirror-Modus. Es gibt keine zusätzlichen Datenintegritätszuschläge, die in einem normalen Szenario "nützlich" sind.
Dotwaffle
Um klar zu sein, ist der Vorteil von RAIDZ gegenüber Spiegeln ein bisschen mehr Schutz vor Hardwareausfällen? RAIDZ1 und ein Spiegel mit X-Laufwerken sind im Wesentlichen gleichwertig?
John Clayton
5
Die Parität von RAID-Z ist eine Obermenge der integrierten Prüfsumme von ZFS. Durch die Prüfsumme wird lediglich sichergestellt, dass die von den Datenträgern gelesenen Daten korrekt sind. Es ist so konzipiert, dass eine schnelle Überprüfung mit wenig Aufwand möglich ist. Die Parität von RAID-Z bietet Ihnen die Möglichkeit , beschädigte Daten im Falle eines Laufwerksverlusts wiederherzustellen (oder 2 für RAID-Z2). Die Berechnungen zum Generieren dieser Paritätsdaten sind jedoch viel rechenintensiver als eine einfache Blockprüfsumme und müssen für einen gesamten Streifen berechnet werden, auch wenn Sie nur einen 4-KB-Block schreiben.
afrazier
4
@ John Clayton: Der Grad der Redundanz hängt davon ab, wie Sie Ihren Speicher konfigurieren. Sie können einen N-Way-Spiegel erstellen, was bedeutet, dass Ihre Datenkapazität die Größe eines Laufwerks hat. Sie können jedoch N-1-Laufwerke verlieren, ohne Daten zu verlieren. Wenn Sie beispielsweise über einen 3-Wege-Spiegel verfügen, enthalten alle 3 Laufwerke dieselben Daten, und Sie können 2 Laufwerke verlieren, ohne Daten zu verlieren. Der Unterschied besteht darin, dass das Hinzufügen von Laufwerken zu einem N-Way-Spiegel die Redundanz erhöht (Ihre Kapazität entspricht jedoch immer der Größe von 1 Laufwerk), während das Hinzufügen von Laufwerken zu raidz2 die Kapazität erhöht (Ihre Redundanz beträgt jedoch immer 2 Laufwerke).
Rob
17

RAID-Z beseitigt den größten Teil des Schreibaufwands und der Datenintegritätsprobleme, unter denen RAID-5/6-Volumes leiden, auf Kosten einiger CPU-Zeit. In der Regel haben Systeme CPU-Zyklen zu sparen. Daher ist es ein guter Kompromiss gegenüber der Spiegelung, CPU-Zeit für die Verbesserung der E / A-Leistung und der Datenintegrität aufzuwenden.

Hier finden Sie eine detaillierte Erklärung von RAID-Z , mit der andere Fragen beantwortet werden können.

Denken Sie auch daran, dass RAID eine Fehlertoleranzlösung ist . Sie implementieren RAID-Z2 nicht zum Schutz vor Datenverlust - Sie führen Backups durch oder replizieren, um dies zu tun. Sie können RAID-Z2 im Vergleich zu RAID-Z oder RAID-10 im Vergleich zu RAID-6 im Vergleich zu RAID-5 implementieren, um Ihre Systeme im Falle eines Hardwarefehlers betriebsbereit zu halten.

duffbeer703
quelle
1
Ich muss Dotwaffle die Antwort geben, da er mir geholfen hat, den technischen Unterschied zu verstehen. Tolle Ratschläge zur beabsichtigten Verwendung ... das hat mich wirklich zum Nachdenken gebracht.
John Clayton
1
Eine wichtige Sache zu beachten ist , dass während RAIDZ die eleminates Schreib Strafe Probleme, es führt Lese Strafe Probleme aufgrund erhöhter Parallelität für jeden Lesevorgang
der-wabbit