Was ist die Granularität eines Festplatten-URE (nicht behebbarer Lesefehler)?


8

tl; dr falls ein URE auf einer Festplatte auftritt, wird I lose 1Bit, 1Byte oder die Größe eines Sektors (512Bytes oder 4096 Bytes AF)? und wenn möglich erklären warum?

Hintergrund: Die Frage stellt sich hier, wenn eine Festplatte Probleme beim Lesen von Daten hat. Sicherlich kann eine Festplatte vollständig ausfallen und alle Daten verloren gehen (DISK FAIL), aber der Fall, nach dem ich hier frage, ist, dass nur ein kleiner Teil davon verloren geht (URE, ein nicht korrigierbarer Lesefehler).

Obwohl ich nach Informationen zu URE gesucht habe, habe ich mit Sicherheit wenig herausgefunden. Dies könnte darin liegen, dass das, was intern im Laufwerk geschieht, dh was vor direkter Benutzerinteraktion wie der ECC-Korrektur verborgen ist, für mich schwer mit dem in Verbindung zu bringen ist, auf das ich als Benutzer zugreife - den Sektoren.

Stellen wir uns vor, die Festplatte hat Probleme beim Lesen von Daten.

In dieser Situation muss dies sicherlich entweder Folgendes bedeuten:

  • (a) einige Bits des Sektors können nicht gelesen werden, oder
  • (b) Alle Bits können gelesen werden, bestehen jedoch keinen Prüfsummentest (natürlich erwartet ein Sektor 4096 Byte Probleme nicht nur 8 * 4096 Bits, sondern einige zusätzliche Bits / Byte für die Fehlerprüfung / -korrektur (dh Paritätsbits) ) (c) ????

Nein, ich glaube, wenn wir uns in einer Situation befinden, in der eine Kombination aus (a) und (b) stattgefunden hat und eine verlässliche Rekonstruktion der Bytes des 4096-Sektors nicht möglich ist, ist es übertrieben anzunehmen, dass notwendigerweise alle von ihnen Garpage sind Wenn wir uns der internen HDD-Fehlerkorrekturlogik bewusst wären, könnten wir stattdessen sagen: "Schauen Sie, etwas wird nicht überprüft, und bei einer guten Änderung von mindestens 1,2,3 sind n Bits / Bytes der Blockdaten" falsch ". ". Wenn wir redundant "Hallo, Hallo ..., Hallo" ASCII-Byte-Strings in diesem Sektor speichern würden, hätten wir möglicherweise noch eine faire Folge von "Hallo, Hallo ...", bevor es ein "... Uellohello ... "(dh" e "->" U ").

Was ist die Granularität eines URE?

