Prinzipien der RAID-Datenorganisation

Die Art und Weise, wie Daten in einem RAID-Array gespeichert werden, lässt sich mit einem komplexen mathematischen Rätsel vergleichen, das eine besondere Herausforderung für die Datenwiederherstellung darstellt. Im Gegensatz zu einer herkömmlichen Festplatte, auf der Dateien von Anfang bis Ende zusammenhängend gespeichert werden können, zerlegt ein RAID-System eine Datei und verteilt ihre einzelnen Fragmente auf mehrere physische Laufwerke. Bevor ein solches Array rekonstruiert und ausgelesen werden kann, muss dieses Rätsel gelöst werden. Das bedeutet, dass ermittelt werden muss, wie genau der ursprüngliche Controller die Fragmente auf die einzelnen Sektoren verteilt hat. Die Datenverteilung bei RAID-Systemen basiert auf drei grundlegenden Mechanismen: Striping, Mirroring (Spiegelung) und Parität. Das Verständnis dieser Methoden der Datenorganisation ist der erste Schritt, um die verstreuten Fragmente ausfindig zu machen und eine erfolgreiche virtuelle Rekonstruktion durchzuführen.

RAID als Speicherschicht

In herkömmlichen Computerarchitekturen schreibt ein Betriebssystem Daten auf ein einzelnes physisches Laufwerk und versucht dabei, Dateien möglichst sequenziell anzuordnen. Ein RAID-System (Redundant Array of Independent Disks) verfolgt einen anderen Ansatz bei der Datenspeicherung, indem es eine zusätzliche Virtualisierungsschicht zwischen dem Betriebssystem und der physischen Speicherhardware einfügt. Diese Virtualisierungsschicht fasst mehrere unabhängige Festplatten oder Solid-State-Laufwerke zu einer einzigen logischen Einheit zusammen. Für das Betriebssystem und das zugrunde liegende Dateisystem erscheint diese Einheit als ein einzelnes, zusammenhängendes Blockgerät mit einer fortlaufenden Folge logischer Sektoren.

Um diese Abstraktion zu erreichen, verwendet die Hardware- oder Software-RAID-Engine ein internes Zuordnungsschema, um die logischen Sektoren den physischen Laufwerken zuzuordnen. Die daraus resultierende Konfiguration wird als Geometrie des Arrays bezeichnet. Das System baut diese Architektur mithilfe von drei grundlegenden Methoden der Datenverteilung auf: Striping (Verteilung von Datenblöcken über mehrere Laufwerke), Mirroring (Spiegelung von Daten auf mehreren Laufwerken) und Parität (Berechnung von Paritätsblöcken).

Bei der RAID-Datenwiederherstellung geht es darum, den ausgefallenen oder nicht verfügbaren Controller zu umgehen, um Metadaten oder Rohdatenstrukturen auf den Datenträgern zu analysieren und die Geometrie des Arrays zu bestimmen, entweder manuell oder mithilfe von Software. Sobald diese organisatorischen Regeln ermittelt sind, lassen sich die verstreuten Datenblöcke virtuell wieder zu einem zusammenhängenden, lesbaren Volume zusammensetzen. Um mit diesen geometrischen Parametern arbeiten zu können, müssen jedoch zunächst die drei grundlegenden Verteilungsmechanismen untersucht werden, mit denen Datenblöcke angeordnet werden.

Grundlegende Mechanismen der RAID-Datenverteilung

Wie oben erläutert, stützt sich ein RAID-Array auf drei grundlegende Methoden der Datenplatzierung, um Informationen zu organisieren. Jede dieser Methoden weist eigene technische Parameter auf, die ermittelt werden müssen, um das ursprüngliche Volume zu rekonstruieren.

Daten-Striping

