Warum ist RAID 1 + 6 kein häufigeres Layout?

17

Warum sind die verschachtelten RAID-Level 1 + 5 oder 1 + 6 so gut wie unbekannt? Dem Wikipedia-Artikel zu verschachtelten RAID-Levels fehlen derzeit die entsprechenden Abschnitte. Ich verstehe nicht, warum sie nicht häufiger als RAID 1 + 0 sind, insbesondere im Vergleich zu RAID 1 + 0 Triple Mirroring.

Es ist offensichtlich, dass die Wiederherstellungszeit zunehmend problematisch wird, da die Laufwerkskapazitäten schneller zunehmen als ihre Leistung oder Zuverlässigkeit. Mir wurde gesagt, dass RAID 1 schneller wiederhergestellt wird und dass ein RAID 0-Array mit RAID 1-Paaren das Problem vermeidet, ein RAID 5- oder RAID 6-Array mit RAID 1-Paaren sicherlich auch. Ich würde zumindest davon ausgehen, dass sie eine häufige Alternative zu RAID 1 + 0 darstellen.

Für 16 von 1 TB Laufwerken sind hier meine Berechnungen der naiven Wahrscheinlichkeit, auf Backup zurückzugreifen, dh mit der vereinfachenden Annahme, dass die Laufwerke mit gerader Wahrscheinlichkeit unabhängig sind:

RAID | storage | cumulative probabilities of resorting to backup /m
 1+0 |     8TB | 0, 67, 200, 385, 590, 776, 910, 980, 1000, 1000, 1000
 1+5 |     7TB | 0,  0,   0,  15,  77, 217, 441, 702,  910, 1000, 1000
 1+6 |     6TB | 0,  0,   0,   0,   0,   7,  49, 179,  441,  776, 1000
(m = 0.001, i.e. milli.)

