In diesem Artikel von LTB (Learn-The-Basics) besprechen wir die RAID-DP Implementation von NetApp.
Angesichts wachsender Festplattenkapazitäten wird die Ausfallsicherheit zum Schutz wichtiger Daten zu einer immer größeren Herausforderung. Die Festplattengröße hat immer weiter zugenommen, aber die Zuverlässigkeit ist in etwa gleich geblieben. Eine hohe Festplattenkapazität bedeutet, dass eine Wiederherstellung ausgefallener Festplatten auf der Grundlage von RAID Parity-Informationen deutlich mehr Zeit in Anspruch nimmt. Dadurch steigt auch das Risiko des Ausfalls einer zweiten Festplatte bzw. die Gefahr des Auftretens eines anderen Fehlers, noch bevor die Wiederherstellung abgeschlossen ist. Die Wahrscheinlichkeit von Bit- und Blockfehlern nimmt auch proportional mit der gestiegenen Kapazität zu. Dadurch steigt auch das Risiko, dass ein solcher Fehler ausgerechnet während der Wiederherstellung auftritt, oder dass es zu doppelten Ausfällen kommt – was in Single Parity RAID Implementierungen zu Betriebsunterbrechungen und Datenverlusten führen kann.
Als Lösung für dieses Problem entwickelte NetApp mit RAID-DP, Dual-Parity RAID Implementierung. Es gibt zwar auch andere Dual-Parity RAID 6 Implementierungen, aber RAID-DP ist die einzige, die ohne nennenswerte Performance-Einbußen Schutz vor doppeltem Festplattenausfall in derselben RAID-Gruppe bietet.
RAID-DP funktioniert so zuverlässig, dass es als Standardoption in NetApp Storage-Systemen verwendet wird. Tests zufolge ist die Random Write Performance von RAID-DP nur 2 % niedriger als bei der NetApp RAID 4 Implementierung. Im Vergleich dazu sinkt die Random Write Performance bei der RAID 6 Implementierung vergleichbarer Storage-Anbieter gegenüber RAID 5 auf dem selben System um 33 %. (RAID 4 und RAID 5 sind beides Single-Parity RAID-Implementierungen.) Bei RAID 4 wird eine separate Parity Disk verwendet. Bei RAID 5 werden die Paritätsinformationen auf alle Festplatten innerhalb einer RAID-Gruppe verteilt, damit nicht eine Festplatte (mit allen Paritätsinformationen) zur Schwachstelle des Systems wird. Dies ist bei NetApp RAID 4 aufgrund der Art und Weise, in der Daten in Data ONTAP geschrieben werden, nicht nötig. (Hierauf wird zu einem späteren Zeitpunkt noch genauer eingegangen.)
RAID-DP bietet unter anderem folgende entscheidende Vorteile:
- Maximale Datensicherung: Mit NetApp RAID-DP ist die Gefahr eines Datenverlusts aufgrund doppelten Festplattenausfalls Hunderte Male niedriger als bei RAID 5 Konfigurationen. RAID 1+0 bietet zwar eine bessere Datensicherung als RAID 5, aber bei einem Ausfall zweier gespiegelter Festplatten können auch hier Daten verloren gehen. RAID-DP bietet vollständigen Schutz vor doppeltem Festplattenausfall, und das zur Hälfte der Kosten von RAID 1+0.
- Geringste Kosten: Bei RAID 5 Implementierungen ist die Größe der RAID-Gruppen oft auf 3+1 oder 5+1 beschränkt (was zu einem Mehraufwand von 17 % bis 25 % führt). RAID 1+0 erfordert 1+1 (Mehraufwand von 50 %). NetApp hingegen unterstützt RAID-Gruppen von bis zu 28 (26+2), deren Mehraufwand bei gerade einmal 7 % liegt.
- Kompromisslose Performance: Wie bereits zuvor erläutert, ist bei herkömmlichen Dual-Parity-Technologien häufig ein starker Einbruch bei der Schreib-Performance zu verzeichnen, sodass der Einsatzbereich im Wesentlichen auf Applikationen mit hohem Leseanteil beschränkt ist. NetApp RAID-DP weist im Vergleich zu Single-Parity RAID-Implementierungen praktisch keine Performance-Verluste auf, wird von NetApp als Standard eingesetzt und kann bei allen Workloads verwendet werden.
Implementierung von RAID-DP in Data ONTAP
Enge Integration in NVRAM und WAFL
Die RAID-DP Implementierung in Data ONTAP ist eng mit NetApp NVRAM und NetApp WAFL (Write Anywhere File Layout) verknüpft. Dies ist der Grund für die außergewöhnliche Performance von RAID-DP im Vergleich zu anderen RAID 6 Implementierungen.
Da Schreibvorgänge im Arbeitsspeicher viel schneller ablaufen als auf der Festplatte, nutzen Storage-Anbieter in der Regel einen batteriegestützten, nichtflüchtigen RAM-Speicher (NVRAM) als Schreib-Cache und zur Steigerung der Schreib-Performance. NetApp setzt NVRAM in allen Storage-Systemen ein, aber dies erfolgt in der NetApp Data ONTAP Betriebsumgebung signifikant anders als in herkömmlichen Storage Arrays.
Der NVRAM-Speicher wird als Journal der von Data ONTAP seit dem letzten Konsistenzpunkt empfangenen Schreibanforderungen verwendet. Der Konsistenzpunkt ist eine im Abstand von einigen Sekunden von Data ONTAP erzeugte spezielle Snapshot Kopie, die ein vollständig konsistentes Abbild des Dateisystems auf der Festplatte darstellt. Ein Konsistenzpunkt bleibt auch beim Schreiben neuer Blöcke auf Festplatte unverändert, da in Data ONTAP vorhandene Festplattenblöcke nie überschrieben werden. Wenn in dieser Konfiguration ein Fehler auftritt, kehrt Data ONTAP einfach zum letzten Konsistenzpunkt zurück und geht dann das Journal der Schreibanforderungen aus dem NVRAM-Speicher erneut durch.
Diese NVRAM-Verwendung unterscheidet sich deutlich von der in herkömmlichen Storage Arrays, in denen im NVRAM Schreibanforderungen auf Ebene des Festplattentreibers zwischengespeichert werden. Sie bietet zahlreiche Vorteile: Es wird weniger NVRAM-Speicher benötigt, die Reaktionszeit beim Schreiben wird verkürzt, und der Schreibvorgang auf Festplatte wird optimiert.
Optimierung von Schreibvorgängen: RAID 4
Die Cache-Speicherung von Schreibvorgängen ist eng in die NetApp RAID-Implementierungen integriert und ermöglicht die Planung von Schreibvorgängen, um die Performance für das zugrunde liegende RAID Array zu optimieren. Bevor ich näher auf RAID-DP eingehe, werde ich erläutern, wie NetApp diesen Vorgang bei der RAID 4 Implementierung optimiert.
In RAID Arrays werden Daten in Stripes verwaltet. Ein solcher Stripe besteht aus einem Datenblock auf jeder Festplatte in der RAID-Gruppe. Bei jedem Stripe wird ein Block als Paritätsblock festgelegt. In Abbildung 1 ist eine herkömmliche Horizontal Parity RAID 4 Gruppe dargestellt, bestehend aus vier Disks (die ersten vier Spalten, gekennzeichnet mit «D») und einer Single-Parity Disk (letzte Spalte, gekennzeichnet mit «P»).
In diesem Beispiel wird die Parität zu Demonstrationszwecken wie folgt berechnet: Die Werte in jedem horizontalen Stripe werden addiert, und die Summe (3 + 1 + 2 + 3 = 9) wird als Paritätswert gespeichert. In der Praxis wird die Parität mit einer XOR-Operation (exclusive OR) berechnet.
Wenn Daten nach dem Ausfall eines Laufwerks wiederhergestellt werden müssen, wird der Vorgang zur Erzeugung von Parität einfach umgekehrt. Fällt beispielsweise die erste Festplatte aus, so berechnet RAID 4 die Daten in den einzelnen Blöcken dieser Festplatte aus den verbleibenden. In unserem Beispiel müssten einfach die Werte der anderen Festplatten vom Paritätswert subtrahiert werden (9 – 3 – 2 – 1 = 3). Dies erklärt auch, warum Single-Parity RAID nur vor dem Ausfall einzelner Festplatten schützt. Wenn zwei Werte fehlen, sind nicht genügend Informationen zur Berechnung der fehlenden Werte vorhanden.
In typischen RAID-Implementierungen muss zum Schreiben neuer Daten in ein Stripe, das bereits Daten (und Paritätsinformationen) enthält, zuerst der Paritätsblock gelesen werden. Anschließend wird ein neuer Paritätswert für den Stripe berechnet, und erst dann werden der Datenblock und der neue Paritätsblock geschrieben. Das ist bei jedem zu schreibenden Block ein erheblicher Mehraufwand.
Bei NetApp wird dieser Mehraufwand dadurch reduziert, dass Schreibvorgänge im Arbeitsspeicher (durch das Journal im NVRAM geschützt) gepuffert werden. Anschließend werden vollständige RAID Stripes samt Paritätsinformationen geschrieben. Auf diese Weise müssen die Paritätsdaten vor dem Schreibvorgang nicht mehr gelesen werden, und WAFL kann eine gemeinsame Paritätsberechnung für den gesamten Stripe mit Datenblöcken vornehmen. (Die genaue Zahl der Blöcke hängt von der Größe der RAID-Gruppe ab.) Dies ist möglich, da bei WAFL geänderte Datenblöcke nie überschrieben werden und da Daten und Metadaten (die Speicherinformationen, aus denen hervorgeht, wie die Daten organisiert sind) an jedem Speicherort geschrieben werden können. In anderen Daten-Layouts werden geänderte Datenblöcke in der Regel überschrieben, und Metadaten müssen sich an einem bestimmten Speicherort befinden.
Zusätzliche Diagonal Parity: RAID-DP
Bei NetApp RAID-DP kommen pro RAID-Gruppe zwei Parity Disks zum Einsatz. Auf einer davon werden die für horizontale Stripes berechneten Paritätsinformationen gespeichert (wie oben erläutert). Auf der zweiten werden aus diagonalen Stripes errechnete Paritätsinformationen gespeichert. In Abbildung 2 sind zur Horizontal Parity aus Abbildung 1 ein Diagonal Parity Stripe (blau schattiert) und eine zweite Parity Disk (mit «DP» gekennzeichnet) hinzugekommen.
In die Berechnung des Diagonal Parity Stripe wird ein Block aus der Horizontal Parity Disk miteinbezogen. RAID-DP behandelt sämtliche Festplatten aus der ursprünglichen RAID 4 Konfiguration – Daten- und Parity Disks – gleich. Eine Festplatte ist aus dem Diagonal Parity Stripe ausgenommen. In Abbildung 3 sind die zusätzlichen Horizontal und Diagonal Parity Stripes dargestellt.
Bei jedem Diagonal Parity Stripe fehlt eine Festplatte, und zwar bei jedem eine andere. Es gibt auch einen Diagonal Stripe (die weißen Blöcke in Abbildung 3), zu dem auf der Diagonal Parity Disk keine Paritätsinformationen gespeichert sind. Dies wirkt sich nicht nachteilig auf die Wiederherstellbarkeit sämtlicher Daten aus.
Wiederherstellung nach doppeltem Festplattenausfall
Durch die Kombination aus Horizontal und Diagonal Parity ist eine Wiederherstellung auch einem doppelten Festplattenausfall in derselben RAID-Gruppe möglich. Wenn nur eine Festplatte ausfällt oder ein Block- bzw. Bitfehler auftritt, werden zur Wiederherstellung nur die horizontalen Paritätsinformationen benötigt.
Fallen zwei Festplatten aus, ermittelt RAID-DP zuerst (wie in Abbildung 4 dargestellt), in welcher Reihenfolge die Wiederherstellung vorzunehmen ist. Wie bereits erwähnt, lassen sich Daten aus Paritätsinformationen nur dann wiederherstellen, wenn maximal ein Element fehlt. Aus diesem Grund wird bei den Diagonal Parity Stripes jeweils eine Daten-Festplatte übersprungen.
Durch die Wiederherstellung des ersten Blocks mittels Diagonal Parity wird nun auch die Wiederherstellung des zweiten Blocks mittels Horizontal Parity (erste Reihe in Abbildung 4) möglich. Dies wiederum ermöglicht die Wiederherstellung eines weiteren fehlenden Blocks mit Hilfe von Diagonal Parity. Diese Wiederherstellungskette wird fortgesetzt, bis der Stripe erreicht ist, zu dem keine diagonalen Paritätsinformationen gespeichert wurden. Wenn dieser Punkt erreicht ist, wird ein anderer Einstiegspunkt gesucht, und es beginnt eine neue Wiederherstellungskette mit diagonalen und horizontalen Stripes. Irgendwann sind genügend fehlende Blöcke wiederhergestellt, sodass alle Stripe-Werte ausschließlich über Horizontal Parity errechnet werden können. Dieses Verfahren wird im technischen Bericht TR-3298: RAID-DP ausführlicher erläutert.
Die vorliegenden Beispiele sind vereinfacht, um das grundlegende Kontept von RAID-DP zu erläutern. Das Verfahren funktioniert jedoch ebenso in realen Storage-Systemen mit Dutzenden von Festplatten pro RAID-Gruppe und Millionen von Datenreihen. In unserem Beispiel fallen zwei benachbarte Festplatten aus. Das Verfahren funktioniert aber unabhängig davon, ob die ausgefallenen Festplatten neben einander liegen oder nicht, und ob es sich um Daten- oder Parity Disks handelt.
Optimierung von Schreibvorgängen: RAID-DP
Wie bereits im Zusammenhang von RAID 4 erläutert, wird bei WAFL stets versucht, Daten zu puffern und vollständige Stripes auf Festplatte zu schreiben. Bei RAID-DP werden Datenblöcke im Arbeitsspeicher gepuffert, damit mehrere Horizontal und Diagonal Parity-Berechnungen in einem einzelnen Schreibvorgang vorgenommen werden können. Die 2-prozentige Performance-Einbuße bei RAID-DP gegenüber RAID 4 hängt mit dem Zusatzaufwand für die Diagonal Parity-Berechnung und das Schreiben des zweiten Parity-Blocks zusammen.
Fazit
NetApp RAID-DP ist ein wichtiges Tool zur Steigerung der Ausfallsicherheit, das bei praktisch allen gängigen Storage Workloads eingesetzt werden kann. Weitere Informationen zu NetApp RAID-DP finden Sie in den Technischen Berichten TR-3298: Implementation of Double-Parity RAID for Data Protection und WP-7005: NetApp RAID-DP: Dual-Parity RAID 6 Protection Without Compromise.