Wenn bei einem RAID5-System während der Wiederherstellung eine URE auftritt, gehen alle Daten verloren?

23

Ich verstehe das Argument bezüglich der erhöhten Wahrscheinlichkeit, dass bei größeren Laufwerken während einer Wiederherstellung eine URE auftritt. Ich bin mir jedoch nicht sicher, welche tatsächlichen Auswirkungen dies haben wird. Diese Antwort besagt, dass die gesamte Neuerstellung fehlschlägt. Bedeutet dies jedoch, dass auf alle Daten nicht zugegriffen werden kann? Warum sollte das so sein? Sicherlich würde eine einzelne URE von einem einzelnen Sektor auf dem Laufwerk höchstens die Daten betreffen, die sich auf einige wenige Dateien beziehen. Wäre das Array nicht immer noch neu aufgebaut, nur mit einigen geringfügigen Beschädigungen an einigen Dateien?

(Ich bin speziell an der Implementierung von RAID5 durch ZFS interessiert, aber die Logik scheint bei jeder RAID5-Implementierung dieselbe zu sein.)

process91
quelle
1
Wenn im Zusammenhang mit RAID5-Risiken die "Wahrscheinlichkeit des Auftretens einer URE während einer Neuerstellung " erörtert wird, wird impliziert, dass bereits eine frühere Beschädigung aufgetreten ist, die die Neuerstellung erforderlich macht. Mit anderen Worten, die "URE während der Wiederherstellung" ist die zweite URE, und tatsächlich gehen ALLE Daten verloren.
Colt
1
@Colt - Ich verstehe, dass dies die Implikation ist, aber was ich nicht verstehe, ist, warum eine einzelne URE (die in der Analyse, warum RAID5 nicht empfohlen wird, auf einen fehlerhaften Sektor zu verweisen scheint) bedeuten würde, dass alle Daten vorhanden sind verloren sein. Wenn ich 1 Laufwerk eines RAID5-Arrays verloren habe, sind im Allgemeinen immer noch alle Daten vorhanden. Wenn ich zusätzlich einen einzelnen Sektor von einem der verbleibenden Laufwerke verliere, ist es möglich, dass ich Daten verloren habe, die in diesem Sektor gespeichert waren, aber wenn dieser Sektor (zum Beispiel) freier Speicherplatz war, ist es mir egal, und wenn dieser Sektor Hatte Daten darauf, dann kann es nur ein paar Dateien auswirken.
Prozess91
@Colt - Auf der Grundlage der folgenden Antworten haben die Hersteller von Hardware-RAIDs die Entscheidung getroffen, das Array in der Gegenwart einer einzelnen URE nicht neu zu erstellen. Meiner Meinung nach war dies die falsche Wahl, aber zum Glück scheint ZFS es anders zu machen.
Prozess91
Siehe @ shodanshoks Antwort für den Prozess. Was das Warum betrifft, dient RAID dazu, anderen Prozessen, Anwendungen usw. den kontinuierlichen Zugriff auf zuverlässige Daten zu ermöglichen, und es geht nicht um Sicherung. Der Grund, warum viele (die meisten?) Hardware-Controller abbrechen, sobald die URE beim Neuaufbau auftritt, ist, dass das RAID nicht mehr das kann, was es tun soll . An diesem Punkt die Sicherungen müssen verwendet werden , um zuverlässige Daten zu haben. Eine andere Möglichkeit, RAID zu verwenden, besteht darin, überhaupt keine Neuerstellung durchzuführen, sondern nur RAID zu verwenden, um den Zeitpunkt der Wiederherstellung nach einem Backup zu steuern. Außerdem bleibt Zeit, um vor der Wiederherstellung das endgültige Backup zu erstellen.
Colt
Beachten Sie, dass die „ZFS-Implementierung von RAID5“ als „raidz“ oder „zraid“ bezeichnet wird und sich von Hardware-RAID5 unterscheidet. In der Regel erhalten Sie bessere Antworten zu „ZFS RAID5“, wenn Sie nach „raidz“ fragen
Josh,

Antworten:

24

Es hängt wirklich von der spezifischen RAID-Implementierung ab:

  • Bei den meisten Hardware-RAIDs wird die Rekonstruktion abgebrochen, und bei einigen wird das Array als fehlerhaft markiert , wodurch es heruntergefahren wird. Der Grund ist , dass , wenn ein URE während eines RAID5 passiert es wieder aufzubauen bedeutet , dass einige Daten sind verloren, so dass es besser ist, vollständig das Array zu stoppen eher , dass stille Datenkorruption zu riskieren. Hinweis: Einige Hardware-RAIDs (hauptsächlich auf LSI-Basis) durchstoßen stattdessen das Array, sodass die Neuerstellung fortgesetzt werden kann, während der betroffene Sektor als nicht lesbar markiert wird (ähnlich wie Linux-Software-RAIDs).

  • Linux-Software-RAID kann angewiesen werden, a) den Array-Neuaufbau zu stoppen (das einzige Verhalten von "alten" MDRAID- / Kernel-Builds) oder b) mit dem Neuaufbau fortzufahren und einige LBAs als fehlerhaft / unzugänglich zu markieren. Das Grundprinzip ist, dass es besser ist, den Benutzer seine Wahl treffen zu lassen: Schließlich kann sich eine einzelne URE auf freiem Speicherplatz befinden, ohne dass Daten betroffen sind (oder nur unwichtige Dateien).

  • ZRAID zeigt einige Dateien als beschädigt an, setzt jedoch den Neuerstellungsprozess fort (siehe hier für ein Beispiel). Das Grundprinzip ist wiederum, dass es besser ist, fortzufahren und dem Benutzer Bericht zu erstatten, damit er eine fundierte Entscheidung treffen kann.