Wenn dies korrekt ist, ist RAID 1 + 6 außergewöhnlich zuverlässiger als RAID 1 + 0, da die Speicherkapazität nur um 25% verringert wird. Wie im Allgemeinen ist der theoretische Schreibdurchsatz (ohne Suchzeiten) die Speicherkapazität / Array-Größe × Anzahl der Laufwerke × Schreibdurchsatz des langsamsten Laufwerks im Array (RAID-Levels mit Redundanz haben eine höhere Schreibverstärkung für Schreibvorgänge, bei denen Füllen Sie keinen Streifen aus, dies hängt jedoch von der Blockgröße ab. Der theoretische Lesedurchsatz ist die Summe der Lesedurchsätze der Laufwerke im Array (mit der Ausnahme, dass RAID 0, RAID 5 und RAID 6 theoretisch immer noch durch beschränkt werden können der langsamste, der zweitlangsamste und der drittlangsamste Laufwerkslesedurchsatz). Dh bei identischen Antrieben wären das jeweils 8 ×, 7 ×,

Betrachten Sie außerdem ein RAID 0- Vierfach- RAID 1-Tripel, dh RAID 1 + 0-Tripelspiegelung von 12 Laufwerken, und ein RAID 6-Sechsfach-RAID 1-Paar, dh RAID 1 + 6 von 12 Laufwerken. Auch dies sind identische 1-TB-Laufwerke. Beide Layouts haben dieselbe Anzahl von Laufwerken (12), dieselbe Speicherkapazität (4 TB), denselben Redundanzanteil (2/3), denselben maximalen Schreibdurchsatz (4 ×) und denselben maximalen Lesedurchsatz ( 12 ×). Hier sind meine Berechnungen (soweit):

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | 0, 0, 18,  ?,   ?,   ?,   ?,   ?, 1000
1+6 (6×2) | 0, 0,  0,  0,   0,  22, 152, 515, 1000

Ja, dies mag wie ein Overkill aussehen, aber wo Triple Mirroring verwendet wird, um einen Klon für die Sicherung abzuspalten, kann RAID 1 + 6 genauso gut verwendet werden, indem einfach 1 von jedem Laufwerk mit Ausnahme von 2 des RAID eingefroren und entfernt wird 1 Paare, und dabei ist die Zuverlässigkeit beim Herabsetzen weitaus besser als beim herabgesetzten RAID 1 + 0-Array. Hier sind meine Berechnungen für 12 Laufwerke, die auf diese Weise um 4 verringert wurden:

RAID      | cumulative probabilities of resorting to backup /m
1+0 (4×3) | (0, 0, 0, 0), 0, 143, 429, 771, 1000
1+6 (6×2) | (0, 0, 0, 0), 0,   0,  71, 414, 1000

Der Lesedurchsatz kann jedoch während dieser Zeit für RAID 1 + 6 auf das 6fache gesenkt werden, während RAID 1 + 0 nur auf das 8fache reduziert wird. Wenn jedoch ein Laufwerk ausfällt, während sich das Array in diesem herabgesetzten Zustand befindet, besteht für das RAID 1 + 6-Array eine Wahrscheinlichkeit von 50 bis 50, dass es etwa 6-fach bleibt oder weiter auf 5-fach begrenzt ist, während für das RAID 1 + 0-Array dies der Fall ist auf einen 4 × Flaschenhals beschränkt sein. Der Schreibdurchsatz sollte ziemlich unbeeinträchtigt sein (er kann sich sogar erhöhen, wenn die für die Sicherung verwendeten Laufwerke die langsamsten Laufwerke sind).

Tatsächlich kann beides als "Triple Mirroring" angesehen werden, da das heruntergekommene RAID 1 + 6-Array eine zusätzliche RAID 6-Gruppe von 4 Laufwerken abspalten kann. Mit anderen Worten, dieses RAID 1 + 6-Layout mit 12 Laufwerken kann in 3 herabgesetzte (aber funktionsfähige) RAID 6-Arrays unterteilt werden!

So ist es nur, dass die meisten Leute nicht im Detail in die Mathematik gegangen sind? Werden wir in Zukunft mehr RAID 1 + 6 sehen?

James Haigh
quelle
2
Ihre Durchsatzberechnung scheint die Schreibverstärkung nicht berücksichtigt zu haben, um die Parität zu erzeugen.
James Ryan
1
@JamesRyan: Ja, ich habe in der Tat angenommen, dass die Parität geschrieben werden muss. Dafür ist die „Speicherkapazität / Array-Größe“ gedacht - das Gegenteil davon ist der Schreibverstärkungsfaktor, ohne weitere Schreibverstärkungen für Solid-State-Laufwerke. Beachten Sie, dass dies auch die Schreibverstärkung der RAID 1-Redundanz umfasst. Grundsätzlich ist der Schreibverstärkungsfaktor gleich dem Kehrwert von 1 minus dem Redundanzanteil. Eine Redundanz von 50% ergibt einen Schreibverstärkungsfaktor von 2; Eine Redundanz von 62,5% (10/16) ergibt einen Schreibverstärkungsfaktor von ~ 2,67 (16/6).
James Haigh
1
nein das ist falsch Jeder RAID6-Schreibvorgang benötigt 6 E / A und jeder RAID1-Schreibvorgang 2 E / A. Diese sind multiplikativ. Bei RAID 1 + 6 benötigt jeder Schreibvorgang 12 E / A-Vorgänge, bei RAID 10 sind es 2 E / A-Vorgänge. Der Schreibdurchsatz auf 12 Laufwerken beträgt 1x für RAID1 + 6 und 6x für RAID10!
James Ryan
@JamesRyan: Oh, ich verstehe, wohin Sie jetzt gehen - für Schreibvorgänge mit weniger als einem vollen Streifen kann sich der Schreibverstärkungsfaktor für RAID 1 + 6 verdoppeln, wodurch sich der maximale Schreibdurchsatz halbiert. Für einen vollständigen Stripe gibt es im 6 × 2-Beispiel 12 Schreibvorgänge, aber Sie vergessen, dass dies für Daten im Wert von 4 Chunks gilt. Für einen Wert von 4, 3, 2 bzw. 1 Chunks betragen die Schreibverstärkungsfaktoren (6 × 2) / 4 = 3, (5 × 2) / 3 = ~ 3,33, (4 × 2) / 2 = 4, ( 3 × 2) / 1 = 6, was maximale Schreibdurchsätze von 4 ×, 3,6 ×, 3 ×, 2 × ergibt. Für RAID 1 + 0 4 × 3 ist es (4 × 3) / 4, (3 × 3) / 3, (2 × 3) / 2, (1 × 3) / 1, was eine Konstante 4 × ergibt. …
James Haigh,
2
Basierend auf Ihren Berechnungen haben Sie angegeben, dass RAID1 + 6 den gleichen Schreibdurchsatz wie RAID10 mit Triple hat. In der Realität hat RAID1 + 6 nicht einmal den Schreibdurchsatz von RAID10 aus der Ferne, sodass Ihre Berechnungen oder die Annahmen, auf denen sie basieren, falsch sind . Ich habe versucht, Ihnen zu helfen, zu verstehen, warum, wenn Sie sich weigern, zuzuhören, wir möglicherweise unsere Zeit verschwenden, aber Sie es sind, die es verschwenden.
James Ryan

Antworten:

17

Generell würde ich sagen, dass RAID 1 + 0 in der Regel häufiger verwendet wird als 1 + 5 oder 1 + 6, da RAID 1 + 0 zuverlässig genug ist und eine geringfügig bessere Leistung und mehr nutzbaren Speicher bietet.

Ich denke, die meisten Leute würden den Ausfall eines vollständigen RAID-1-Paares innerhalb der RAID-1 + 0-Gruppe als ein unglaublich seltenes Ereignis ansehen, für das es sich lohnt, die Backups auszubrechen Festplatte als nutzbarer Speicherplatz.

Wenn Sie eine bessere Zuverlässigkeit als RAID 1 + 0 benötigen, dann entscheiden Sie sich für diese! ..aber die meisten Leute brauchen das wahrscheinlich nicht.

Shane Madden
quelle
1
Das Problem, das ich mit RAID 1 + 0 habe, ist, dass es ein schlechtes Verhältnis von Zuverlässigkeit zu Speicher hat. Wenn RAID 6 beliebig erweiterbar auf eine beliebige Anzahl von Paritäten (unter n - 1) wurde dann für die gleichen Laufwerke können Sie sowohl eine erhöhte Speicher erreichen und eine bessere Zuverlässigkeit als RAID 1 + 0. Wenn im obigen Beispiel RAID 6 mit 4 Paritäten möglich wäre, hätten Sie 50% mehr Speicher und einen maximalen Schreibdurchsatz als RAID 1 + 0, aber eine außergewöhnlich höhere Zuverlässigkeit. RAID 6 mit 3 oder 4 Paritäten bietet einen guten Kompromiss zwischen Zuverlässigkeit und Speicherplatz.
James Haigh
4
@JamesHaigh RAID 6 gegen RAID 1 + 0 ist eine ganz andere Diskussion als RAID 1 + 6 gegen RAID 1 + 0, Sie haben das Thema gewechselt. ZFS's raidz3 scheint in Ihrer Gasse zu sein? Wie auch immer, Ihrer Meinung nach bietet RAID 1 + 0 einige Leistungsvorteile gegenüber RAID 6, z. B. kleine Einzelblockschreibvorgänge, bei denen eine weitaus geringere Anzahl von Laufwerken berührt werden muss (und zurück zu raidz3: ZFS behandelt dies auf intelligente Weise, indem mehrere geschrieben werden Vollkopien, anstatt für kleine Schreibvorgänge auf alle Datenträger zu schreiben)
Shane Madden
Sorry, ja, ich denke, das ist wirklich das, was ich jage. Seit diesem letzten Kommentar habe ich eine neue Frage speziell zu RAID mit 3 oder mehr Paritäten geschrieben . Das wäre besser als RAID 1 + 6, denke ich. Es wäre auch flexibler und einfacher, den gewünschten Kompromiss zu erzielen. Vielleicht möchten Sie diese Frage noch einmal beantworten.
James Haigh
3
RAID 6 kann nicht linear erweitert werden, da dies nicht funktioniert. Die Syndromberechnung für die zweite Parität wird nicht einfach auf einen Dritten skaliert. Sie können jedoch auch kleinere RAID 6-Gruppen erstellen - es gibt keinen wirklichen Grund, warum Sie 14 + 2 ausführen müssen. Stattdessen können Sie 2 + 2 oder 4 + 2 ausführen und viel Zuverlässigkeit gewinnen.
Sobrique
1
@JamesHaigh Was Sie zu wollen scheinen, ist ein 12-Wege-raidz8. Basierend auf der Logik, die für Paritätsberechnungen verwendet wird, werden Prozessoren auch bei trivialen Daten auf Dauer gebunden. Einzelne Parität ist im Wesentlichen XOR (einfach). Doppelte Parität hat etwas mit Quadraten zu tun (nicht schwer, aber nicht einfach). Dreifache Parität ist würfelbasiert oder ähnlich (hart). 4, 5, 6, 7 oder 8 Parität erfordert noch größere Berechnungen (auf einer exponentiellen Skala) (für die möglicherweise Quantencomputer erforderlich sind). Denken Sie daran, dass die IOPS mit zunehmender Form NULL zunimmt. Für Medien, wen interessiert das? Für VMs tötet es.
Killermist
16

Die praktische Antwort liegt an der Schnittstelle von Hardware-RAID-Controller-Spezifikationen, durchschnittlicher Festplattengröße, Laufwerksformfaktoren und Serverdesign.

Die meisten Hardware-RAID-Controller sind in den von ihnen unterstützten RAID-Stufen begrenzt. Hier sind die RAID-Optionen für einen HP ProLiant Smart Array-Controller:

[raid=0|1|1adm|1+0|1+0adm|5|50|6|60]

hinweis: das "adm" ist nur eine dreifache spiegelung

Unterstützung für LSI-RAID-Controller: 0, 1, 5, 6, 10, 50, and 60

Daher können diese Controller nur RAID 50 und 60 als verschachtelte Ebenen verwenden. LSI ( geb. Dell PERC ) und HP machen den größten Teil des Marktes für Enterprise Server-Speicheradapter aus. Dies ist der Hauptgrund dafür, dass Sie im Feld kein RAID 1 + 6 oder RAID 61 sehen.

Darüber hinaus erfordern geschachtelte RAID-Level jenseits von RAID 10 eine relativ große Anzahl von Festplatten. Angesichts der zunehmenden verfügbaren Laufwerkskapazitäten (mit 3,5-Zoll-Nearline-SAS- und SATA-Laufwerken) und der Tatsache, dass viele Server-Chassis mit 8 x 2,5-Zoll-Laufwerkkäfigen ausgelegt sind, gibt es kaum Möglichkeiten, RAID 1+ physisch zu konfigurieren 6 oder RAID 61.

Die Bereiche, in denen Sie möglicherweise so etwas wie RAID 1 + 6 sehen, sind RAID-Lösungen für Software mit großem Gehäuse. Linux MD RAID oder ZFS sind definitiv dazu in der Lage. Zu diesem Zeitpunkt kann der Ausfall des Laufwerks jedoch durch Hot- oder Cold-Spare-Festplatten verringert werden. RAID-Zuverlässigkeit ist heutzutage kein großes Problem, vorausgesetzt, Sie vermeiden toxische RAID-Level- und Hardware-Kombinationen (z. B. RAID 5 und 6 TB-Festplatten). Darüber hinaus wird die Lese- und Schreibleistung durch Schichten und Caching-Ebenen abstrahiert. Die durchschnittliche Speicherauslastung profitiert normalerweise von der einen oder anderen.

Am Ende scheint es, als ob das Bedürfnis / die Nachfrage einfach nicht da ist.

ewwhite
quelle
1
Es besteht Bedarf in Form einer Array-Replikation. Ich kenne mehrere Standorte, die Multi-Site-DR ausführen, dh RAID 10 oder 5 oder 6, die auf einen Remote-Standort (RAID 10 oder 5 oder 6) repliziert wurden. Nicht zuletzt sind Ihre Prozessoren, Controller, Netzwerke, Stromversorgung, Klimaanlage und Datencenter ab einer bestimmten Zuverlässigkeitsstufe eine größere Bedrohung für Ihre Zuverlässigkeit.
Sobrique
1
Ich glaube nicht, dass das OP auch nur eine Replikation oder Verwendung an mehreren Standorten in Betracht gezogen hat.
ewwhite
1
Nein wahrscheinlich nicht. Wie Sie sagen - es gibt einfach keine Nachfrage, weil es übertrieben ist. Es ist der einzige Anwendungsfall, an den ich denken kann, wo es nicht übertrieben ist :)
Sobrique
Ich habe (kurz) so etwas wie ein RAID 6 + 1 konfiguriert. Ein lokaler Netapp-Syncmirror erstellt eine identische Kopie von sich selbst und multiplext Lesevorgänge über beide Plexes, während er Schreibvorgänge spiegelt. Es wird hauptsächlich für die Migration von Netapp V-Series auf neue Backend-LUNs verwendet. Wenn ich jedoch meine Zuverlässigkeit verdoppeln möchte, könnte ich dies tun.
Basil
12
  • Sie haben eine sinkende Zuverlässigkeit. Es ist ziemlich unwahrscheinlich, dass RAID 6 selbst auf unangenehmen SATA-Laufwerken mit einer UBER-Rate von 1 zu 10 ^ 14 zu einem Compound-Fehler führt. Auf FC / SAS-Laufwerken ist Ihre UBER 1 zu 10 ^ 16 und Sie erhalten auch erheblich mehr Leistung.

  • Die Zuverlässigkeit von RAID-Gruppen schützt Sie nicht vor versehentlichem Löschen. (also brauchst du die backups trotzdem)

  • Ab einem bestimmten RAID-Level ist die Wahrscheinlichkeit eines Verbundfehlers auf Datenträgern geringer als bei einem Verbundfehler der unterstützenden Infrastruktur (Strom, Netzwerk, Leck der Klimaanlage usw.).

  • Strafe schreiben. Jeder eingehende Schreibvorgang auf Ihrem RAID 61 löst 12 E / A-Vorgänge aus (naiv ausgeführt). RAID 6 schmerzt bereits in Szenarien mit geringen Datenmengen (IOPs per TB Random Write). (und in höheren Klassen ist Ihre Ausfallrate sowieso 100x besser)

  • Es ist keine 25% ige Reduzierung, sondern eine weitere 25% ige Reduzierung. Ihre 16 TB werden zu 6 TB. Sie erhalten also 37,5% nutzbaren Speicherplatz. Sie benötigen 3x so viele Festplatten pro Kapazität und 3x so viel Platz im Rechenzentrum. Sie würden wahrscheinlich mehr Zuverlässigkeit erhalten, wenn Sie einfach kleinere RAID6-Sätze erstellen. Ich habe noch keine Zahlen ermittelt, aber ich versuche es - zum Beispiel mit der Summe von RAID 6 in 3x 3 + 2 Sätzen (15 Laufwerke, weniger Speicherplatz als Ihr RAID 10). Oder machen Sie stattdessen 3-Wege-Spiegel.

