Wie funktioniert die Parität auf einem RAID-5-Array?

31

Ich suche nach einem netten kleinen RAID-Array für dedizierte Backups. Ich würde gerne 2-4 TB Speicherplatz zur Verfügung haben, da ich diese unangenehme Angewohnheit habe, alles zu digitalisieren. Daher brauche ich viel Speicher und viel Redundanz im Falle eines Laufwerksausfalls. Außerdem werde ich im Wesentlichen die /homeOrdner von 2-3 Computern mit einem der "Time Machine" -Klone für Linux sichern. Auf dieses Array kann über mein lokales Netzwerk über SSH zugegriffen werden.

Ich habe Schwierigkeiten zu verstehen, wie RAID-5 Parität erreicht und wie viele Laufwerke tatsächlich benötigt werden. Man würde davon ausgehen, dass es 5 Laufwerke braucht, aber ich könnte mich irren. Die meisten Diagramme, die ich gesehen habe, haben mich bisher nur verwirrt. Anscheinend funktioniert RAID-5 so. Bitte korrigieren Sie mich, da ich sicher bin, dass ich es nicht richtig verstehe:

/---STORAGE---\    /---PARITY----\
|   DRIVE_1   |    |   DRIVE_4   |
|   DRIVE_2   |----|     ...     |
|   DRIVE_3   |    |             |
\-------------/    \-------------/

Es scheint, dass die Laufwerke 1-3 als ein einzelnes, massives Laufwerk ( capacity * number_of_drives) angezeigt werden und funktionieren und die Paritätslaufwerke diese Laufwerke sichern. Was mir merkwürdig vorkommt, ist, dass ich in der Regel mehr als 3 Speicherlaufwerke in einem Diagramm mit nur 1 oder 2 Paritätslaufwerken sehe. Angenommen, wir betreiben 4 1-TB-Laufwerke in einem RAID-5-Array, 3 laufende Speicher und 1 laufende Parität. Wir haben 3 TB tatsächlichen Speicher, aber nur 1 TB Parität !?

Ich weiß, dass ich hier etwas vermisse, kann mir jemand helfen? Was wäre für meinen Anwendungsfall besser, RAID-5 oder RAID-6? Fehlertoleranz ist die höchste Priorität für mich an dieser Stelle, da es wird über ein Netzwerk nur für den privaten Gebrauch zu laufen, Geschwindigkeit nicht ist enorm wichtig.

Naftuli Kay
quelle

Antworten:

30

Es wird einfach jedes entsprechende Bit von jedem Laufwerk XOR-verknüpft. Wenn Sie ein Laufwerk verlieren, können Sie die fehlenden Daten neu erstellen.

Zum Hintergrund:

A B (A XOR B)
0 0    0
1 1    0
0 1    1
1 0    1

Angenommen, D ist das XOR der anderen Spalten. Solange Sie nur ein Laufwerk verlieren, können Sie herausfinden, was Sie verloren haben.

A B C D
1 0 0 1
0 1 0 1
1 1 0 0

Manchmal wird das Stripe-Bit auf die Laufwerke verteilt, aber das Konzept ist dasselbe.

Für RAID-5 benötigen Sie unabhängig von der Anzahl der Laufwerke nur 1 Laufwerk, damit die Parität mindestens so groß ist wie das kleinste Laufwerk in dem Array, das Sie RAID-fähig machen möchten.

RAID-5 für den persönlichen Gebrauch ist wahrscheinlich am besten geeignet, da der Rechenaufwand viel geringer ist als bei RAID-6.

RAID-6 ist mit Galois-Feldern zur Berechnung der Parität komplizierter . Und das kann Paritätsberechnungen steuern. Sie können jedoch weitere Laufwerke verlieren. Wenn Sie Ihr Array jedoch neu erstellen, sobald ein einzelner Fehler auftritt, sollten Sie sich an RAID-5 halten.

Matt
quelle
Hervorragende Antwort. Ich habe zu groß gedacht, auf der Basis einer vollständigen Festplatte und nicht auf Bit-Ebene. Verwendet RAID-5 also ein dediziertes Laufwerk für die Parität oder eher alle Laufwerke für die Parität? Das verwirrt mich.
Naftuli Kay
2
Ich glaube, der moderne Ansatz besteht darin, die Parität diagonal auf alle Laufwerke zu verteilen. Dies hat zur Folge, dass die Lesezeit auf Paritätsbits beschleunigt wird, da mehrere E / A-Anforderungen parallel an verschiedene Laufwerke gesendet werden können, aber zitieren Sie mich nicht dazu.
Matt
Gibt es eine mathematische Formel, mit der ich die auf jedem Laufwerk verfügbare Kapazität bei bestimmten xLaufwerken und yGB bestimmen kann?
Naftuli Kay
2
Ja, es ist die (kleinste Laufwerksgröße) * (Anzahl der Laufwerke in Array - 1)
Matt
1
Wenn die Parität nur ein XOR der beiden anderen Festplatten ist, woher wissen Sie, welche der beiden Festplatten beschädigt wurde? Würde ein bisschen Flip auf einer der Festplatten nicht zu einem bisschen Flip in der Parität führen?
Jay Sullivan
8

Ich denke, hier ist ein besseres Diagramm, um zu zeigen, wie Parität in RAID4 und RAID5 funktioniert

