Zum Hauptinhalt springen
file-recoveryINFO

RAID-10-Datenrettung: Der Linux-Treiber ist kein RAID 1+0, und das Layout entscheidet alles

RAID 10 gilt als der einfache Fall: gespiegelte Paare, jedes Paar wird wie ein RAID 1 gerettet. Der md-Treiber von Linux arbeitet nicht so. Er akzeptiert Laufwerkszahlen, die kein Vielfaches der Kopienzahl sind, bietet drei Layouts unter derselben Levelnummer, und das md-Handbuch schreibt, die Überlebensfähigkeit auf Level 10 hänge von der Konfiguration ab.

Von Eric Gerard · Redakteur · Save My Disk8 Min. LesezeitFoto via Pexels

RAID 10 gilt als das einfache Level. Keine Parität zu rekonstruieren, keine Stripe-Arithmetik, nur gespiegelte Paare: die überlebende Hälfte jedes Paares suchen, die Dateien herunterkopieren, fertig. Dieser Ruf stammt aus der Lehrbuchdefinition von RAID 1+0.

Der md-Treiber von Linux, auf dem die meisten RAID-10-Verbünde außerhalb von Hardware-Controllern tatsächlich laufen, setzt diese Lehrbuchdefinition nicht um. Er setzt etwas Breiteres um, das sie enthält. Wenn Ihr Rettungsplan Paare voraussetzt, ist es womöglich der Plan für einen Verbund, den Sie gar nicht haben.

Der Name verspricht Paare, der Treiber verlangt keine

Das md-Handbuch beginnt den Abschnitt genau so, wie alle es erwarten. Es beschreibt RAID10 als « a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 » und ergänzt, dass « every datablock is duplicated some number of times, and the resulting collection of datablocks are distributed over multiple drives ».

Lesen Sie den zweiten Satz noch einmal, denn er leistet die eigentliche Arbeit. Er sagt nicht, dass die Laufwerke zu Spiegeln gruppiert werden. Er sagt, dass die Kopien verteilt werden. Die Folge formuliert das Handbuch anschließend unmissverständlich: « It should be noted that the number of devices in a RAID10 array need not be a multiple of the number of replica of each data block; however, there must be at least as many devices as replicas. »

Ein RAID 10 aus drei Laufwerken mit zwei Kopien von allem ist demnach ein zulässiger, gewöhnlicher Verbund. Einer aus fünf Laufwerken ebenso. Keiner von beiden zerfällt in Paare, aus dem einfachen Grund, dass es keine Paare gibt. Die Redundanz ist echt, aber sie ist über die Menge verteilt statt in Zweiergruppen eingeschlossen, und jeder Rettungsreflex, der auf « die andere Hälfte dieses Spiegels finden » gebaut ist, hat nichts mehr, woran er ansetzen könnte.

Drei Layouts verbergen sich hinter einer einzigen Levelnummer

Beim Anlegen des Verbunds werden zwei Dinge entschieden, die danach nie wieder in der Levelnummer auftauchen: wie viele Kopien jedes Blocks es gibt und wohin sie kommen. Das Handbuch ist deutlich: « When configuring a RAID10 array, it is necessary to specify the number of replicas of each data block that are required (this will usually be 2) and whether their layout should be 'near', 'far' or 'offset'. »

Die drei unterscheiden sich einzig in der Platzierung.

Near rückt die Kopien zusammen. Das Handbuch beschreibt sie als « consecutively ('as close to each other as possible') across the stripes of the array » gelegt und merkt an, dass sie bei gerader Laufwerkszahl wahrscheinlich am selben Offset auf verschiedenen Laufwerken liegen. Das ist die Anordnung, die sich wie das Lehrbuch verhält, und das md-Handbuch selbst nennt sie « the 'classic' RAID1+0 ».

Far rückt sie absichtlich auseinander, « quite distant ('as far as reasonably possible') from each other ». Der Grund ist Geschwindigkeit, nicht Sicherheit: « The advantage of this layout is that MD can easily spread sequential reads over the devices, making them similar to RAID0 in terms of speed. » Ein auf Lesedurchsatz gebauter Verbund ist sehr oft ein far-Verbund, und seine zweite Kopie liegt nirgends in der Nähe der ersten.