Trotzdem ist es üblicher, als Sie denken, dies für die DR mit mehreren Standorten zu tun. Ich führe replizierte Speicherarrays aus, bei denen RAID5 / 6 / DP-RAID-Gruppen asynchron oder synchron mit einem DR-Standort verbunden sind. (Synchronisiere nicht, wenn du es möglicherweise vermeiden kannst - es sieht gut aus, es ist tatsächlich schrecklich).

Bei meinen NetApps ist das ein Metrocluster mit einigen gespiegelten Aggregaten. Mit meinen VMAXen haben wir Symmetrix Remote Data Facility (SRDF). Und meine 3PARs kopieren remote.

Es ist teuer, bietet aber ein "Rechenzentrum, das Feuer fängt".

In Bezug auf Triple Mirrors habe ich sie verwendet, jedoch nicht als direkte RAID-Ausfallsicherheitsmaßnahme, sondern als vollständiges Klonen im Rahmen einer Sicherungsstrategie. Synchronisieren Sie einen dritten Spiegel, teilen Sie ihn auf, hängen Sie ihn auf einem separaten Server ein und sichern Sie ihn mithilfe einer völlig anderen Infrastruktur. Und manchmal drehen Sie den dritten Spiegel als Wiederherstellungsoption.

Der Punkt, den ich anstrebe, ist, dass ich in meiner direkten Erfahrung als Speicheradministrator - in einem ~ 40.000-Spindel-Anwesen (ja, wir tauschen täglich zehn Laufwerke aus) - eine Vielzahl von Sicherungen durchführen musste Gründe in den letzten 5 Jahren, aber keiner von ihnen war RAID-Gruppenfehler. Wir diskutieren die relativen Vorzüge und die akzeptable Wiederherstellungszeit, den Wiederherstellungspunkt und die Ausfallzeiten. Und das alles zu untermauern, ist IMMER der Preis für die zusätzliche Belastbarkeit.