UPDATE: Es gab einen Kommentar, in dem die Idee eines schlechten Sektors eingegeben wurde (und der darauf hinwies, dass dies die Granularität eines URE-Ereignisses widerspiegelt. Es ist nicht absurd, dies vorzuschlagen und kann möglicherweise zur Beantwortung der Frage verwendet werden. Ich habe jedoch gerade einen anderen verwandten gelesen Fragen zu ausstehenden unlesbaren Sektoren (hier /unix/1869/how-do-i-make-my-disk-unmap-pending-unreadable-sectors ), die mich dazu veranlassen, dies in einigen zu denken In Szenarien gibt es tatsächlich eine verschwommenere Linie zwischen den Daten, die im Falle eines URE verloren gehen.


Normalerweise werden bei einem abgestürzten Kopf Zehntausende von Blöcken gleichzeitig beschädigt. Wenn es sich um Staub usw. handelt, kann der Zugang in der Nähe von Blöcken den Schaden verbreiten. So ist es selten so einfach wie ein Teil eines größeren Gebiets kann rekonstruiert werden.
James Ryan

@ JamesRyan guter Hinweis, es kann immer schlimmer sein. Vielleicht habe ich mich einfach nach dem am wenigsten schlimmen Fall erkundigt (das heißt nur, einen Sektor zu verlieren, oder, wie es teilweise in den guten Antworten gelöst wurde, einen Teil der Sektordaten, abhängig von der Art darin). Vielleicht muss mehr über die Entstehung unlesbarer Fehler (und ihre Persistenz, dh zufällige Bitfäule im Vergleich zu Kopfcrash-Auswirkungen) nachgedacht werden. Aber wir wollen hier beantwortbare Fragen, deshalb habe ich die Frage nicht mehr unnötig kompliziert
Menschheit

Antworten:


8

Der Fehlerkorrekturcode auf einer Festplatte ist ein zusätzlicher Datenblock, der jedem Hardwaresektor zugeordnet ist. Während des Schreibens berechnet die Laufwerksfirmware diese Daten und schreibt sie zusammen mit den Benutzerdaten. Während des Lesens liest die Firmware das ECC zusammen mit den Daten und überprüft sie zusammen.

Für eine herkömmliche Festplatte beträgt der Hardwaresektor 512 Byte. Bei einem Laufwerk mit erweitertem Format sind es 4 KByte (es spielt keine Rolle, ob das Laufwerk 512-Byte- oder 4 KByte-Sektoren an der Schnittstelle anzeigt, dh 512e gegenüber 4kn).

Das Ergebnis der Prüfung nach einem Lesevorgang hat grundsätzlich drei mögliche Ergebnisse:

  • Sektor wurde ohne Fehler gelesen. Dies ist auf modernen Festplatten eigentlich nicht ganz üblich. Die Bitdichten sind so, dass sie von der ECC-Arbeitsweise abhängen.

  • Sektor wurde mit korrigierbaren Fehlern gelesen. Wie oben angedeutet, ist dies nicht ungewöhnlich; es wird erwartet. Das Laufwerk gibt die Daten mit angewandter Fehlerkorrektur an den Benutzer zurück.

  • Sektor wurde gelesen, aber es gab zu viele "falsche Bits"; Die Fehler konnten nicht behoben werden.

Im letzteren Fall gibt das Laufwerk normalerweise keinerlei Inhalt zurück. Es wird nur ein Status zurückgegeben, der den Fehler anzeigt. Dies liegt daran, dass es nicht möglich ist zu wissen, welche Bits verdächtig sind, geschweige denn, welche Werte sie haben sollten. Daher ist der gesamte Sektor (ECC-Bits und alle) nicht vertrauenswürdig. Es ist unmöglich zu bestimmen, welcher Teil des schlechten Sektors schlecht ist, geschweige denn, was sein Inhalt sein sollte. Das ECC ist eine "Gestalt", die über den gesamten Sektorinhalt berechnet wird. Wenn es nicht übereinstimmt, ist es der gesamte Sektor, der nicht übereinstimmt.

SpinRite versucht einfach, den fehlerhaften Sektor immer wieder zu lesen. Dabei wird eine "Wartungslesefunktion" verwendet, die die Daten zurückgibt (jedoch ohne ECC-Bits), obwohl das Laufwerk "nicht korrigierbarer Fehler" anzeigt. Wie in der von DavidPostill verlinkten Beschreibung erwähnt, kann es gelingen, fehlerfrei zu lesen (tatsächlich ist "korrigierbar" wahrscheinlicher). oder es kann in der Lage sein, im Wesentlichen durch Mitteln der zurückgegebenen Bits eine vernünftige Schätzung des Sektorinhalts abzuleiten. Es ist nicht besser in der Lage, Fehler mithilfe des ECC präzise zu korrigieren als das Laufwerk. das ist mathematisch unmöglich.


Ist es mathematisch immer noch unmöglich, wenn die Daten in der 4096Byte-Nutzlast selbst eine Kombination aus einer 4000Byte-Nutzlast und einem weiteren 96Byte-ECC waren? (Zum Beispiel, weil ich bereit war, die Kapazität für die Wiederherstellbarkeit im Datenspeicherlayout zu beeinträchtigen?).
Menschlichkeit

Ich vermute, dass es nur unter der impliziten Annahme, dass es keine weitere Redundanz innerhalb der Daten gab, mathematisch unmöglich ist, oder? - und auch tolle Antwort!
Menschlichkeit und

1
Sicher. Zu diesem Zeitpunkt ist es nur ein weiterer unzuverlässiger Kanal, aber wenn genügend Redundanz vorhanden ist. Der Haken ist, dass die Standard-Festplattentreiber des Betriebssystems Ihnen den Sektorinhalt überhaupt nicht liefern, wenn das Laufwerk der Meinung ist, dass die Fehler nicht korrigierbar sind. RAID-5 und ähnliche Paritätsschemata tun dasselbe auf einer "äußeren Schicht" und nicht innerhalb der Datenfelder bestehender Sektoren.
Jamie Hanrahan

„der Haken“ mit den OS - Treiber zurück zu geben (auf Anfrage) alle, auch nicht verifizierten Daten ist ein Problem, als Nicht-Windows - Benutzer ich darüber ausdrücklich darum gebeten unix.stackexchange.com/questions/228254/...
humanityANDpeace

3

Was ist die Granularität eines URE?

Nicht behebbare Lesefehler (URE) sind Sektorlesefehler. Wenn der Sektor nicht fehlerfrei gelesen werden kann, spielt es keine Rolle, ob es sich nur um 1 Byte oder um alle Bytes des Sektors handelt.

Die Granularität ist die Sektorgröße .

Selbst wenn nur 1 Byte fehlschlägt, erhalten Sie normalerweise keine Daten aus diesem Sektor zurück, ohne spezielle Software zu verwenden.


Können die Daten eines ausgefallenen Sektors wiederhergestellt werden?

SpinRite sagt:

SpinRite ist sogar in der Lage, die meisten Daten in einem Sektor wiederherzustellen, der niemals perfekt gelesen werden kann und den jede andere Dienstprogramm-Software vollständig verwirft.

Siehe Wie SpinRite unlesbare Daten wiederherstellt .


Haftungsausschluss.

Ich bin in keiner Weise mit SpinRite verbunden und habe es nie benutzt.


1
Ich neige dazu, dies für eine gute Antwort zu halten, nicht weil ich notwendigerweise zustimme, dass es im Falle eines URE notwendig ist, einen Sektor (das sind immerhin 4 KB Daten) vollständig zu verlieren, sondern weil die Festplatte möglicherweise sogar diesen Anteil der Daten verwirft "schlechter Sektor", der immer noch von Wert wäre. Die Präsentation der SpinWrite-Argumente stützt diese Idee, sodass die Antwort auch weitere Einblicke bietet, großartig.
Menschheit und

2

Es gibt kein "kann nicht ein bisschen lesen", es sei denn, Sie haben einen wirklich schwerwiegenden Hardwarefehler wie den Kopf, der nicht in der Lage ist, die richtige Spur zu suchen, oder die Servospur ist beschädigt und der richtige Sektor kann nicht gefunden werden . In beiden Fällen hätten Sie natürlich zumindest einen ganzen unlesbaren Sektor.

Andernfalls erhalten Sie immer Bits zurück, es handelt sich möglicherweise nur um falsche Bits. Hier kommt der Fehlerkorrekturcode ins Spiel. Es fügt jedem Sektor eine Anzahl zusätzlicher ECC-Bits hinzu, so dass jede korrekte Kombination von Datenbits und ECC-Bits eine algebraische Regel beachtet. Wenn alle Bits korrekt gelesen wurden, wird der Code validiert und die Daten können direkt zurückgegeben werden. Wenn eine kleine Anzahl von Bits falsch gelesen wurde, kann der ECC-Code verwendet werden, um genau zu bestimmen und welche zu korrigieren, sodass alle Daten korrekt zurückgegeben werden. Wenn eine größere Anzahl von Bits falsch gelesen wurde, kann der ECC - Code erkennt , dass es war ein Fehler, aber es hat nicht mehr genügend Informationen , um herauszufinden , welche Bits sind falsch; Dies ist ein nicht korrigierbarer Lesefehler. Wenn einWenn eine sehr große Anzahl von Bits falsch gelesen wird, wird der Code möglicherweise "versehentlich" korrekt validiert und das Laufwerk gibt beschädigte Daten zurück. Mit genügend ECC-Bits kann die Wahrscheinlichkeit, dass dies geschieht, so gering wie Sie möchten.

Um die Frage zu beantworten, auf die Sie sich wahrscheinlich eingelassen haben: Wenn ein teilweiser Lesefehler aufgetreten ist, aber genügend Informationen verfügbar waren, um herauszufinden, wo der Fehler aufgetreten ist, kann er auch korrigiert werden, und der Computer sieht überhaupt keinen Fehler . Das passiert eigentlich ständig. Ein nicht korrigierter Fehler tritt auf, wenn nicht herausgefunden werden kann, welche Datenbits gültig sind und welche nicht, und da der Fehlerkorrekturcode über einen Sektor berechnet wird, geschieht dies bei Sektorgranularität.


1

Nachdem ich es untersucht und von der Antwort https://superuser.com/a/969917/160771 von https://superuser.com/users/337631/davidpostill inspiriert habe

Ich möchte mit einer etwas erweiterten alternativen Antwort antworten. Erstens ist es wahr, dass die Festplatte und ihre Firmware der Ursprung eines URE-Ereignisses sind, dh das Ereignis, dass Daten nicht gelesen werden können. Ferner ist es wahr, dass die Daten in Sektoren von 512 oder 4096 Bytes verwendbarer Daten und etwa 50 bzw. 100 Bytes zusätzlicher Daten auf die Festplatte geschrieben werden, was eine Fehlerprüfung und -korrektur ermöglichen sollte.

Das Sprechen über ein URE geschieht daher natürlich im Kontext eines Festplattensektors. Der Begriff schlechter Sektor ist sicherlich etwas verknüpft, aber nicht identisch mit der aktuellen Situation, in der wir einen URE-Sektor haben.

Ein Sektor mit einigen Problemen, die fehlerfrei gelesen werden können, ist nicht unbedingt völlig bedeutungslos. Es könnte sein, dass tatsächlich alle 4096 Daten beschädigt wurden, aber es könnte auch sein, dass nur 1 Bit mehr als zuverlässig korrigierbar war (über die redundanten zusätzlichen ECC-Daten, die jedem Sektor hinzugefügt wurden), beschädigt wurde.

In der Kasese, in der nur einige wenige Bytes, die mehr als hdd korrigieren konnten, beschädigt wurden, gibt es Änderungen, bei denen ein Bruchteil der 4096 Bytes noch aussagekräftige Daten enthält.

Ein Beispiel könnte sein, dass der 4096 die ASCII-Zeichen von 2 Sätzen darstellt. Dann ist es möglich, dass 1 Satz oder mehr vollständig intakt ist. Es könnte auch möglich sein, dass jeder 2. oder 3. Buchstabe gelöscht wurde. Wenn die Daten von 4096 in einem URE-Ereignis verloren gehen, liegt dies an der Interpretation und ist abhängig von den Daten. Man könnte sich vorstellen, dass die Daten selbst eine weitere Schicht der ECC-Shell hatten, die eine weitere Wiederherstellung ermöglichen würde.

Daher ist es gut, dass die meisten Firmwares URE-Sektoren anders behandeln als schlechte Sektoren:

In der Regel erfolgt die automatische Neuzuordnung von Sektoren nur, wenn in einen Sektor geschrieben wird. Die Logik dahinter ist vermutlich, dass ein Sektor, selbst wenn er nicht normal gelesen werden kann, mit Datenwiederherstellungsmethoden lesbar sein kann. (von https://en.wikipedia.org/wiki/Bad_sector )

Oder insoweit könnte es sein, dass ein Teil des Sektors noch verwertbare Daten enthält.


Beachten Sie, dass der Artikel als "Aufmerksamkeit eines Experten erforderlich" gekennzeichnet ist , "möglicherweise Originalforschung enthält" und dass eine bestimmte Aussage als "Zitierweise erforderlich" gekennzeichnet ist. Die Art und Weise, wie es geschrieben ist ("vermutlich"?), Klingt auch so, als würde jemand spekulieren, und nicht als etwas, das mit hochwertigem Quellmaterial in Einklang gebracht werden kann.
Ein CVn
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.