Shodanshok
quelle
@ process91 Nur um es etwas näher zu erläutern. Wenn die RAID-Implementierung nicht über die zusätzlichen Datenstrukturen verfügt, die erforderlich sind, um einzelne Sektoren als fehlerhaft zu markieren, muss entweder die Neuerstellung fehlschlagen oder eine unbeaufsichtigte Beschädigung eingeführt werden. Es ist besser, einzelne Sektoren als schlecht zu kennzeichnen, es könnte jedoch das Risiko für andere Sektoren bestehen, da diese einen Paritätssektor mit dem schlechten Sektor teilen.
Kasperd
@kasperd Sicher, ich nehme an, dass die meisten RAID-Implementierungen den Benutzer auf fehlerhafte Sektoren aufmerksam machen können. Ich verstehe, wenn ein Laufwerk einen fehlerhaften Sektor enthält, der nach einer Neuerstellung zu einem fehlerhaften Sektor auf dem neuen Laufwerk führt. Das heißt, selbst wenn die RAID-Implementierung nichts anderes tat, als den Benutzer zu warnen: "Ich habe das Laufwerk so gut wie möglich wiederhergestellt, aber ich habe dabei 1 URE erlebt" und erlaubte dann weiterhin versuchte Schreibvorgänge in diesem Sektor, die ich nicht tue sehen, wie andere Sektoren gefährdet sein könnten. Die einzig möglichen falschen Sektoren wären der ursprüngliche, der neue und die Parität.
Prozess91
Eine Klarstellung, basierend auf den obigen Kommentaren von @Colt: Erlaubt es im Fall von Hardware-RAID überhaupt noch den Zugriff auf die Daten , wenn es das Array als ausgefallen markiert ? Sogar schreibgeschützter Zugriff zum Zweck einer versuchten Wiederherstellung?
Prozess91
@ process91 Es ist keine gute Idee, einem Sektor zu erlauben, beschädigt zu werden, auch wenn diese Tatsache in einer Protokolldatei aufgezeichnet wurde. Sie hätten keine Ahnung, welche Datei möglicherweise beschädigt ist. Das RAID muss sicherstellen, dass beim Lesen dieser Datei ein Fehler auftritt. Außerdem möchten Sie nicht nur den fehlerhaften Sektor überschreiben, da Sie damit nur Ihre letzte Chance auf Wiederherstellung der Daten verloren haben. Sie haben also einen unlesbaren Sektor auf einer Festplatte und einen Sektor auf der neuen Festplatte, in dem Sie nicht wissen, was Sie schreiben sollen. Das könnten zwei verschiedene Dateien sein, die beschädigt sind.
Kasperd
1
@ process91 Ich habe einen Hinweis zu LSI-basierten Arrays hinzugefügt. Schau es dir an.
Shodanshok
8

Wenn URE auftritt, treten im gesamten Block Datenbeschädigungen auf, die normalerweise zwischen 256 KB und 1 MB groß sind. Dies bedeutet jedoch nicht, dass ALLE Daten auf Ihrem Volume verloren gehen. Was an RAID5 nicht so toll ist, ist eine ganz andere Sache: Die Neuerstellung selbst ist stressig und es besteht eine hohe Wahrscheinlichkeit, dass die zweite Festplatte in Folge ausfällt. In einem solchen Fall würden alle Daten verloren gehen.

BaronSamedi1958
quelle
2
Wie ist ein RAID5-Rebuild auf einem einzelnen Laufwerk stressiger als ein RAID1-Rebuild? Ich sehe, dass es für die CPU anstrengender ist, aber für ein bestimmtes Laufwerk lesen wir einfach alle Daten davon. Normalerweise besteht bei größeren Laufwerken die Gefahr, dass sie während der Wiederherstellung auf eine URE stoßen, aber das ist in Ordnung für mich, wenn es nur bedeutet, dass ein einzelner Sektor beschädigt wird.
Prozess91
3
Es ist Wahrscheinlichkeitstheorie. Bei N (Anzahl der Laufwerke) ist die Wahrscheinlichkeit eines Ausfalls um das N-fache höher.
BaronSamedi1958
1
Das ist nicht ganz , wie die Berechnung funktionieren würde, dann würden Sie eigentlich wollen 1- Wahrscheinlichkeit berechnen , nicht einen Fehler zu haben, aber ich verstehe , dass ein Teil. Offenbar habe ich Ihre Aussage fälschlicherweise so interpretiert, dass der Vorgang des Neuaufbaus eines RAID5 auf der Festplatte selbst (die ich an anderer Stelle gelesen habe) etwas stressiger ist, was die Wahrscheinlichkeit einer URE erhöht. Wenn ich sage, dann stimme ich zu.
Prozess91
2