Unser Array, das alle Medienbereinigungen und -ausfälle vorhersagt, spart und testet aggressiv Festplatten.

Selbst wenn es eine geeignete RAID-Implementierung gäbe, gäbe es keinen Kosten-Nutzen. Das für den Speicherplatz ausgegebene Geld würde besser in eine längere Aufbewahrung oder einen häufigeren Sicherungszyklus investiert. Oder schnellere Kommunikationen. Oder einfach nur schnellere Spindeln, da selbst bei identischen Rückstellzahlen eine schnellere Wiederherstellung von Ersatzteilen die Wahrscheinlichkeit eines Zusammensetzungsausfalls erhöht.

Ich denke also, ich würde die Antwort auf Ihre Frage anbieten:

Sie sehen RAID 1 + 6 und 1 + 5 nicht sehr oft, da sich der Kostenvorteil einfach nicht aufbaut. Angesichts einer begrenzten Geldsumme und der Notwendigkeit, zunächst eine Backup-Lösung zu implementieren, müssen Sie nur Geld ausgeben, um die Ausfallhäufigkeit zu verringern. Es gibt bessere Möglichkeiten, dieses Geld auszugeben.

Sobrique
quelle
„Die Zuverlässigkeit von RAID-Gruppen schützt Sie nicht vor versehentlichem Löschen. (Sie benötigen die Backups also trotzdem) ”- Ich habe nicht impliziert, dass dies Backups unnötig macht (mir ist klar, dass RAID kein Backup ist ). Eigentlich impliziere ich das Gegenteil, indem ich sage: "Kumulative Wahrscheinlichkeiten des Rückgriffs auf Backups" - ich gehe davon aus, dass Backups Standard sind. Ich stimme diesem Punkt zu, er wird jedoch als Gegenargument zu meiner Argumentation zu RAID 1 + 6 dargestellt, was keinen Sinn ergibt.
James Haigh
"RAID 61" - RAID 6 + 1 wäre ein RAID 1-Array von RAID 6-Arrays. Das ist eine umgekehrte Verschachtelung, und ich denke, sie hätte viel weniger Zuverlässigkeit. Was passiert also, wenn drei Laufwerke im selben geschachtelten RAID 6-Array ausfallen? Muss das gesamte geschachtelte RAID 6-Array nicht neu erstellt werden? Dieselben Laufwerke, die als RAID 1 + 6 verschachtelt sind, würden dieselben 3 Laufwerksfehler aushalten, ohne dass arbeitende Laufwerke offline geschaltet werden.
James Haigh
"Ab einem bestimmten RAID-Level ist die Wahrscheinlichkeit eines Verbundfehlers auf Festplatten geringer als bei einem Verbundfehler der unterstützenden Infrastruktur (Strom, Netzwerk, Leck der Klimaanlage usw.)." "Es ist eine weitere Reduzierung von 25%" - Richtig und wahr, es ist ein Overkill-Nesting-Layout. Aber warum sollte jemand auf einer Erde ein RAID 0-Array mit RAID 1-Tripeln verwenden? Vielen Dank, dass Sie mich an RAID 1 + 0 Triple Mirroring erinnert haben! "Ich habe die Zahlen nicht geknackt"; "Oder machen Sie stattdessen 3-Wege-Spiegel." - Sie sollten wirklich einige Berechnungen durchführen, bevor Sie einen unterstützenden Fall als Gegenbeispiel angeben. Diese Berechnungen sollten untersucht werden…
James Haigh
1
Meine direkte Erfahrung ist dies - ich habe 40.000 Spindeln in meinem Nachlass, in einer Vielzahl von Konfigurationen. Wir haben in den letzten 5 Jahren keine Raid-Gruppe gescheitert. Ich habe Triple Mirrors verwendet, aber nicht aus Gründen der Ausfallsicherheit - sie dienen zum Erstellen von Klonkopien aus Sicherungsgründen. Ich habe Replikate mit mehreren Standorten aus DR-Gründen verwendet, die ich verwendet habe. Keine dieser Replikate wurde jedoch auch für RG-Ausfälle benötigt.
Sobrique,
1
Du verstehst falsch, was Schreibstrafe ist. Für ein einzelnes Überschreiben müssen Sie von Ihren beiden Paritätsgeräten lesen, die Parität berechnen, zwei Paritätsgeräte und Ihren Zielblock zurückschreiben. Also 6 IOs pro 'Schreiben'. Dies ist keine Software- oder Implementierungsbeschränkung. Sie verringern dies teilweise durch ein gutes Schreib-Caching, jedoch nur teilweise.
Sobrique,
3

