Ich bin dabei, ein altes Hardware-RAID5-Array durch ein Linux-Software-RAID1-Array zu ersetzen. Ich sprach mit einem Freund und er behauptete, RAID5 sei robuster als RAID1.
Seine Behauptung war, dass mit RAID5 beim Lesen die Paritätsdaten gelesen wurden, um sicherzustellen, dass alle Laufwerke die richtigen Daten zurückgaben. Er behauptete weiter, dass bei RAID1 auftretende Fehler auf einem Laufwerk unbemerkt bleiben, da bei RAID1 keine solche Überprüfung durchgeführt wird.
Ich kann sehen , wie dies könnte wahr sein, kann aber auch sehen , dass es hängt alles davon ab , wie die RAID - Systeme in Frage umgesetzt werden. Sicherlich ein RAID5 - System nicht hat , um die Paritätsdaten auf einem Lese- und ein RAID1 - System zu lesen und überprüfen könnte genauso gut von allen Laufwerken auf Lese lesen sie zu überprüfen waren alle die gleichen Daten halten und damit das gleiche Maß an Robustheit erreichen ( mit entsprechendem Leistungsverlust).
Die Frage ist also, was RAID5 / RAID1-Systeme in der realen Welt tatsächlich tun. Prüfen RAID5-Systeme die Paritätsdaten beim Lesen? Gibt es RAID1-Systeme, die von allen Laufwerken lesen und die Daten beim Lesen vergleichen?
quelle
Bei RAID-5 wird die Parität im Allgemeinen nur beim Neuaufbau des Arrays gelesen, nicht beim allgemeinen Lesen. Dies ist so, dass die Lesevorgänge zufälliger und schneller sein können (da Sie nicht jedes Mal, wenn Sie 1 KB Daten aus dem Array benötigen, die Parität für einen gesamten Streifen lesen und berechnen müssen).
Bei RAID-1 werden Lesevorgänge in der Regel über mehrere Laufwerke hinweg ausgeführt, um eine höhere Leseleistung zu erzielen. Wenn das RAID-Subsystem versucht, beide Laufwerke zu lesen und sie sich unterscheiden, kann das Subsystem, wie Sie bereits bemerkt haben, nicht erkennen, welches Laufwerk falsch war.
Die meisten RAID-Subsysteme sind von der Festplatte abhängig, um den Controller oder Computer zu informieren, wenn ein Fehler auftritt.
Ist RAID-5 also "robuster"? Die Antwort ist, es kommt darauf an. Mit RAID-5 können Sie eine bestimmte Anzahl von Festplatten effektiver speichern als mit RAID-1. Obwohl RAID-1 mit RAID-0 kombiniert werden muss, um mehr als eine Festplatte effektiv zu speichern, entweder als RAID-1-Array-Streifen oder als RAID-1-Streifen über zwei RAID-0-Streifen.
(Ich bevorzuge die erstere, da bei einem Ausfall eines einzelnen Laufwerks ein einzelnes RAID-1-Element entfernt wird, was bedeutet, dass nur ein einzelnes Laufwerk neu erstellt werden muss Festplatten werden beim Austausch des Laufwerks neu erstellt.)
Dies führt auch zu Diskussionen über "Phantomschreibvorgänge", bei denen ein Schreibvorgang von der Laufwerkselektronik als erfolgreich gemeldet wird, der Schreibvorgang es jedoch aus irgendeinem Grund niemals auf die Festplatte schafft. Das passiert doch. Beachten Sie, dass bei einem RAID-5-Array bei einem Laufwerksausfall das Array ALLE Sektoren auf ALLEN überlebenden Laufwerken PERFEKT lesen MUSS, um eine Wiederherstellung durchzuführen. NetApp behauptet, dass die große Größe der Laufwerke und die große Größe der RAID-Gruppen dazu führen, dass in einigen Fällen die Wahrscheinlichkeit eines Ausfalls während einer Neuerstellung so schlecht ist wie einer von zehn. Daher empfehlen sie, dass große Festplatten in großen RAID-Gruppen Dual-Parity verwenden (was meiner Meinung nach mit RAID-6 zusammenhängt).
Das habe ich bei einer technischen Diskussion von NetApp durch einige ihrer Ingenieure erfahren.
quelle
Keine gängige RAID-Implementierung überprüft normalerweise die Parität beim Datenzugriff. Ich habe noch nie einen gesehen. Einige RAID5-Implementierungen lesen Paritätsdaten für Streaming-Lesevorgänge, um unnötiges Suchen zu verhindern (billiger, wenn Sie jeden n-ten Block wegwerfen, als wenn Sie das Laufwerk veranlassen, jeden n-ten Block zu durchsuchen). RAID1-Implementierungen können die Leistung nicht überprüfen, da sie von beiden Festplatten lesen (in der überwiegenden Mehrheit der RAID1-Implementierungen. Eine Handvoll davon können Sie auswählen, was nützlich sein kann, wenn eine Festplatte viel langsamer als die andere ist und nicht schreibintensiv Belastung.)
Einige überprüfen mit einem Hintergrund "Schrubben". In diesem Fall gewinnt RAID6, da es die Daten wiederherstellen kann, und RAID5 und RAID1 befinden sich in derselben Situation, die Sie identifizieren, aber nicht beheben können. (Dies ist nicht unbedingt der Fall, da das Laufwerk einen fehlerhaften CRC erkennen, einen Fehler zurückgeben und Sie den Block aus der Parität heraus neu schreiben können. Dies passiert ziemlich häufig.)
Wenn Sie Datenintegrität wünschen, speichern Sie einen Hash mit jedem Block (oder Datensatz, oder wie auch immer er aufgeteilt ist) auf der Anwendungsebene. Sybase und Oracle tun dies (ich glaube auf Seitenebene) und ich habe es schon oft gesehen, als eine gigantische Datenbank gespeichert wurde. (z. B. der Controller beginnt, fehlerhafte Daten zurückzugeben, Sybase stürzt mit einem eindeutigen Fehler ab, daher wurden keine Schreibvorgänge ausgeführt, als die Datenbank auf einer fehlerhaften Hardware mit inkonsistentem Status ausgeführt wurde.)
Die einzige Dateisystemlösung und die einzige RAID-Lösung, die dies für Sie erledigt, ist ZFS.
quelle
Spricht Ihr Freund über das Paritätsbit, das an einigen RAID-Levels beteiligt ist , oder über die Prüfsumme der auf die Festplatte geschriebenen Daten?
Wenn es um Parität geht, hat RAID1 kein Paritätsbit - Sie haben zwei Kopien derselben Daten. Es sollte eine von der Festplatte durchgeführte Prüfsumme vorhanden sein, um sicherzustellen, dass das, was auf die Festplatte geschrieben wurde, mit dem übereinstimmt, was über die Leitung übertragen wurde
RAID5 hat ein Paritätsbit. Dies bedeutet, dass Sie eine Festplatte in Ihrem RAID-Set verlieren und so weitermachen können, als wäre nichts passiert. Trotzdem sollte eine Prüfsumme der auf die Festplatte geschriebenen Daten erstellt werden, um sicherzustellen, dass sie mit den Daten übereinstimmen, die über die Leitung übertragen wurden
In diesem Fall sind die Prüfsummen völlig unabhängig von RAID, das mit einer Reihe von Festplatten durchgeführt werden kann oder nicht
Bearbeitet, um hinzuzufügen: Sie erwähnten den Wechsel von Hardware-RAID zu Software-RAID. Die Präferenz ist immer Hardware-RAID gegenüber Software-RAID. Wenn Sie die Hardware erwerben können, die für den RAID-Level erforderlich ist, den Sie implementieren möchten, sollten Sie sich dafür entscheiden. Dadurch können alle Paritätsberechnungen von der RAID-Karte und nicht vom Host ausgeführt werden. Dadurch werden Ressourcen auf dem Host freigegeben. Es gibt keine Zweifel, andere Vorteile, aber sie entgehen mir im Moment
quelle
Dies hängt von der Art der RAID-Implementierung (hw / sw), den Festplatten, dem RAID-Controller (falls vorhanden) und dessen Funktionen ab.
es macht ein wenig Sinn, aber nicht wirklich :) was passiert ist - wenn falsche Daten geschrieben werden, werden sie auf einem Spiegel an beide Laufwerke gesendet, und bei RAID5 wird die Parität dafür erzeugt und auf die Laufwerke verteilt. Die Lese- / Schreibprüfung der Daten wird von der Festplatten- und Controller-Firmware durchgeführt und hat nichts mit RAID-Levels zu tun.
Wie gesagt, die Überprüfungen sind nicht Teil des Raid-Algorithmus, obwohl bei einigen Controllern möglicherweise etwas anderes implementiert ist.
Die Robustheit des Arrays hängt von der Qualität der Laufwerke ab (2,5-Zoll-Laufwerke leben aufgrund der verringerten RV-Raten in der Regel länger als 3,5-Zoll; meiner Erfahrung nach kaufen Sie NIEMALS maxtor SCSI / SAS-Laufwerke - sie haben schreckliche Firmware-Probleme) (Temperatur- und Feuchtigkeitsregelung), der Controller selbst (Hat er eine BBU? Ist die Firmware auf dem neuesten Stand? Ist es ein echter Überfall oder eine Fälschung?), die Anzahl der Netzteile im Server, die USV-Qualität usw.
quelle
Ich weiß nicht wissen dies, aber es scheint mir unwahrscheinlich , dass es funktioniert. Denken Sie daran, dass zur Berechnung der Parität der Block von allen Laufwerken in Ihrem RAID-Set gelesen und anschließend die Richtigkeit berechnet werden muss. Andernfalls wird nur ein Laufwerk ausgelesen.
Wenn Ihr Lesevorgang weniger als einen Block umfasst, muss er bei einem Paritätsprüfungslesevorgang auf einen vollständigen Block erweitert werden, bei einem regulären Lesevorgang hingegen nicht. (Angenommen natürlich, der RAID-Block ist größer als die Blöcke der Festplatten. Ich denke, dass Lesevorgänge von der Festplatte aus vollen Blöcken bestehen müssen. Wenn nicht, ist mein Standpunkt sogar noch mehr gültig.)
Aus meiner Sicht könnte es das tun, aber wenn es das tun würde, wäre es ineffizient, und ich bezweifle, dass alle auf diese Weise implementiert werden.
Auch hier habe ich jedoch keine persönlichen Kenntnisse über die tatsächlichen Implementierungen.
quelle
Das ergibt doch keinen Sinn. Was tun Sie, wenn Sie eine Paritätsinkongruenz feststellen? (Woher weißt du, welcher Block falsch ist?)
Für zufällige Lesevorgänge wäre die Überprüfung der Parität teuer. Normalerweise können Sie einen zufälligen Lesevorgang durchführen, indem Sie sich nur eine einzelne Festplatte ansehen. Wenn Sie jedoch die Parität überprüfen möchten, müssen Sie bei jedem Lesevorgang alle Festplatten lesen. (Das könnte immer noch Sinn machen, wenn Sie irgendetwas dagegen tun könnten!)
Beachten Sie, dass RAID-1 auch dieses Problem hat - was sinnvoll ist, wenn Sie RAID-1 als RAID-5 mit zwei Festplatten betrachten.
quelle
Ich habe ein wenig über die Behauptung nachgedacht, dass RAID-1 beim Lesen schneller sein sollte als RAID-5, da es auf beiden Laufwerken gleichzeitig liest.
Nun, da die Parität auf RAID-5 nur gelesen wird, wenn für das Array eine Neuerstellung erforderlich ist, entspricht sie hinsichtlich des Lesens tatsächlich einem RAID-0-Array. Stimmt das?
RAID-0 wird allgemein als die schnellste Stufe angesehen (obwohl es "AID" heißen sollte, da es überhaupt keine Redundanz gibt). :-D
Apropos Linux-Software-RAID, ein einfacher Test mit hdparm bestätigt diese Theorie: Meine RAID-5-Arrays weisen immer eine höhere Lesegeschwindigkeit auf als meine RAID-1-Arrays.
ABER: Ein herabgesetztes Array arbeitet anscheinend viel langsamer als ein normal laufendes Array! Ich habe dies gerade mit Fedora 9 getestet, das auf 4 WD 1 TB-Laufwerken mit verschiedenen RAID-Levels ausgeführt wird. Hier sind die Ergebnisse:
Herabgesetztes RAID-5: Lesegeschwindigkeit 43 MB / Sek. Normales RAID-5: Lesegeschwindigkeit 240 MB / Sek. (!) RAID-1: Lesegeschwindigkeit 88 MB / Sek
Da der zulässige Festplattenverlust bei RAID-1 und RAID-5 (und zwar bei einem) gleich ist, sollte RAID-5 in jeder Hinsicht die Leistung von RAID-1 übertreffen und mehr Kapazität in Bezug auf die Anzahl der im Array und im selben Array verwendeten Festplatten bieten Fehlertoleranz. Dies führt zu der Schlussfolgerung, dass RAID-6 jeden anderen RAID-Level übertrifft, da es beim normalen Lesen so schnell ist wie RAID-0 (keine Paritätslesung von den beiden Paritätsfestplatten) und im Falle des Verlusts von noch immer fehlertolerant ist Array-Mitglied. ;-)
quelle
Persönlich denke ich, dass der ultimative Test eines RAID-Systems darin besteht, wie gut es einem Ausfall standhält. In diesem Fall können sowohl RAID5 als auch RAID1 Ausfälle einzelner Laufwerke behandeln, aber keines überlebt mehr als das.
Bezüglich Ihrer Frage zum Paritätsbit würde ich denken, dass es von den RAID-Treibern abhängt. Es wird definitiv während der Rekonstruktion gelesen, aber bei normaler Verwendung wäre dies nicht sinnvoll, da Bandbreite verschwendet würde.
quelle
afaik, ich bin kein 24/7-Speicherprofi, der Controller überprüft immer, was auf die Festplatten geschrieben und von diesen gelesen wird. dh mit raid1 haben Sie etwas schlechtere Schreibvorgänge als auf einer einzelnen Festplatte, aber Ihre Lesevorgänge sind etwas schneller (muss eine Datei auf zwei Festplatten schreiben, kann jedoch einen Teil von Festplatte 1 und den anderen Teil von Festplatte 2 lesen).
Möglicherweise können Sie die Datenüberprüfung für eine RAID-Stufe deaktivieren, aber was ist der Sinn davon? Alle RAID-Stufen (außer 0) sind dazu da, Ihnen Datenredundanz zu geben, also warum behindern Sie sich.
Mit RAID 5 benötigen Sie mindestens 3 Festplatten und können N-1-Festplatten für Daten verwenden. Mit RAID 1 benötigen Sie immer eine gerade Anzahl von Festplatten und können N / 2 Festplatten für Daten verwenden.
In größeren Schlachtzügen bietet Stufe 5 mehr Speicherplatz, während Stufe 1 mehr Redundanz bietet.
Wenn mit robuster gemeint ist, was mehr Redundanz bietet, dann ist es RAID 1.
Abhängig von der RAID-Größe müssen Sie auch die Wiederherstellungszeiten im Fehlerfall berücksichtigen (wie viele Festplatten sind vorhanden, wie groß ist eine Festplatte, welche Art von RAID (Soft-, Fake-, Hardware-), welche Stufe usw.). )
Man kann also nicht wirklich sagen, dass ein Raid robuster ist als ein anderer (vielleicht ist Raid 6 immer robuster als Raid 5, wenn Sie Speicherplatz verlieren).
quelle