Unraid Parity Erklärung

Unraid Parity Erklärung

September 30, 2021 0 Von Tobias

Die Parität wird von unRAID zum Schutz vor Datenverlusten verwendet. Wenn ein Laufwerk im Array ausfällt, können die Daten auf den anderen Laufwerken mit den Paritätsdaten kombiniert werden, um die fehlenden Daten zu rekonstruieren.

Warum eine Parität? Weil es auf der Welt nur zwei Arten von Festplatten gibt:

  • Festplatten, die bereits ausgefallen sind.
  • Festplatten, die noch nicht ausgefallen sind, sondern nur etwas mehr Zeit brauchen, bis sie ausfallen.

So funktioniert die Parität

Im Allgemeinen ist ein Paritätsprozess so konzipiert, dass er eine einzelne Bitänderung in einem bestimmten Satz von Bits erkennt, indem er den Wert eines hinzugefügten Bits so einstellt, dass eine Summierung über diesen Satz von Bits auf einen bekannten Wert erzwungen wird. Das hinzugefügte Bit wird als Paritätsbit bezeichnet.

Bei unRAID werden die Paritätsbits auf einem von den Datenlaufwerken unabhängigen Paritätslaufwerk gespeichert. Dieses Paritätsbit funktioniert über den Satz von Bits in derselben relativen Bitposition auf jedem Laufwerk. So ist das 57. Bit des Paritätslaufwerks das Paritätsbit für das 57. Bit aller Datenlaufwerke. Eine Paritätsprüfung der 57. Bitposition addiert daher alle 57. Bits aller Laufwerke, einschließlich des Paritätslaufwerks, und prüft, ob die Summe eine GERADE Zahl ist. Wenn der zurückgegebene Wert nicht EVEN ist, wird das Paritätsbit umgeschaltet, so dass die Paritätsprüfung eine EVEN-Zahl zurückgibt.

Warum eine GERADE Zahl? unRAID verwendet eine “gerade Parität”, was einfach bedeutet, dass der Summationsprozess (unter Verwendung einer mathematischen Operation namens “exklusives ODER” oder “XOR”) über diesen Satz von Bits einen Wert liefern muss, der eine GERADE Zahl ist.

Digitale Daten werden als eine 1 oder eine 0 gespeichert:

Wenn Sie 4 Laufwerke mit den Bitwerten 1,1,1,1 haben, ist die Parität 0 (1+1+1+1+0=gerade).
Wenn die Bitwerte 1,0,0,0 sind, ist die Parität 1 (1+0+0+0+1=gerade).

Wenn ein Laufwerk zu einem paritätsgeschützten unRAID-Array hinzugefügt wird, wird es zunächst gelöscht, indem Nullen in alle Bits aller Sektoren dieses Laufwerks geschrieben werden. Ein Nullwert hat keinen Einfluss auf die Parität. Sobald das neue Laufwerk voller Nullen ist, kann unRAID es geräuschlos in das Array einfügen, ohne die Parität wiederherstellen zu müssen. Auf diese Weise können mehrere Festplatten gleichzeitig hinzugefügt werden.

Rekonstruktion von Daten

Es gibt nur zwei Situationen, in denen die Paritätsdaten von unRAID zur Rekonstruktion von Daten verwendet werden:

  • wenn ein Datenträger rekonstruiert wird; und
  • wenn ein fehlerhafter Sektor entdeckt wird.

Zu diesen Zeitpunkten werden alle Platten (einschließlich der Parität) gelesen, um die Daten zu rekonstruieren, die auf die Zielplatte geschrieben werden sollen. Da die Summe der Bits immer gerade ist, kann unRAID jedes EINE fehlende Datenelement (die Parität oder eine Datenplatte) rekonstruieren, solange die anderen Elemente korrekt sind.

In den beiden obigen Beispielen, sagen wir, die 2.

  • 1+x+1+1+0=gerade, x muss gleich 1 sein
  • 1+x+0+0+1=gerade, x muss gleich 0 sein

Da die Parität für die Datenrekonstruktion so wichtig ist, sollten Sie sicherstellen, dass die Parität korrekt ist, indem Sie regelmäßig Paritätsprüfungen durchführen.

Wenn Sie eine einzelne Platte physisch aus Ihrem Array entfernen, können Sie immer noch auf ihr lesen und schreiben. Sie wird durch das Auslesen aller anderen Datenplatten und der Parität simuliert. Auf dieselbe Weise wird die Paritätsplatte bei Bedarf aktualisiert, wenn auf die simulierte Platte geschrieben wird. Wenn Sie nun eine Ersatzplatte einbauen, kann diese anhand des neu rekonstruierten Inhalts auf der Grundlage der Parität und aller anderen Datenlaufwerke vollständig neu aufgebaut werden.

Paritätsprüfung

Bei einer Paritätssynchronisierung liest das System alle Datenplatten und schreibt die berechnete Parität auf die Paritätsplatte.

Bei einer Paritätsprüfung liest das System alle Datenplatten und die Paritätsplatte und vergleicht die berechnete Parität mit der gespeicherten Parität. Diese Operation hat ein Kennzeichen:

 CORRECT - if a parity mismatch occurs, write parity disk with computed parity and report in syslog
 NOCORRECT - just report in syslog