Moderne und fortschrittliche Systeme implementieren solche Formen nicht, weil sie übermäßig kompliziert, völlig unnötig und im Widerspruch zu jeglichem Anschein von Effizienz sind.

Wie bereits erwähnt, beträgt das Verhältnis von Rohraum zu Nutzraum im Wesentlichen 3: 1. Das sind im Wesentlichen drei Kopien (zwei redundante Kopien). Aufgrund der Berechnungskosten von "raid6" (doppelt so hoch, wenn gespiegelt) und dem daraus resultierenden Verlust von IOPS ist dies sehr ineffizient. In ZFS, das sehr gut entworfen und abgestimmt ist, wäre die äquivalente Lösung in Bezug auf die Kapazität die Erstellung eines Streifens von 3-Wege-Spiegeln.

Anstelle eines Spiegels mit 6-Wege-RAID6 / RAIDZ2-Shapes (insgesamt 12 Laufwerke), der sehr ineffizient wäre (auch kein Mechanismus, den ZFS implementieren kann), würden Sie 4x 3-Wege-Spiegel verwenden (ebenfalls 12) fährt). Und anstelle von 1 Laufwerk im Wert von IOPS würden Sie 4 Laufwerke im Wert von IOPS haben. Gerade bei virtuellen Maschinen ist das ein großer Unterschied. Die Gesamtbandbreite für die beiden Formen mag beim sequentiellen Lesen / Schreiben sehr ähnlich sein, aber der Streifen von 3-Wege-Spiegeln würde beim zufälligen Lesen / Schreiben definitiv reaktionsfähiger sein.

Zusammenfassend lässt sich sagen, dass raid1 + 6 im Allgemeinen unpraktisch, ineffizient und nicht überraschend ist.

So klären Sie die IOPS-Unterschiede: Bei einem Spiegel der Formen raid6 / raidz2 müssen bei jedem Schreibvorgang alle 12 Laufwerke als ein Laufwerk fungieren. Die gesamte Form kann die Aktivität nicht in mehrere Aktionen aufteilen, die mehrere Formen unabhängig voneinander ausführen können. Bei einem Streifen von 3-Wege-Spiegeln kann jeder Schreibvorgang etwas sein, mit dem sich nur einer der 4 Spiegel befassen muss, sodass ein weiterer eingehender Schreibvorgang nicht erst auf die gesamte Omnibus-Form warten muss, bevor weitere Aktionen ausgeführt werden .