Ich würde es anders herum erklären;

Was kann passieren, wenn der RAID-Controller auf URE nicht stoppt?

Ich habe es auf einem Server gelebt, das RAID hat die URE nie bemerkt und nach dem Neuaufbau begann sich eine Beschädigung auf dem gesamten RAID-Volume aufzubauen.

Die Festplatte wurde nach dem Wiederherstellen immer fehlerhafter und die Daten wurden beschädigt.

Der Datenträger wurde nie vom RAID-Volume geworfen. Der Controller-Fehler dient zum Schutz der Datenintegrität.

Dieses Beispiel soll Sie darauf hinweisen, dass ein Controller ein Volume überhaupt nicht mit URE betreiben kann, da es sich nicht um ein Backup handelt, sondern um eine Ausfallsicherung für einen Festplattenfehler

yagmoth555 - GoFundMe Monica
quelle
1
Ich sehe, dass die neuen Moderatoren ständig auf der Website nach
Aktivitäten
1
Warum würde eine einzelne URE eine Beschädigung des gesamten RAID-Volumes verursachen?
Prozess91
2
Entschuldigung, ich habe Ihre Antwort noch einmal gelesen. Es hört sich so an, als ob Sie während des Wiederaufbaus eine einzige fehlerhafte URE hatten, aber das war nicht das Problem. Das Problem war, dass die Sektoren nach dem Wiederaufbau weiterhin schlecht liefen und das Laufwerk dies nie meldete. Dies scheint jedoch ein separates Problem zu sein, unabhängig davon, ob der RAID-Controller während einer Neuerstellung eine URE bemerkt oder nicht. Der RAID-Controller könnte die URE während der Neuerstellung bemerken und Sie darauf hinweisen, aber dennoch fortfahren, die Neuerstellung abzuschließen. Einige Daten wären immer besser als keine Daten.
Prozess91
2
Ich möchte nur analysieren, warum RAID5 im Jahr 2009 als "tot" eingestuft wurde, was auf der Wahrscheinlichkeit einer einzelnen URE beruht. Ich verstehe jetzt, dass diese Analyse sowohl mathematisch inkorrekt war als auch nicht wirklich auf ZFS zutrifft.
Prozess91
1
@ RobMoir Ich denke, Ihre letzte Aussage ist, wo ich nicht einverstanden bin. Es könnte nützlich sein, fast alle meine Daten vom Array zu entfernen, selbst wenn ich ein anderes Backup hätte. Möglicherweise war diese Datei nicht wichtig, oder (im Fall von Hardware-RAID) trat der Fehler in einem Bereich mit freiem Speicherplatz auf. Ich denke, die richtige Entscheidung für Hardware-RAID (bei dem nicht genau bekannt ist, welche Dateien betroffen sind) wäre, den Benutzer zu warnen, die Neuerstellung abzuschließen und das Array in den schreibgeschützten Modus zu versetzen. Ich sehe keine Nachteile. (Offensichtlich können Dateisysteme wie ZFS sogar noch bessere
Ergebnisse erzielen
1

Ich würde vorschlagen, diese Frage und die Antworten zu lesen, um ein wenig mehr Hintergrundwissen zu erhalten. Dann lesen Sie die Frage, mit der Sie verknüpft sind, noch einmal durch.

Wenn jemand über diese Situation sagt, dass "das RAID fehlgeschlagen ist", bedeutet dies, dass Sie den Vorteil des RAID verloren haben - Sie haben den kontinuierlichen Zugriff auf Daten verloren, der der Grund war, warum Sie das RAID-Array überhaupt eingerichtet haben.

Sie haben nicht alle Daten verloren, aber die gängigste Methode zur Wiederherstellung nach einem Laufwerksausfall plus (einigen) UREs auf (einigen) verbleibenden Laufwerken besteht darin, das Array von Grund auf neu zu erstellen. Dies bedeutet, dass alle Daten wiederhergestellt werden aus dem Backup.

Ward - Wiedereinsetzung von Monica
quelle
1
Im Allgemeinen verwenden Sie RAID, wenn Sie Ausfallzeiten minimieren möchten. Wenn das Array mit unbekannter und nicht reparierter Beschädigung weiterarbeitet, ist dies normalerweise ein Verstoß gegen dieses Ziel.
David Schwartz
1
Danke, diese erste Frage war sehr informativ. Warum hätte ich den ständigen Zugriff auf die Daten verloren? Das Array wäre während der Neuerstellung immer noch aktiv, und wenn es während der Neuerstellung auf eine URE stößt, würde ich davon ausgehen, dass sie einfach weiterarbeitet, auch wenn dieser eine Datensektor jetzt beschädigt ist. Ist das nicht der Fall?
Prozess91