Es werden nur die ersten 100 Paritätsprüfungsfehler gemeldet. (Die Meldungen im Systemprotokoll werden für jede Sektoradresse generiert, bei der eine falsche Paritätsübereinstimmung auftritt. Wenn Sie also eine Paritätsprüfung bei einem Array durchführen, das keine gültige Parität hat, würde das Systemprotokoll schnell sehr umfangreich werden; daher die Begrenzung auf 100 Meldungen).

Diese Paritätsfehler werden “Sync-Fehler” oder “Paritäts-Sync-Fehler” genannt. Sie geben an, wie viele Blockadressen gefunden wurden, bei denen die berechnete Parität nicht mit der gespeicherten Parität “synchronisiert” wurde (d. h. übereinstimmte). (Ein ‘Block’ besteht aus 4096 Bytes. Dies ist auch die Linux-PAGE-Größe – die grundlegende Einheit der E/A.)

Eine gültige Paritätsplatte bedeutet, dass eine Paritätsplatte vorhanden ist und irgendwann in der Vergangenheit eine Paritätssynchronisation ohne Fehler (oder Abbruch) abgeschlossen wurde. Sobald die Paritätssynchronisierung abgeschlossen ist, ist die Paritätsplatte immer “gültig” (und hat einen grünen Punkt). Gültig” in diesem Sinne bedeutet, dass sie dazu verwendet werden kann, eine ausgefallene Datenplatte zu rekonstruieren.

(Eigentlich ist ‘gültig’ ein Status, der für alle Array-Platten gilt, sowohl für die Datenplatten als auch für die Paritätsplatte. Wenn alle Array-Platten bis auf eine gültig sind, bedeutet das, dass die ungültige Platte mit den Daten der anderen rekonstruiert werden kann).

Wenn eine Paritätsprüfung/-korrektur Fehler ergibt, warum ist die Paritätsplatte immer noch als “gültig” gekennzeichnet? Wenn das System die Paritätsplatte wegen einer Handvoll Paritätsfehler als “ungültig” markiert und dann eine andere Platte ausfällt, kann diese andere Platte nicht mehr rekonstruiert werden (weil es jetzt zwei ungültige Platten im Array gäbe). Die gesamte Paritätsplatte wird also nicht aufgrund der festgestellten Paritätsfehler als ungültig markiert. Natürlich kann ein Benutzer die Parität jederzeit für ungültig erklären, indem er ihre Zuweisung aufhebt.

Sobald die Parität berechnet wurde, sollte es nur 2 Möglichkeiten geben, dass Paritätsprüfungsfehler auftreten:

  • Ein nicht sauberes Herunterfahren, d. h. ein plötzlicher Stromausfall oder ein System-Reset. In diesem Fall könnten Schreibvorgänge auf die Paritäts- und/oder Datenplatten anstehen, die nicht abgeschlossen werden, so dass der entsprechende Stripe eine inkonsistente Parität aufweist.
  • Ein unerkannter Hardware-Fehler (z. B. eine stille Speicherbeschädigung).

Parity Festplatte

Größe

Die Größe der Paritätsplatte muss gleich oder größer sein als das größte Datenlaufwerk.

Performance

Die Verwendung von Parität zum Schutz Ihrer Daten wirkt sich unweigerlich auf die Leistung aus, wenn Sie Daten auf das Array schreiben. Jedes Mal, wenn auf eine Datenplatte geschrieben wird, muss auch die Paritätsplatte aktualisiert werden. Jeder Schreibvorgang auf eine paritätsgeschützte unRAID-Datenplatte führt zu 4 Plattenoperationen: Lesen und Schreiben für die Parität sowie Lesen und Schreiben für die Daten. Der Plattenteller jeder Platte muss nach dem Lesen eine volle Umdrehung machen, um den Plattenkopf wieder über dem Sektor zu positionieren, in den geschrieben wird.

Das Schreiben auf das unRAID-Array wird auch durch das langsamste (Drehgeschwindigkeit) der beteiligten Laufwerke begrenzt. Wenn nur das Paritätslaufwerk ein Laufwerk mit 7200 U/min ist, sind Sie immer noch durch die Geschwindigkeit des Datenlaufwerks begrenzt. Sie werden keine Verbesserung der Schreibgeschwindigkeit feststellen, es sei denn, es werden mehrere langsamere Datenlaufwerke gleichzeitig beschrieben und ein schnelleres Paritätslaufwerk mit 7200 U/min versucht, mit beiden mitzuhalten.

Dual parity

Bei großen Arrays ist “Dual Parity”, d. h. die Möglichkeit, eine zweite Paritätsfestplatte zu haben, nicht einfach eine Spiegelung der ersten. Dies ermöglicht zwei gleichzeitige Laufwerksausfälle ohne Datenverlust.

In einem P + Q-Redundanzsystem (wie in einem RAID-6-System) gäbe es zwei Redundanzplatten: ‘P’, die gewöhnliche XOR-Parität, und ‘Q’, die ein Reed-Solomon-Code ist. Dies ermöglicht unRAID die Wiederherstellung nach 2 Plattenfehlern mit minimalen Auswirkungen auf die Leistung. (Erfordert Klarstellung, dass dies tatsächlich verwendet wird)

Share