Killermist
quelle
2

Da hat es keiner direkt genug gesagt: Raid6 Schreibleistung ist nicht unwesentlich schlechter. Unter Last ist es unbeschreiblich schrecklich.

Sequentielles Schreiben ist in Ordnung, und solange Caching, Zusammenführen von Schreibvorgängen usw. dies verdecken können, sieht es in Ordnung aus. Unter hoher Last sieht es schlecht aus und dies ist der Hauptgrund, warum ein 1 + 5/6-Setup so gut wie nie verwendet wird.

Florian Heigl
quelle
Ich stimme zu, aber das liegt hauptsächlich daran, dass das, was Sie gesagt haben, nur eine super zusammengefasste Version von dem ist, was ich gesagt habe. Und natürlich stimme ich mir selbst zu.
Killermist
1

Such mal

Das Problem ist , dass der Schreib sucht Verstärkung verhält sich sehr unterschiedlich auf die Schreibdurchsatz Verstärkung. Die minimale Verstärkung des Schreibdurchsatzes mit Parität tritt auf, wenn ein ganzer Streifen auf einmal geschrieben wird (nennen wir dieses Adjektiv "Vollstreifen"), die minimale Verstärkung des Schreibsuchlaufs jedoch dann, wenn der gesamte Schreibvorgang nach einem Suchlauf in das virtuelle Gerät passt ein einziger Brocken. Bevor wir ins Detail gehen, sind die Beziehungen in tabellarischer Form viel einfacher zu vermitteln:

RAID | write throughput amplification factor | write seek amplification factor
     | full-stripe (e.g.) | single-chunk     | full-stripe  | single-chunk
   0 | 1           ;  1   | 1           ;  1 | n       ; 12 | 1           ;  1
   1 | n           ; 12   | n           ; 12 | n       ; 12 | n           ; 12
   5 | n/(n - 1)   ; ~1.1 | min [3, n]  ;  3 | n       ; 12 | min [3, n]  ;  3
   6 | n/(n - 2)   ;  1.2 | min [5, n]  ;  5 | n       ; 12 | min [5, n]  ;  5
*1+0 | n₁          ;  3   | n₁          ;  3 | n       ; 12 | n₁          ;  3*
 1+5 | n/(n₅ - 1)  ;  2.4 | expr₁       ;  5 | n       ; 12 | expr₁       ;  5
*1+6 | n/(n₆ - 2)  ;  3   | expr₂       ;  8 | n       ; 12 | expr₂       ;  8*
expr₁ = 2n₁ + min [1, n₅ - 2]
expr₂ = 3n₁ + min [2, n₆ - 3]

Dabei ist n die Gesamtzahl der Laufwerke, n₁ die Anzahl der Laufwerke in den RAID 1-Gruppen und n₅ und n₆ die Anzahl der Gruppen in den RAID 5- bzw. RAID 6-Arrays. Beispiele beziehen sich auf das Beispiel mit 12 Laufwerken in der Frage (relevante Zeilen sind ' *bolded*'); Beispiele für RAID-Level 1 + 0, 1 + 5, 1 + 6 sind 4 × 3, 6 × 2, 6 × 2.

Es ist zu beachten, dass nur der Vollstreifen-Durchsatzverstärkungsfaktor in direktem Zusammenhang mit dem Redundanzanteil steht. Die Single-Chunk-Fälle sind für diejenigen mit Parität komplizierter. Sie entstehen, weil das Schreiben eines einzelnen Blocks das Lesen des jeweils einfachsten Paritätsblocks oder der anderen Datenblöcke erfordert, bevor die Paritätsblöcke zusammen mit dem neuen Datenblock geschrieben werden. (Sie sind nicht direkt multiplikativ, da die induzierten Lesevorgänge stattdessen mit dem jeweiligen Lesedurchsatz- / Suchverstärkungsfaktor für RAID 1 multipliziert werden müssen, wobei beide 1 sind; siehe unten.)

Leider hat die Auswahl einer Blockgröße, die diese zusätzliche Verstärkung des Schreibdurchsatzes minimiert, den Nebeneffekt, dass sie tatsächlich maximiert wirddie Schreibsuchverstärkung. Bei winzigen Schreibvorgängen mit einer im Vergleich zur Suchzeit vernachlässigbaren Schreibzeit beträgt die Schreibleistung von Striping mit einer sehr kleinen Blockgröße (Vollstreifen) nur 1 ×, wie bei Spiegelung, da alle Laufwerke gesucht werden müssen Die Blöcke für jeden Schreibvorgang und der durch die Mobilisierung all dieser Laufwerke erzielte Durchsatz sind irrelevant. Es hat das Verhältnis von Schreibzeit zu Suchzeit durch die Anzahl der Laufwerke im Array geteilt, aber für winzige Schreibvorgänge war dies bereits vernachlässigbar. Es würde keinen Sinn machen, einen so kleinen Block zu verwenden, dass selbst winzige Schriften gestreift sind. Für Schriften, die klein genug sind, um die Auswirkungen des Suchens zu spüren, ist es am besten, wenn sie in einen einzelnen Block passen.

RAID | large contiguous write throughput    | concurrent tiny writes throughput
     | full-stripe    | single-chunk        | full-stripe | single-chunk
   0 | n×       ; 12× | n×          ; 12×   | 1×     ; 1× | n×          ; 12×
   1 | 1×       ;  1× | 1×          ;  1×   | 1×     ; 1× | 1×          ;  1×
   5 | (n - 1)× ; 11× | max[n/3, 1]×;  4×   | 1×     ; 1× | max[n/3, 1]×;  4×
   6 | (n - 2)× ; 10× | max[n/5, 1]×;  2.4× | 1×     ; 1× | max[n/5, 1]×;  2.4×