Striping bildet die Grundlage für leistungsfähige RAID-Architekturen. Anstatt eine zusammenhängende Datei auf ein einzelnes Laufwerk zu schreiben, unterteilt der Speichercontroller den Datenstrom in Segmente, sogenannte Datenblöcke, und verteilt diese nacheinander auf die beteiligten Laufwerke.

  • Die Stripe-Zeile: Eine einzelne Stripe-Zeile besteht aus den kombinierten Datenblöcken, die sich horizontal über alle zum Array gehörenden Laufwerke erstrecken.

  • Stripe-Größe (Blockgröße): Sie bezeichnet die Größe eines einzelnen Datenblocks auf einem Laufwerk und reicht typischerweise von 512 Bytes bis zu 1 MB oder mehr. Häufig verwendete Größen sind 64 KB und 128 KB.

In einem Striping-Array mit vier Laufwerken und einer Stripe-Größe von 64 KB wird eine 256-KB-Datei beispielsweise in vier 64-KB-Blöcke aufgeteilt. Der Controller schreibt Block 1 auf Laufwerk 0, Block 2 auf Laufwerk 1, Block 3 auf Laufwerk 2 und Block 4 auf Laufwerk 3.

Da die Daten sequenzieller Dateien von dieser präzisen, verschachtelten Reihenfolge abhängen, kann ein fehlender oder falsch zugeordneter Block zu einer Lücke in den wiederhergestellten Dateidaten und damit zu schwerwiegenden logischen Beschädigungen führen.

Um ein Striping-Layout erfolgreich zurückzuentwickeln und die Daten virtuell neu anzuordnen, müssen die folgenden Parameter ermittelt werden:

  • Stripe-Größe: Die genaue Größe eines einzelnen Blocks in Bytes.

  • Laufwerksreihenfolge: Die genaue Reihenfolge der Laufwerke im Array, also beispielsweise die Festlegung, welches Laufwerk Laufwerk 0, Laufwerk 1, Laufwerk 2 usw. ist.

Spiegelung (Mirroring)

Mirroring bietet einen einfachen Redundanzmechanismus in Form einer 1:1-Spiegelung, bei der identische Datenblöcke auf separate physische Laufwerke dupliziert werden. Wird eine Datei auf ein System mit Mirroring geschrieben, kopiert der Controller die identischen Sektorfolgen auf mehrere beteiligte Laufwerke. Das Betriebssystem erkennt lediglich ein einziges logisches Volume, wodurch die zugrunde liegende Duplizierung verborgen bleibt.

Aus Sicht der Datenwiederherstellung gewährleistet die Spiegelung eine hohe physische Datenverfügbarkeit, bringt jedoch eine wichtige logische Herausforderung mit sich: die Überprüfung der Laufwerkssynchronisierung. Wenn ein Laufwerk nicht mehr synchron ist, etwa weil es kurz vor einem Systemausfall offline gegangen ist, kann es zu einem veralteten Spiegel (einem sogenannten "Stale Mirror") werden. Wird das Array auf Grundlage dieses veralteten Spiegels statt des aktuellen Spiegels rekonstruiert, kann dies zu einem Rollback der Dateisystemmetadaten führen. Dadurch stimmen die rekonstruierten Speicherstrukturen möglicherweise nicht mit dem aktuellen Zustand des Dateisystems überein, sodass kürzlich geänderte Dateien unlesbar werden oder beschädigt sein können.

Um Daten sicher aus einer gespiegelten Konfiguration zu extrahieren, ohne logische Beschädigungen zu riskieren, müssen die folgenden Parameter überprüft werden:

  • Aktuelle Spiegelkopie: Identifizierung des Disk-Images, das den aktuellsten Datenstand enthält.

  • Synchronisierungsstatus der Laufwerke: Analyse interner Metadaten, Zeitstempel, Schreibprotokolle oder Dateisystemstrukturen, um veraltete, nicht mehr synchronisierte Spiegel zu erkennen und auszuschließen.

Parität

Paritätsbasierte Konfigurationen kombinieren die Leistungsvorteile von Striping mit mathematisch gestützter Fehlertoleranz. Anstatt Daten vollständig zu spiegeln, reservieren diese Architekturen Speicherplatz für redundante Paritätsblöcke, der bei einfacher oder doppelter Parität insgesamt der Kapazität eines bzw. zweier Laufwerke entspricht. Die Paritätsblöcke werden aus den zugehörigen Datenblöcken innerhalb jeder Stripe-Zeile berechnet.

