Wie kann RAID mit inkonsistenten Daten umgehen?


8

RAID 1 und RAID 5 (und ihre Brüder 10 und 50) erreichen Datenredundanz durch Spiegelung und durch Paritätsprüfung. Auf diese Weise kann ein RAID-Array weiterhin auf Daten zugreifen, wenn ein Sektor auf einer Festplatte (oder einer ganzen Festplatte) nicht mehr lesbar ist. RAID 6 (oder 60) verwendet eine zusätzliche Prüfung, um doppelte Fehler zu berücksichtigen.

Aber wie kann ein RAID-Array mit Daten umgehen, die nicht völlig unlesbar, sondern einfach inkonsistent sind?

Wenn ein Fehler auftritt, bei dem z. B. Daten auf einem Streifen auf einer Festplatte geändert werden, die Änderung jedoch nicht auf die anderen übertragen wird, wird der gesamte Streifen inkonsistent. Wenn in einem gespiegelten Satz eine Festplatte "Dieses Bit ist 0" anzeigt, während die andere Festplatte "Dieses Bit ist 1" anzeigt, wie kann ein RAID-Controller wissen, welches richtig ist? Die gleiche Überlegung könnte auf einen RAID-5-Stripe angewendet werden, mit der zusätzlichen Komplexität, dass Sie nicht leicht erkennen können, welcher Sektor im Stripe tatsächlich falsch ist. Mindert RAID 6 dieses Problem mit seinen doppelten Ckecks oder kann es immer noch Probleme bei der Wiederherstellung nach Datenbeschädigung geben, wenn Daten tatsächlich lesbar sind, aber irgendwo falsch sind, insbesondere da RAID 6-Arrays in der Regel viele Festplatten haben?

Dies könnte theoretisch durch Prüfsummen gelöst werden, um sicherzustellen, welche Kopie der Daten (oder Parität) die richtige ist. Aber implementiert ein RAID-Controller tatsächlich diese Art von Prüfsumme (was natürlich zusätzlichen Platz beanspruchen würde)? Oder muss es auf Betriebssystemebene gehandhabt werden, wo die meisten Dateisysteme ihren Inhalt überprüfen können und werden? Und wenn dies der Fall ist, wie können sie dem RAID-Controller mitteilen, dass "Daten auf Sektor X auf Festplatte Y auf Streifen Z falsch sind", wenn der allgemeine Ansatz eines RAID-Controllers darin besteht, das Betriebssystem so weit wie möglich von der zugrunde liegenden Speicherschicht zu abstrahieren möglich?


Dafür dient das "Patrol Read" oder eine Hintergrundkonsistenzprüfung.
ewwhite

2
Dies ist nützlich, um fehlerhafte Blöcke frühzeitig zu erkennen und Daten an einen anderen Ort zu verschieben, bevor ein tatsächlicher Fehler auftritt. Es muss sich aber immer noch mit lesbaren, aber inkonsistenten Daten befassen . Nehmen Sie mein RAID-1-Beispiel: Wenn ein Block auf einer Festplatte lesbar ist und "0" sagt, während derselbe Block auf der anderen Festplatte ebenfalls lesbar ist und "1" sagt, wie kann der Controller dann wissen, welcher richtig ist?
Massimo

Da RAID 1 keine Parität bietet, wird es dem System sehr schwer fallen, das Problem zu erkennen und zu beheben. Sie müssten wahrscheinlich die Laufwerke ziehen und einzeln lesen, um die beschädigte Datei zu erhalten.
Brian D.

Einfache Lösung - verwenden Sie ZFS
Patrick

Antworten:


3
RAID VOLUMES WITH PARITY STRIPE

Auf den von uns verwendeten Areca-Controllern (und allen modernen Hardware-RAID-Controllern) kann der Controller während einer Konsistenzprüfung feststellen, ob die Paritätsdaten, die physischen Daten auf der Festplatte oder beides beschädigt sind. Die meisten Controller erreichen dies mit einfachen Prüfsummenbits für die Paritätsdaten und die Daten auf der Festplatte.

Wenn die Paritätsdaten beschädigt sind, bemerkt der Controller das Problem, wenn Sie eine Konsistenzprüfung durchführen und die physische Festplatte erneut auf die richtigen Bits lesen und den Paritätsstreifen neu schreiben. Benutzer sehen keine Probleme, da sie beim Öffnen der Dateien Daten auf der Festplatte lesen. Durch erneutes Speichern von Elementen, die dazu führen, dass der beschädigte Paritätsstreifen neu geschrieben wird, wird das Problem ebenfalls behoben.