*1+0 | n₀×      ;  4× | n₀×         ;  4×   | 1×     ; 1× | n₀×         ;  4×  *
 1+5 | (n₅ - 1)×;  5× | expr₃×      ;  2.4× | 1×     ; 1× | expr₃×      ;  2.4×
*1+6 | (n₆ - 2)×;  4× | expr₄×      ;  1.5× | 1×     ; 1× | expr₄×      ;  1.5×*
expr₃ = n/(2n₁ + min [1, n₅ - 2]) = max [n/(2n₁ + 1), n/(2n₁ + n₅ - 2)]
expr₄ = n/(3n₁ + min [2, n₆ - 3]) = max [n/(3n₁ + 2), n/(3n₁ + n₆ - 3)]

Hinweis: Die mittleren 2 Durchsatzspalten können ignoriert werden, wenn eine sinnvolle Blockgröße vorliegt, die größer ist als die Schreibvorgänge, für die die Suchzeit von Bedeutung ist, jedoch klein genug, sodass große Schreibvorgänge über den gesamten Streifen ausgeführt werden. Die große Blockgröße der 2. Durchsatzspalte ist eher mit übergreifenden Laufwerken vergleichbar. Bei einem "winzigen" Schreibvorgang ist die Auswirkung des Durchsatzes vernachlässigbar.

Eine unangemessen kleine Blockgröße erhöht auch den Effekt der Suchverstärkung für Lesevorgänge, wenn auch nicht so stark und nur im Vollstreifenfall.

RAID | read throughput amplification factor | read seek amplification factor
     | full-stripe      | single-chunk      | full-stripe (e.g.) | single-chunk
   0 | 1                | 1                 | n      to n;    12 | 1
   1 | 1                | 1                 | 1      to n;  1–12 | 1
   5 | 1                | 1                 | n - 1  to n; 11–12 | 1
   6 | 1                | 1                 | n - 2  to n; 10–12 | 1
*1+0 | 1                | 1                 | n₀     to n;  4–12 | 1           *
 1+5 | 1                | 1                 | n₅ - 1 to n;  5–12 | 1
*1+6 | 1                | 1                 | n₆ - 2 to n;  4–12 | 1           *

Hinweis: Das 'to n' ist darauf zurückzuführen, dass theoretisch alle Laufwerke mobilisiert werden können, wenn nur ein Lesevorgang gleichzeitig stattfindet, um nach geeigneten Stellen zu suchen und die Daten gemeinsam zu lesen, um einen maximalen zusammenhängenden Lesedurchsatz zu erzielen.

RAID | large contiguous read throughput | concurrent tiny reads throughput
     | full-stripe (e.g.)| single-chunk | full-stripe         | single-chunk
   0 | n×          ; 12× | n×     ; 12× | 1×          ;  1×   | n×     ; 12×
   1 | n×          ; 12× | n×     ; 12× | n×          ; 12×   | n×     ; 12×
   5 | n×          ; 12× | n×     ; 12× | n/(n - 1)×  ; ~1.1× | n×     ; 12×
   6 | n×          ; 12× | n×     ; 12× | n/(n - 2)×  ;  1.2× | n×     ; 12×
*1+0 | n×          ; 12× | n×     ; 12× | n₁×         ;  3×   | n×     ; 12×*
 1+5 | n×          ; 12× | n×     ; 12× | n/(n₅ - 1)× ;  2.4× | n×     ; 12×
*1+6 | n×          ; 12× | n×     ; 12× | n/(n₆ - 2)× ;  3×   | n×     ; 12×*

Hinweis: Auch hier können die mittleren 2 Durchsatzspalten bei einer vernünftigen Blockgröße ignoriert werden. Die 3. Durchsatzspalte ist wiederum eng mit dem Redundanzanteil verbunden.

Eine ausreichend große Blockgröße bedeutet jedoch, dass winzige Lesevorgänge niemals vollständig sind. Bei einer effizienten Implementierung und einer angemessenen Blockgröße sollte die Leseleistung proportional zur Anzahl identischer Laufwerke sein, wenn sie nicht beeinträchtigt wird.

Tatsächlich ist der Verstärkungsfaktor viel komplizierter als die Formel in der Frage, in der nur die Vollstreifendurchsatzverstärkung berücksichtigt wurde. Insbesondere ist die Schreibleistung von 6 × 2 RAID 1 + 6 für gleichzeitige Schreibvorgänge, die klein genug sind, um suchgebunden zu werden, schlechter als die von 4 × 3 RAID 1 + 0. Und für winzige Schreibvorgänge, bei denen es sich ausschließlich um Suchvorgänge handelt, kann die Leistung im besten Fall nur etwa ein Drittel der Leistung von 4 × 3 RAID 1 + 0 betragen (dh bei perfekter Implementierung).

Nachdem dieses Problem behoben wurde, hat der Vergleich mit 12 Laufwerken keinen eindeutigen Gewinner:

                                  | 4×3 RAID 1+0 | 6×2 RAID 1+6
   number of identical 1TB drives | 12           | 12
                 storage capacity | 4TB          | 4TB
            redundancy proportion | 2/3          | 2/3
large contiguous write throughput | 4×           | 4×
 large contiguous read throughput | 12×          | 12×
concurrent tiny writes throughput |*4×           | 1.5×
 concurrent tiny reads throughput | 12×          | 12×
