31Jul
Wir alle sorgen uns darum, unsere Daten und Dateien sicher und intakt zu halten, aber ist es möglich, dass Daten beschädigt werden und von einem Benutzer ohne jegliche Benachrichtigung oder Warnung über das Problem zugegriffen werden kann? Der heutige SuperUser F & A Beitrag hat die Antwort auf die Frage eines besorgten Lesers.
Die heutige Frage &Die Antwortsitzung kommt dank SuperUser, einer Unterteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q & A-Websites, zu uns.
Foto mit freundlicher Genehmigung von generalising( Flickr).
Die Frage
SuperUser reader topo morto möchte wissen, ob Daten auf Festplatten beschädigt werden können und ohne Warnung über den Schaden zugegriffen werden kann:
Ist es möglich, dass die physische Zerstörung einer Festplatte dazu führt, dass Bits im Inhalt einer Datei "umkehren"ohne dass das Betriebssystem die Änderung bemerkt und den Benutzer darüber informiert, wenn er die Datei liest? Könnte beispielsweise ein "p"( binär 01110000) in einer ASCII-Textdatei in ein "q"( binär 01110001) geändert werden, wenn ein Benutzer die Datei öffnet, dann "q", ohne zu wissen, dass ein Fehler aufgetreten ist?
Ich bin an Antworten interessiert, die sich auf FAT, NTFS oder ReFS beziehen( wenn es einen Unterschied macht).Ich möchte wissen, ob Betriebssysteme Benutzer davor schützen oder ob wir unsere Daten im Laufe der Zeit auf Unterschiede zwischen den Kopien überprüfen sollten.
Können Daten auf Festplatten beschädigt werden und ohne Warnung über den Schaden zugegriffen werden?
Der Antwort-
SuperUser-Mitwirkender Guntram Blohm hat die Antwort für uns:
Ja, es gibt etwas, das Bit-Rot genannt wird. Aber nein, es wird einen Benutzer nicht unbemerkt beeinflussen.
Wenn eine Festplatte einen Sektor auf die Platten schreibt, schreibt sie die Bits nicht einfach so, wie sie im RAM gespeichert sind, sondern verwendet eine Codierung, um sicherzustellen, dass keine Sequenzen des gleichen Bits zu lang sind. Es fügt außerdem ECC-Codes hinzu, die es ermöglichen, Fehler zu korrigieren, die sich auf einige wenige Bits auswirken, und Fehler zu erkennen, die mehr als ein paar Bits betreffen.
Wenn die Festplatte den Sektor liest, prüft sie diese ECC-Codes und repariert die Daten bei Bedarf( und wenn möglich).Was als nächstes passiert, hängt von den Umständen und der Firmware der Festplatte ab, die durch die Bezeichnung des Laufwerks beeinflusst wird.
- Wenn ein Sektor gelesen werden kann und keine ECC-Code-Probleme aufweist, wird er an das Betriebssystem weitergegeben.
- Wenn ein Sektor leicht repariert werden kann, kann die reparierte Version auf die Festplatte geschrieben, zurückgelesen und dann verifiziert werden, um festzustellen, ob der Fehler zufällig war( dh kosmische Strahlung usw.) oder ob ein systematischer Fehler bei den Medien vorliegt.
- Wenn die Festplatte feststellt, dass ein Fehler bei den Medien vorliegt, weist sie den Sektor neu zu.
- Wenn ein Sektor nach einigen Leseversuchen weder gelesen noch korrigiert werden kann( auf einer Festplatte, die als RAID-Festplatte bezeichnet wird), gibt die Festplatte auf, teilt den Sektor neu zu und teilt dem Controller mit, dass dort einProblem. Es beruht auf dem RAID-Controller, um den Sektor von den anderen RAID-Mitgliedern zu rekonstruieren und auf die ausgefallene Festplatte zurückzuschreiben, die sie dann im neu zugewiesenen Sektor speichert( der hoffentlich kein Problem hat).
- Wenn ein Sektor auf der Festplatte eines Desktops nicht gelesen oder korrigiert werden kann, unternimmt die Festplatte weitere Versuche, sie zu lesen. Abhängig von der Qualität der Festplatte kann dies bedeuten, den Kopf neu zu positionieren, zu überprüfen, ob beim wiederholten Lesen irgendwelche Bits umkehren, welche Bits am schwächsten sind, und ein paar andere Dinge. Wenn einer dieser Versuche erfolgreich ist, wird die Festplatte den Sektor neu zuordnen und die reparierten Daten zurückschreiben.
Dies ist einer der Hauptunterschiede zwischen Festplatten, die als "Desktop" -, "NAS / RAID" - oder "Videoüberwachung" -Festplatten verkauft werden. Eine RAID-Festplatte kann schnell aufgeben und den Controller zur Reparatur des Sektors veranlassen, um Latenz auf der Benutzerseite zu vermeiden. Eine Desktop-Festplatte wird immer wieder versuchen, weil der Benutzer warten ein paar Sekunden ist wahrscheinlich besser als ihnen sagen, dass die Daten verloren sind. Und eine Video-Festplatte schätzt konstante Datenraten mehr als die Fehlerkorrektur, da ein beschädigter Rahmen normalerweise nicht einmal bemerkt wird.
Auf jeden Fall wird die Festplatte wissen, ob es etwas verrotten, wird in der Regel davon erholen, und wenn es nicht kann, wird es den Controller informieren, der wiederum den Treiber sagen wird, der dann das Betriebssystem sagen wird. Dann liegt es am Betriebssystem, den Fehler dem Benutzer zu präsentieren und darauf zu reagieren. Deshalb sagt cybernard:
- Ich habe selbst nie einen einzigen Bitfehler beobachtet, aber ich habe viele Festplatten gesehen, bei denen ganze Sektoren versagt haben.
Die Festplatte erkennt, ob mit einem Sektor etwas nicht stimmt, aber sie weiß nicht, welche Bits ausgefallen sind. Ein einzelnes Bit, das fehlgeschlagen ist, wird immer von ECC abgefangen.
Bitte beachten Sie, dass chkdsk- und Dateisysteme, die sich selbst automatisch reparieren, keine Reparatur von Daten in Dateien durchführen. Diese sind auf Korrumpierung innerhalb der Struktur des Dateisystems selbst gerichtet, wie ein Unterschied in der Dateigröße zwischen dem Verzeichniseintrag und der Anzahl zugeordneter Blöcke. Die Selbstheilungsfunktion von NTFS erkennt strukturelle Schäden und verhindert, dass diese Ihre Daten weiter beeinträchtigen. Es werden jedoch keine Daten repariert, die bereits beschädigt sind.
Es gibt natürlich noch andere Gründe, warum Daten beschädigt werden können. Beispielsweise kann schlechter RAM auf einem Controller Daten ändern, bevor es sogar an die Festplatte gesendet wird. In diesem Fall wird kein Mechanismus auf der Festplatte die Daten erkennen oder reparieren, und dies kann ein Grund sein, warum die Struktur eines Dateisystems beschädigt ist. Weitere Gründe sind Softwarefehler, Blackouts beim Schreiben auf die Festplatte( obwohl dies durch Dateisystem-Journaling behoben wird) oder schlechte Dateisystemtreiber( der NTFS-Treiber unter Linux war lange Zeit schreibgeschützt, da NTFS reverse engineered wurde).nicht dokumentiert, und die Entwickler haben ihrem eigenen Code nicht vertraut).
- Ich hatte dieses Szenario einmal, wo eine Anwendung alle ihre Dateien auf zwei verschiedenen Servern in zwei verschiedenen Datenzentren speichern würde, um eine Arbeitskopie der Daten unter allen Umständen verfügbar zu halten. Nach ein paar Monaten stellten wir fest, dass etwa 0,1 Prozent aller kopierten Dateien nicht mit der MD5-Prüfsumme übereinstimmten, die die Anwendung in ihrer Datenbank gespeichert hatte. Es stellte sich heraus, dass es sich um ein fehlerhaftes Glasfaserkabel zwischen dem Server und dem SAN handelte.
Aus diesen anderen Gründen speichern einige Dateisysteme wie ZFS zusätzliche Prüfsummeninformationen, um Fehler zu erkennen. Sie sind entworfen, um Sie vor viel mehr Dingen zu schützen, die schief gehen können als nur ein bisschen verrotten.
Haben Sie etwas zur Erklärung hinzuzufügen? Ton in den Kommentaren ab. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange Benutzern lesen? Sehen Sie sich den vollständigen Diskussionsfaden hier an.