Offset ist der Kompromiss, bei dem « all the copies of a given chunk are striped consecutively ('offset by the stripe length after each other') over the devices ». Das Handbuch erwartet davon Leseeigenschaften ähnlich wie bei far, sofern die Chunk-Größe groß genug ist, ohne so viel Kopfbewegung beim Schreiben.

Auf Seiten der Daten unterscheidet sich zwischen den dreien nichts. Auf Seiten der Frage, wo man sie sucht, alles.

Reihen von rackmontierten Laufwerkseinschüben, von oben in flachem Winkel fotografiert, Dutzende gleicher Schlitten mit kleinen grünen Aktivitätsleuchten, die unscharf nach hinten im Schrank verlaufen.
Reihen von rackmontierten Laufwerkseinschüben, von oben in flachem Winkel fotografiert, Dutzende gleicher Schlitten mit kleinen grünen Aktivitätsleuchten, die unscharf nach hinten im Schrank verlaufen.

Warum das entscheidet, ob die Rekonstruktion Dateien oder Rauschen liefert

Einen gestripten Verbund zu rekonstruieren heißt, drei Fragen zu beantworten: welche Laufwerke, in welcher Reihenfolge, mit welcher Chunk-Größe. RAID 10 fügt eine vierte hinzu, die die Paritätslevel nicht haben: wo die zweite Kopie jedes Blocks liegt. Liegen Sie hier falsch, läuft die Rekonstruktion trotzdem durch. Sie verschränkt lediglich Blöcke von den falschen Offsets, und das Ergebnis ist ein Volume, das auf nichts mountet, oder schlimmer, das einen Verzeichnisbaum voller Dateien mountet, die sich als Müll öffnen.

Das ist der praktische Grund, warum das Layout vor den Daten wiederhergestellt werden muss. Es steht in den Metadaten des Verbunds, und deshalb zählt es hier mehr als auf jedem anderen Level, die Metadaten jedes Mitglieds zu lesen, bevor man irgendetwas anfasst. Sind die Metadaten fort und das Layout unbekannt, wird daraus ein kleines Suchproblem: drei Layouts, eine Handvoll plausibler Kopienzahlen und Chunk-Größen, an einer Kopie durchprobiert, bis ein Dateisystem erscheint. Diese Suche ist nur auf Abbildern sicher, denn jeder Versuch ist ein Schreibvorgang in die falsche Richtung, wenn Sie ihn auf den Laufwerken ausführen.

Was ein RAID 10 übersteht, und warum es Ihnen niemand vorab sagt

Die meistzitierte RAID-10-Behauptung lautet, es überstehe einen Ausfall je Spiegelpaar, ein Verbund aus vier Laufwerken dürfe also zwei verlieren, solange sie nicht zum selben Paar gehören. Für ein klassisches RAID 1+0 stimmt das, und das md-Handbuch hütet sich, es zu verallgemeinern.

Dort, wo es aufzählt, wie viele Laufwerke jedes Level verlieren darf, nennt es für die anderen konkrete Zahlen: « this number is one for RAID levels 4 and 5, two for RAID level 6, and all but one (N-1) for RAID level 1. » Für Level 10 hält es lediglich fest, die Überlebensfähigkeit sei « dependent on configuration ».

Das ist die ehrliche Antwort, und sie folgt aus allem Vorherigen. Bei zwei Kopien, verteilt über fünf Laufwerke im far-Layout, hängt die Rettbarkeit zweier toter Laufwerke davon ab, ob irgendein Block beide Kopien genau auf diesen beiden hatte. Zwei Verbünde, die dasselbe Level, dieselbe Laufwerkszahl und dieselbe Kapazität melden, können sich darin unterscheiden. Es wird beim Anlegen entschieden und ist an der Levelnummer nicht ablesbar.