Wenn das Gegenteil der Fall ist und Ihre tatsächlichen Daten auf der Festplatte ein wenig umgedreht werden, überprüft Ihr Controller den Paritätsstreifen während einer Konsistenzprüfung, um festzustellen, ob er sich geändert hat. In diesem Fall überschreibt der Controller die Daten auf der Festplatte so, dass sie mit den Paritätsdaten übereinstimmen, von denen er bestätigen kann, dass sie unverändert / gut sind. Benutzer erhalten einen CRC-Fehler oder eine beschädigte Datei, je nachdem, um welche Daten es sich handelt, bis eine Konsistenzprüfung ausgeführt und der Fehler behoben wird.

Da Paritätsdaten für bestimmte Daten auf der Festplatte niemals auf demselben Laufwerk wie die tatsächlichen Daten gespeichert werden, sollte ein Ausfall eines einzelnen Laufwerks keine Datenbeschädigungsprobleme verursachen. Oder zwei Festplatten für RAID6 usw.

Konsistenzprüfungen halten Ihre Daten so genau wie möglich. Wenn Sie beschädigte Daten lange genug auf Ihrem Volume ablegen, werden sie möglicherweise in Paritätsdaten geschrieben. Dies bedeutet, dass die Datei endgültig beschädigt ist und aus einer Sicherung wiederhergestellt werden muss. Wenn sich ein Laufwerk in einem Zustand vor dem Ausfall befindet, in dem bei Konsistenzprüfungen Fehler angezeigt werden, ersetzen Sie das Laufwerk sofort, anstatt darauf zu warten, dass der Controller es als fehlerhaft markiert. Wir führen täglich Konsistenzprüfungen bei kleineren Volumina und wöchentlich bei größeren Volumina durch.

RAID VOLUMES WITHOUT PARITY STRIPE (EX. RAID1)

Der Festplattencontroller / die Firmware kann das Problem möglicherweise beheben. Wenn dies nicht möglich ist, kann der RAID-Controller das Problem nur schwer beheben. In diesem Fall müssten Sie die Laufwerke wahrscheinlich einzeln lesen, um die Daten wiederherzustellen.

GENERALLY SPEAKING

Führen Sie Konsistenzprüfungen in dem von Ihrer RAID-Karten-Hersteller empfohlenen Intervall durch. Wenn Sie wirklich über Korruption besorgt sind, können Sie auch ein stabiles Dateisystem über ein RAID-Volume stapeln. Moderne ausfallsichere Dateisysteme können viele dieser Datenintegritätsprobleme beheben, und das Stapeln eines ausfallsicheren FS über RAID6 bietet Ihnen eine hervorragende Datenverfügbarkeit ohne Beschädigung. Und selbst bei zwei gleichzeitigen Laufwerksfehlern stehen FS-Paritätsdaten zur Verfügung, um zu vermeiden, dass dem Benutzer beschädigte Daten angezeigt werden.


2

Sie beschreiben effektiv die Situation, in der eine Festplatte einen Fehler schreibt (oder liest). Der RAID-Controller bietet keine praktische Möglichkeit (z. B. Schreiben und Zurücklesen würde Ihre Leistung beeinträchtigen), um sich vor dieser Situation zu schützen. Es muss darauf angewiesen sein, dass die Festplatten diese Art von Fehler erkennen und entweder einen anderen Block verwenden oder das Volume verlassen können, was zu einer Verschlechterung des RAID führt.

Wenn Sie an die Situation mit einer einzelnen Festplatte denken, ist der einzige Schutz vor inkonsistenten Schreibvorgängen (oder Lesevorgängen) die Festplatte selbst. RAID baut darauf auf, führt jedoch keinen zusätzlichen Schutz ein.

NB Ich weiß aus Erfahrung, dass XFS sehr vernünftig auf fehlerhafte Festplatten in einem Array reagiert. Zumindest meine Nicht-Low-End-Controller und das Betriebssystem haben diese Inkonsistenz erkannt, aber nicht geschützt (eine als fehlerhaft bekannte Festplatte wurde einem Volume mit Nachdruck hinzugefügt).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.