safe number of random drive loses | 2            |*5
    12 - 1 large write throughput | 4×           | 4×
     12 - 1 large read throughput | 8×           |*11×
    12 - 1 tiny writes throughput |*4×           | ~1.42×
     12 - 1 tiny reads throughput | 8×           |*~9.33×
  can split-off a copy for backup | yes[1]       | yes[1]
                  2-site failover | yes          | yes
    2-copy large write throughput | 4×           | 4×
     2-copy large read throughput |*8×           | 6×
    2-copy tiny writes throughput |*4×           | ~1.28×
     2-copy tiny reads throughput |*8×           | 6×
   2-copy safe random drive loses | 1            |*2
2-copy - 1 large write throughput | 4×           | 4×
 2-copy - 1 large read throughput | 4×           |*5× or 6×[2]
2-copy - 1 tiny writes throughput |*4×           | ~1.46× or 1.2×[2]
 2-copy - 1 tiny reads throughput | 4×           |*3.6x or 6×[2]
can be divided into 3 full copies | yes          | yes
                  3-site failover | yes          | yes
    1-copy large write throughput | 4×           | 4×
     1-copy large read throughput | 4×           | 4×
    1-copy tiny writes throughput |*4×           | ~0.85×
     1-copy tiny reads throughput |*4×           | 2×
   1-copy safe random drive loses | 0            | 0
                       complexity |*simple       | more complex

Hinweis 1: Eine vollständige Kopie der gespeicherten Daten ist jeweils ein RAID 0-Vierfach- oder ein 4/6 herabgesetztes RAID 6-Array. Hinweis 2: Es besteht die Möglichkeit, dass der Laufwerksfehler eines der 4 beeinträchtigten RAID 1-Paare beeinträchtigt oder eines der 2 normalen Paare beeinträchtigt.

Trotzdem hätte es die doppelte Leseleistung eines RAID 6-Arrays mit 6 Laufwerken und der winzige Schreibdurchsatz sollte 25% besser sein (1,5 / 1,2), da die erforderlichen Lesevorgänge zwischen den RAID 1-Paaren aufgeteilt werden und RAID 6 dies offensichtlich tut Bei Anwendungen mit hoher Verfügbarkeit, bei denen größere Schreibvorgänge ausgeführt werden oder bei denen die Leseleistung wichtiger ist als die Schreibleistung, gibt es möglicherweise eine Nische für RAID 1 + 6. Aber das ist nicht alles…

Komplexität

Dies ist bislang nur theoretisch (meistens kombinatorisch ). In der Praxis kann die Komplexität dazu führen, dass Implementierungen von RAID 1 + 6 Mängel aufweisen, die Chancen verpassen und die theoretischen Ergebnisse nicht erreichen. RAID 6 ist bereits komplexer, und die Verschachtelung erhöht die Komplexität zusätzlich.

Zum Beispiel ist es nicht sofort offensichtlich, dass 6 × 2 RAID 1 + 6 als 3 unabhängige virtuelle Leseköpfe abstrahiert werden kann, die gleichzeitig 3 zusammenhängende große Lesevorgänge mit jeweils 4 × Durchsatz lesen können, genau wie 4 × 3 RAID 1 + 0. Das einfache Verschachteln von 6 RAID 1-Paaren in ein RAID 6-Array mithilfe eines Software-RAID ist möglicherweise nicht so elegant. Die Implementierung könnte dumm und verrückt sein (ich habe diese Hypothese jedoch noch nicht getestet).

Die Komplexität führt auch zu erhöhten Entwicklungskosten für Implementierungen und Werkzeuge. Auch wenn es Anwendungen gibt, die von einer solchen Verschachtelung profitieren könnten, sind die Verbesserungen die Entwicklungskosten möglicherweise nicht wert.

James Haigh
quelle
Bitte geben Sie Ihre Quelle für diese Informationen an. Ein praktischer Test mit großen oder kleinen Schriften entspricht nicht der von Ihnen vorgeschlagenen Leistung.
James Ryan
@JamesRyan: Dies sind keine Informationen aus zweiter Hand. Die theoretischen Ergebnisse leiten sich aus den Grundlagen der Funktionsweise von Standard-RAID-Levels ab. Alles, was für die Theorie benötigt wird, ist ein Verständnis der Funktionsweise von RAID und ein Verständnis der Logik und der mathematischen Ableitung. Wenn diese Berechnungen von jemand anderem durchgeführt würden, würde ich dies natürlich angeben und Links zur Referenz bereitstellen, wenn dies möglich ist. Beachten Sie, dass es viele Möglichkeiten gibt, wie eine praktische RAID 1 + 6-Implementierung suboptimal sein kann, aber die verschiedenen Implementierungen variieren. Ich würde gerne wissen, warum Ihr Praxistest nicht stimmt.
James Haigh
@JamesRyan: Könnten Sie uns bitte näher erläutern, welche Implementierung Sie verwendet haben, welche Laufwerke Sie verwendet haben, in welchen Konfigurationen, mit welchen Benchmarking-Methoden? Haben Sie sowohl ein RAID 6-Array mit 6 RAID 1-Paaren als auch ein RAID 0-Array mit 4 RAID 1-Tripeln mit den gleichen 12 Laufwerken und der gleichen Blockgröße getestet? War es ein Software-RAID?
James Haigh
Da Sie eine ungeprüfte Theorie vorschlagen, die sich konventioneller Weisheit entzieht, warum beschreiben Sie Ihr Setup nicht genau, wo Sie gezeigt haben, dass es funktioniert? Ich würde vermuten, dass, da sich Ihre Mathematik von jeder anderen Quelle zu diesem Thema sowie von Tests in der realen Welt unterscheidet, der Grund, warum es nicht funktioniert, darin liegt, dass Ihre Mathematik falsch ist.
James Ryan