Die praktische Folge ist einfach: Gehen Sie nach einem zweiten Ausfall auf Level 10 weder davon aus, dass alles in Ordnung ist, noch davon, dass alles verloren ist. Beide Schlüsse sind Wetten.

Die Reihenfolge, die Ihnen die Optionen erhält

Hören Sie auf zu schreiben. Ein degradierter Verbund, der weiterläuft, ist ein Rebuild, der auf seine Freigabe wartet, und auf diesem Level wissen Sie vielleicht nicht, welche Kopie er als Quelle nimmt.

Notieren Sie zuerst die Metadaten jedes Mitglieds. Layout, Kopienzahl, Chunk-Größe, Laufwerksreihenfolge und Event-Zähler. Das ist die Information, die aus der Rettung ein Verfahren statt einer Suche macht, und zugleich die, die ein übereiltes recreate zerstört.

Erstellen Sie Abbilder aller Mitglieder, nicht nur der überlebenden. Ein Abbild ist ein Lesevorgang. Es kann nichts verschlimmern, und es macht jeden späteren Fehler umkehrbar. Bei einem Verbund, dessen richtiges Layout womöglich mehrere Versuche braucht, ist Arbeiten auf Abbildern keine Vorsicht, sondern die einzige Möglichkeit, überhaupt mehr als einen Versuch zu haben.

Assemblieren Sie schreibgeschützt und prüfen Sie, dass Sie ein Dateisystem sehen, bevor Sie den Parametern glauben. Eine Rekonstruktion mit falschem Layout kündigt sich nicht an. Ein mountbares, durchsuchbares Dateisystem, dessen Dateien sich öffnen, ist der Test.

Rebuilden Sie zuletzt, auf bereits bewährter Hardware, sobald die Daten anderswo existieren als in diesem Verbund.

Redaktionelle Empfehlung
4.5 / 5

Dateien zurücklesen, wenn Abbilder und Layout feststehen

Arbeitet auf einem Abbild oder einem Volume, das Sie bereits mounten können. Es ermittelt das near-, far- oder offset-Layout nicht für Sie und ersetzt nicht das vorherige Abbilden der Mitglieder.

Gegründet 200430 Tage GarantieKostenlose 2-GB-Version
Das Angebot ansehen

Kurz gefasst

RAID 10 unter Linux ist nicht der Verbund gespiegelter Paare, den sein Name nahelegt. Das md-Handbuch erlaubt eine Laufwerkszahl, die kein Vielfaches der Kopienzahl ist, woraus Verbünde ohne jedes einzeln rettbare Paar entstehen. Es bietet die Layouts near, far und offset unter derselben Levelnummer, und nur near mit gerader Laufwerkszahl ähnelt dem klassischen RAID 1+0.

Weil die Kopien konstruktionsbedingt weit auseinander liegen können, muss das Layout vor jedem Rekonstruktionsversuch bekannt sein, sonst läuft der Rebuild durch und produziert Unsinn. Und weil die Platzierung beim Anlegen entschieden wird, weigert sich das Handbuch zu sagen, wie viele Laufwerke ein RAID 10 verlieren darf: auf diesem Level hängt die Überlebensfähigkeit von der Konfiguration ab.

Lesen Sie die Metadaten jedes Mitglieds, bilden Sie alle ab, probieren Sie die Layouts auf den Kopien, und rebuilden Sie erst, wenn Ihre Dateien woanders liegen.

Die Beschreibung von RAID10 als Kombination aus RAID1 und RAID0, die Aussage, dass die Laufwerkszahl kein Vielfaches der Kopienzahl sein muss, die Definitionen der Layouts near, far und offset, der Hinweis, dass near mit gerader Laufwerkszahl das klassische RAID1+0 ist, sowie die Aussage, dass die Überlebensfähigkeit auf Level 10 von der Konfiguration abhängt, stammen sämtlich aus der Linux-Handbuchseite md(4), geprüft zum Zeitpunkt der Abfassung. Die Zitate stehen in ihrer Originalsprache. Prüfen Sie gegen die Kernel- und mdadm-Version, die Sie einsetzen. Kommerzielle Links tragen das Attribut rel="sponsored nofollow"; eine Affiliate-Provision kann anfallen, ohne Mehrkosten für Sie.