Einfache Parität (XOR-Logik)

Standardmäßige fehlertolerante Arrays wie RAID 5 basieren auf der bitweisen Exklusiv-ODER-Operation (XOR). Innerhalb einer bestimmten Stripe-Zeile wird der Paritätsblock (P) durch eine binäre Operation berechnet, bei der das Ergebnisbit auf 1 gesetzt wird, wenn die Anzahl der Eingangsbits mit dem Wert 1 ungerade ist. Die grundlegende mathematische Darstellung lautet:

P = D1 ⊕ D2 ⊕ D3

Wenn ein einzelnes Laufwerk ausfällt, beispielsweise das Laufwerk mit D2, lassen sich die fehlenden Datenblöcke rekonstruieren, indem die XOR-Operation auf die verbleibenden Datenblöcke und den Paritätsblock angewendet wird:

D2 = D1 ⊕ D3 ⊕ P

Doppelte Parität (Reed-Solomon-Kodierung)

Fortgeschrittene Konfigurationen wie RAID 6 implementieren zwei separate mathematische Redundanzinformationen (P und Q), die über verschiedene Laufwerke verteilt sind. Dadurch kann das Array den gleichzeitigen Ausfall von zwei Laufwerken verkraften.

Während der P-Block mithilfe der standardmäßigen XOR-Logik erzeugt wird, verwendet der Q-Block eine Reed-Solomon-Kodierung, die auf linearer Algebra über Galois-Feldern basiert. Diese Architektur liefert für jede Stripe-Zeile zwei mathematisch unabhängige Gleichungen:

P = D1 ⊕ D2 ⊕ D3

Q = (α¹ • D1) ⊕ (α² • D2) ⊕ (α³ • D3)

Dieses duale Matrix-Layout ermöglicht es einer Datenrettungssoftware, zwei fehlende Laufwerksvariablen gleichzeitig zu bestimmen.

Paritätsverteilungs- und Rotationsalgorithmen

Die Zuweisung eines einzelnen Laufwerks zur Speicherung aller Paritätsblöcke führt zu einem gravierenden E/A-Engpass (Ein-/Ausgabeengpass). Um dies zu vermeiden, verteilen moderne Speichercontroller die Paritätsblöcke gleichmäßig über alle beteiligten Laufwerke, wobei ein sich wiederholendes geometrisches Muster zum Einsatz kommt.

Der Mechanismus, durch den sich die Parität über aufeinanderfolgende Stripe-Zeilen hinweg verschiebt, wird als Rotationsalgorithmus bezeichnet. Controller implementieren in der Regel eine von vier grundlegenden Layout-Varianten:

Layout-TypParitätsrotationDatenblocksequenz
LinksasymmetrischRotation rückwärts (links)Fortlaufende Datenblocksequenz unter Auslassung des Paritätsblocks
LinkssymmetrischRotation rückwärts (links)Die Datenblocksequenz beginnt in jeder Zeile erneut bei Laufwerk 0; der Paritätsblock wird dabei übersprungen
RechtsasymmetrischRotation vorwärts (rechts)Fortlaufende Datenblocksequenz unter Auslassung des Paritätsblocks
RechtssymmetrischRotation vorwärts (rechts)Die Datenblocksequenz beginnt in jeder Zeile erneut bei Laufwerk 0; der Paritätsblock wird dabei übersprungen

Es ist entscheidend, den genauen Rotationsalgorithmus des Controllers zu identifizieren. Wenn bei einer virtuellen Rekonstruktion eine asymmetrische Zuordnung auf ein symmetrisches physisches Layout angewendet wird, sind die wiederhergestellten Datenblöcke falsch ausgerichtet. Dies kann zu schwerwiegenden Dateibeschädigungen über große Speicherbereiche hinweg führen.