RAID4

Disk1  Disk2  Disk3  Disk4
----------------------------
data1  data1  data1  parity1
data2  data2  data2  parity2
data3  data3  data3  parity3
data4  data4  data4  parity4

RAID5

Disk1   Disk2   Disk3   Disk4
----------------------------
parity1 data1   data1   data1   
data2   parity2 data2   data2  
data3   data3   parity3 data3
data4   data4   data4   parity4
camster342
quelle
Oder sehen Sie sich diese SVG auf Wikipedia an. De.wikipedia.org/wiki/Standard_RAID_levels#/media/…
Giuseppe Crinò
4

Ich würde empfehlen, diesen Wikipedia-Artikel zu Raid 5 und Raid 6 zu lesen

http://en.wikipedia.org/wiki/Standard_RAID_levels#RAID_5_parity_handling

RAID 5 schreibt einen Paritätsblock in jeden Streifen, so dass für Streifen A eines 4-Platten-Arrays die Paritätsprüfung auf die 4. Platte mit den Daten auf den Platten 1, 2 und 3 geschrieben wird

Für Streifen B befindet sich der Paritätsblock auf Datenträger 3 mit Daten auf den Datenträgern 1, 2 und 4 usw.

Wenn beispielsweise Datenträger 4 ausfällt, können die Daten für Strip B wiederhergestellt werden, da Sie die Daten auf Datenträger 1 und 2 kennen und die Paritätsprüfung auf Datenträger 3 durchführen.

Wenn der Streifen B eine Parität von "2" hatte und der Datenträger 1 Daten von "1" und der Datenträger 2 Daten von "0" hat, muss der Datenträger 4 Daten von "1" haben, damit der Datenträger mit data = "1" beschrieben wird.

Die gesamte Festplatte kann auf diese Weise neu erstellt werden. RAID 6 erweitert dies, indem 2 Party-Blöcke pro Stripe erstellt werden.

In Bezug auf den Speicherplatz für Raid 5 verlieren Sie immer nur eine Festplatte, die Platz für die Parität bietet, da nur auf Paritätsblöcke pro Stripe geschrieben wird. Bei Raid 6 verlieren Sie 2 Festplatten, können aber auch zwei Festplatten verlieren, anstatt die, in die Sie verlieren können Schlachtzug 5;)

Der Wikipedia-Artikel erklärt dies besser!

Markfknight
quelle
3

RAID 5 verwendet ein Laufwerk für die Parität, unabhängig davon, wie viele Datenlaufwerke sich im Array befinden. Dies bedeutet, dass je mehr Laufwerke hinzugefügt werden, desto effizienter wird der verfügbare Speicherplatz.

Die Parität wird erreicht, indem in jedem Laufwerk eine XOR-Operation über denselben Block ausgeführt wird. Der Inhalt des Paritätslaufwerks wird so angepasst, dass alle Laufwerke XOR auf Null setzen . Dies bedeutet , dass RAID 5 ist begrenzt durch die kleinste Kapazität aller Laufwerke im Array.

RAID 6 ist ähnlich, mit der Ausnahme, dass zwei gleichzeitige Laufwerksfehler toleriert werden können. Dies ist nützlich, da der Vorgang des " Resilverns " eines Arrays nach einem Ausfall eines einzelnen Laufwerks unter Umständen so anstrengend ist, dass ein zweites Laufwerk ausfällt.

sblair
quelle
So dass im Wesentlichen bedeutet , dass ich kann 4 2 TB Laufwerke und haben 6 TB wirksam, redundante Speicherung?
Naftuli Kay
@TK Kocheran Mit RAID 5 ja. Beachten Sie, dass der effektive Speicher aufgrund des Dateisystems etwas geringer ist. Beispielsweise verfügt mein NAS mit 4 2-TB-Laufwerken in RAID-Z1 (ZFS-Version von RAID 5) über einen nutzbaren Speicherplatz von 5,18 TB.
sblair
Na ja, natürlich :) Das passiert immer so. Die nächste Frage ist, welches Dateisystem verwendet werden soll ...
Naftuli Kay
0

Wenn Fehlertoleranz Ihr Ziel ist, bietet RAID-6 genügend Redundanz, um zwei Laufwerke zu verlieren. In der Regel toleriert RAID-5 nur einen Ausfall eines einzelnen Laufwerks.

Nate
quelle
Wie ist das Verhältnis von Laufwerken zu Parität (Gesamtspeicher) für RAID-6? drive_size * (drive_count - 2)?
Naftuli Kay
1
Neben der Fehlertoleranz für ein zweites Laufwerk, das fehlerhaft wird, bevor Sie das erste ersetzen können, gibt es eine andere Situation, für die es sich eignet, und auf die ich mehrmals gestoßen bin: Ein Laufwerk in einem RAID-Array ist fehlerhaft, und so weiter neues Laufwerk ist bestellt. Ein zufälliger Typ, der nichts über RAID-Arrays weiß, geht mit einem neuen Laufwerk in der Hand in den Serverraum, verwechselt die Nummerierung und wirft das falsche Laufwerk aus dem Array aus, um es zu ersetzen. Unter RAID5 ist Ihr Array genau dort angeschraubt. RAID6 bedeutet, dass Sie immer noch wiederherstellen können.
camster342