Verwandte Leitfäden

Redaktionelle Empfehlung
4.5 / 5

Stelle deine gelöschten Dateien wieder her → EaseUS

Kostenloser Scan · gelöschte, formatierte & verlorene Dateien · Windows & Mac

Gegründet 200430 Tage GarantieKostenlose 2-GB-Version
Das Angebot ansehen

Häufig gestellte Fragen

Ist RAID 10 dasselbe wie RAID 1+0?

Unter Linux nicht, und der Unterschied zählt genau im Moment der Rettung. Das md-Handbuch führt das Level so ein: « RAID10 provides a combination of RAID1 and RAID0, and is sometimes known as RAID1+0 », und weicht davon sofort ab. Es hält fest, dass die Zahl der Laufwerke eines RAID10-Verbunds kein Vielfaches der Kopienzahl je Datenblock sein muss, es braucht lediglich mindestens so viele Laufwerke wie Kopien. Ein klassisches RAID 1+0 ist ein Stripe über getrennten Spiegelpaaren und benötigt daher eine gerade Laufwerkszahl. Ein md-RAID10 mit drei Laufwerken und zwei Kopien ist völlig zulässig, und es hat keinerlei Paare, die man einzeln retten könnte.

Wie viele Laufwerke darf ein RAID 10 verlieren?

Es gibt keine einheitliche Antwort, und das md-Handbuch verweigert sie. Dort, wo es aufzählt, wie viele Laufwerke jedes Level verlieren darf, nennt es eine Zahl für die Paritätslevel und « all but one » für RAID 1, für Level 10 dagegen heißt es, die Überlebensfähigkeit sei « dependent on configuration ». Das ist keine Unschärfe. Bei zwei Kopien hängt es davon ab, wo diese beiden Kopien gelandet sind, also vom Layout und von der Laufwerkszahl, ob zwei gleichzeitige Ausfälle überlebbar sind. Zwei Ausfälle können harmlos oder tödlich sein, in Verbünden, die dasselbe Level melden.

Was sind die Layouts near, far und offset?

Es sind drei Arten, die Kopien zu platzieren, festgelegt beim Anlegen des Verbunds. Bei near werden die Kopien eines Blocks laut Handbuch fortlaufend und so nah beieinander wie möglich über die Stripes gelegt. Bei far liegen sie so weit auseinander wie sinnvoll möglich, wodurch md sequenzielle Lesezugriffe über die Laufwerke verteilen und der Geschwindigkeit eines RAID0 nahekommen kann. Bei offset werden alle Kopien eines Blocks fortlaufend, jeweils um eine Stripe-Länge versetzt, über die Laufwerke geschrieben. Die Daten sind in allen drei Fällen identisch. Ihre Position auf den Platten nicht.

Kann ich ein Laufwerk aus einem RAID 10 ziehen und die Dateien darauf lesen?

Nur im near-Layout mit gerader Laufwerkszahl, und auch dann nur teilweise. In dieser Anordnung enthält ein Mitglied ganze Blöcke, die ein Dateisystemwerkzeug erkennen kann, aber höchstens die Hälfte des Verbunds: Sie erhalten Bruchstücke von Dateien, keine Dateien. Bei far und offset sind die Kopien absichtlich verschoben, ein einzeln gelesenes Laufwerk ist also kein zusammenhängendes Stück des Dateisystems. Ein Laufwerk, das in dieser Lage leer wirkt, ist in aller Regel intakt und nur falsch gelesen.

Soll ich den Controller rebuilden lassen, bevor ich rette?

Nein. Ein Rebuild schreibt, und auf Level 10 wissen Sie womöglich nicht, welche Kopie der Treiber als maßgeblich behandelt. Erstellen Sie zuerst ein Abbild jedes Mitglieds, denn ein Abbild ist ein Lesevorgang und kostet nur Zeit, und arbeiten Sie danach auf den Kopien. Rebuilden Sie, wenn Ihre Daten bereits anderswo als im Verbund vorliegen.