Um die Parität korrekt zu dekodieren und ein Array mit fehlenden Laufwerken zu rekonstruieren, müssen die folgenden Parameter exakt mit der ursprünglichen Controller-Konfiguration übereinstimmen:

  • Stripe-Größe und Laufwerksreihenfolge: Diese ergeben sich aus der grundlegenden Striping-Geometrie.

  • Paritätsrotationsalgorithmus: Das genaue Verteilungslayout (linkssymmetrisch, linksasymmetrisch, rechtssymmetrisch oder rechtsasymmetrisch).

  • Paritätsverzögerung: Die Anzahl der aufeinanderfolgenden Stripe-Zeilen, die auf einem einzelnen Laufwerk geschrieben werden, bevor der Paritätsblock zum nächsten Laufwerk wechselt. Dieser Wert beträgt üblicherweise 1, kann bei spezieller Hardware oder Hardware für den Unternehmenseinsatz jedoch höher sein.

  • Zuweisung der P- und Q-Blöcke (bei doppelter Parität): Die strukturellen Regeln, die die physischen Sektor-Offsets und die Anordnungsreihenfolge der P- und Q-Blöcke innerhalb einer einzelnen Zeile bestimmen.

  • Galois-Feldparameter (bei doppelter Parität): Die genauen mathematischen Koeffizienten, Generatormatrizen und primitiven Polynome, die der Controller zur Berechnung des Q-Vektors verwendet. Die Daten von zwei ausgefallenen Laufwerken lassen sich nur rekonstruieren, wenn diese Parameter mit der ursprünglichen Konfiguration übereinstimmen.

Array-Implementierungen und Redundanztypen

Die spezifische Kombination der oben beschriebenen Datenverteilungsmethoden bestimmt den strukturellen Aufbau und die Leistungsmerkmale eines Arrays. Bei einem Datenverlust wird die Wiederherstellungsstrategie maßgeblich durch diese architektonischen Eigenschaften vorgegeben.

Nicht-redundante RAID-Systeme

Diese Konfigurationen, insbesondere RAID 0 und JBOD, dienen ausschließlich der Leistungsskalierung oder Kapazitätsbündelung, ohne Fehlertoleranz zu bieten. RAID 0 ist ein Striping-Array, bei dem Dateien in Datenblöcke unterteilt und nacheinander auf alle beteiligten Laufwerke verteilt werden. Um eine Datei wieder zusammenzusetzen, müssen diese Segmente in einer festen, lückenlosen Reihenfolge gelesen werden. Aufgrund dieser Struktur führt der Ausfall eines einzelnen Laufwerks zu dauerhaften Lücken in der Blockfolge des logischen Volumes, wodurch eine Datenwiederherstellung unmöglich wird, sofern nicht alle zum Array gehörenden Laufwerke verfügbar sind.

JBOD hingegen verteilt Daten einfach nacheinander über die Laufwerke, ohne Striping anzuwenden. Der Ausfall eines einzelnen Laufwerks unterbricht zwar nicht die gesamte Blockfolge, führt jedoch zum dauerhaften Verlust der auf diesem Laufwerk gespeicherten Dateien.

Eine erfolgreiche Datenwiederherstellung aus einem nicht-redundanten RAID-System ist folglich möglich, solange alle zum Array gehörenden Laufwerke voll funktionsfähig sind oder von jedem fehlerhaften Laufwerk ein bitgenaues RAW-Disk-Image erstellt wurde.

Weiterlesen: Lesen Sie unseren Leitfaden zur Datenwiederherstellung aus RAID-Systemen ohne Redundanz (RAID 0 und JBOD).

Redundante RAID-Systeme

Diese Kategorie umfasst Konfigurationen auf Basis der Spiegelung (RAID 1) sowie Arrays mit einfacher oder doppelter Parität, wie RAID 3, RAID 4, RAID 5 und RAID 6. Diese Systeme sind so ausgelegt, dass sie auch beim Ausfall eines oder mehrerer Laufwerke betriebsfähig bleiben. Bei der Datenwiederherstellung stellen sie jedoch besondere Herausforderungen dar:

  • Layouts mit Spiegelung (RAID 1): Die 1:1-Duplizierung gewährleistet die physische Verfügbarkeit der Daten, bringt jedoch das Problem der Laufwerksdesynchronisation mit sich. Fällt ein Laufwerk kurz vor einem Systemabsturz aus, führt die Rekonstruktion des Arrays auf Grundlage dieses "veralteten" Spiegels zu einem unmittelbaren Rollback der Dateisystemmetadaten, wodurch kürzlich geänderte Dateien beschädigt werden.

  • Paritätsbasierte Layouts (RAID 3, RAID 4, RAID 5 und RAID 6): Diese Systeme rekonstruieren fehlende Daten während des Betriebs mithilfe der verbliebenen Laufwerke und mathematischer Paritätsblöcke. Fällt ein Laufwerk aus, ist eine erfolgreiche Datenwiederherstellung mithilfe der verbleibenden funktionsfähigen Laufwerke möglich. Dafür muss jedoch die Geometrie des Arrays rekonstruiert werden, einschließlich der Laufwerksreihenfolge, der Blockgröße und des Paritätsrotationsschemas. Nur so lassen sich fehlende Datensektoren korrekt berechnen und das Volume virtuell wieder zusammensetzen. Unterschreitet das Array seine Betriebsschwelle, etwa durch den Ausfall von zwei Laufwerken bei RAID 5 oder drei Laufwerken bei RAID 6, ist eine vollständige mathematische Rekonstruktion der fehlenden Blöcke nicht mehr möglich. In diesem Fall müssen die ausgefallenen Laufwerke in einer spezialisierten Laborumgebung physisch instand gesetzt und geklont werden, um die für die Paritätsberechnungen erforderliche Mindestanzahl funktionsfähiger Laufwerke wiederherzustellen.

Weiterlesen: Lesen Sie unseren Leitfaden zur Datenwiederherstellung aus RAID-Arrays mit Redundanz (einschließlich RAID 1, RAID 3, RAID 4, RAID 5 und RAID 6).

Verschachtelte (hybride) RAID-Systeme

Verschachtelte Topologien kombinieren mehrere Datenverteilungsmethoden, um deren jeweilige Vorteile hinsichtlich Leistung und Fehlertoleranz zu vereinen. Beispiele hierfür sind RAID 10, RAID 50 und RAID 60. Bei einem RAID 10-System werden zunächst jeweils zwei Laufwerke gespiegelt, sodass RAID 1-Subarrays entstehen. Anschließend wird über diese gespiegelten Paare ein übergeordnetes Striping (RAID 0) gelegt. Die Datenwiederherstellung aus solchen Systemen erfordert einen mehrstufigen virtuellen Rekonstruktionsprozess: Zunächst müssen die Parameter der zugrunde liegenden Subarrays ermittelt werden, bevor das übergeordnete, einheitliche Dateisystem analysiert werden kann.

Weiterlesen: Lesen Sie unseren Leitfaden zur Datenwiederherstellung aus verschachtelten (hybriden) RAID-Systemen (einschließlich RAID 0+1, RAID 10, RAID 50 und RAID 60).

Wie in diesem Artikel erläutert, erfordert die Datenwiederherstellung aus einem RAID-System, dass man über das virtuelle Speichervolume hinausblickt und die zugrunde liegende Architektur analysiert. Der gesamte Rekonstruktionsprozess hängt von der Analyse und Nachbildung der spezifischen Datenverteilungsmechanismen ab, also von Striping, Spiegelung (Mirroring) und Parität, die die Struktur des Arrays bestimmen.

Unabhängig davon, ob es sich um nicht-redundante, redundante oder verschachtelte Array-Konfigurationen handelt, ist die genaue Bestimmung der Redundanzart und der Blockgeometrie der entscheidende erste Schritt zu einer erfolgreichen Datenwiederherstellung. Einen umfassenderen Überblick über die grundlegenden Prinzipien und Faktoren, die den Wiederherstellungsprozess beeinflussen, bietet unser umfassender Leitfaden zur RAID-Datenwiederherstellung.

Letzte Aktualisierung: 19. September 2026

Wenn Ihnen dieser Artikel gefällt, teilen Sie ihn in sozialen Medien: