iX 4/2017
S. 104
Wissen
Speichersysteme
Aufmacherbild

Kurz erklärt: Bitfehler bei Festplatten

Erinnerungslücke

Je größer die Festplattenkapazität, desto wahrscheinlicher sind Fehler beim Speichern. Dank Prüfsummen sollte die Hardware keine falsche Daten zurückliefern – so die Theorie.

Für Dateisysteme sollte es eine Selbstverständlichkeit sein, Daten so zu lesen, wie sie gespeichert wurden – oder andernfalls einen Fehler zu melden. Leider ist das Gegenteil der Fall: Verwandelt man etwa per Sektor-Editor am Dateisystem vorbei ein „U“ in ein „X“ (kippt also die Bits 5 und 6 des ASCII-Wertes), bekommt kaum eines der aktuellen Dateisysteme diese Manipulation mit – die falschen Daten können schließlich, technisch betrachtet, einwandfrei gelesen werden.

Nahezu alle Dateisysteme verlassen sich darauf, dass darunterliegende Schichten korrekte Daten liefern. Es gibt auf Dateisystemebene keine weitere Überprüfung der Datenintegrität. Bei ZFS etwa ist das anders, es berechnet von jedem Datenblock eine Prüfsumme, speichert sie in dessen Metadatenblock und würde obige Manipulation erkennen.

Fehler überall im Datenpfad

In Unternehmen sind heute Datenmengen im Tera- oder Petabyte-Bereich üblich. Das ist statistisch gesehen die Menge an Bits, bei deren Lesen oder Schreiben erste Fehler die Daten verfälschen. Die ZFS-Entwickler haben das schon früh erkannt und Mechanismen ins Dateisystem eingebaut, die derartige Fehler mit an Sicherheit grenzender Wahrscheinlichkeit finden. Um von ZFS nicht erkannt zu werden, müsste ein Fehler in einem Datenblock zufälligerweise dieselbe SHA256-Prüfsumme ergeben wie die Originaldaten.

In Speichersubsystemen existieren zahlreiche Fehlerquellen. Das beginnt beim Lesen eines Sektors der Festplatte: Dieser besteht aus einem kleinen Zwischenraum zur Trennung der Sektoren, einem Synchronisationsabschnitt, einem Adressmarker, 512 oder 4096 Bytes Daten und einer Prüfsumme. Letztere kann unterschiedlich implementiert sein und beispielsweise aus mehreren kurzen CRC-Prüfsummen (Cyclic Redundancy Check) über Teilbereiche der Sektordaten bestehen. Passt die Prüfsumme nicht zu den gelesenen Daten, meldet die Festplatte einen Lesefehler.

Die Prüfsummen halten die Festplattenhersteller kurz, um Kunden eine möglichst große nutzbare Kapazität anzubieten und trotzdem einen ausreichend sicheren Betrieb zu gewährleisten. Lesefehler gibt es durchaus, meist erkennt man sie anhand der Prüfsummen. Es existieren jedoch Ausnahmen, sobald mehrbittige Fehler auftreten, die zufällig dieselbe Prüfsumme ergeben wie die Originaldaten. Moderne Festplatten benutzen größere Sektoren und entsprechend mehr Prüfbits nach dem CRC-, dem Paritätsbit- oder dem ECC-Verfahren (Error-correcting Code). Das Problem bleibt jedoch wegen der zu kurzen Prüfsummen grundsätzlich bestehen.

Gravierender ist, dass der enorme Anstieg der Plattenkapazitäten zu veränderten Fehlerraten führt: Bei Desktop-Festplatten (etwa bei den noch neuen SMR-Festplatten – Shingled Magnetic Recording, wie Dachschindeln angeordnete Magnetpartikel) geht man von einem Fehler pro 1014 Bits aus – also einem verkehrten Bit pro gelesenen 11,4 TByte. Als Faustregel kann man wohl davon ausgehen, dass beim Lesen von rund 8 bis 12 TByte statistisch gesehen ein defekter Sektor enthalten ist. Wer also in einem RAID-Verbund eine zeitgemäße 8-TByte-Festplatte austauscht, muss beim Resilvering (wenn komplette Laufwerke gelesen werden müssen) bereits mit Lesefehlern rechnen. Werden diese nicht erkannt, sind die Daten im Verbund fortan fehlerhaft.

Neben der Spur geschrieben

Und es kommt noch schlimmer: Bei Phantom Writes meldet die Festplatte das Schreiben von Daten, obwohl der Schreibvorgang unterblieb. Hinzu kommen Misdirected Reads/Writes, bei denen ein Schreibkopf nicht korrekt positioniert wurde. In der Folge wird etwa ein Block der Nachbarspur gelesen und – da dessen Prüfsumme stimmt – kein Fehler gemeldet. Beim Schreiben auf eine falsche Spur oder irgendwo zwischen zwei Spuren wird sogar nicht nur ein (bislang korrekter) Nachbarblock falsch überschrieben, außerdem bleibt der anvisierte Block unverändert. Anschließend sind zwei Blöcke permanent falsch, haben jedoch korrekte Prüfsummen. Angeblich passieren diese Fehler ab etwa 108 Positionierungen der Schreib-/Leseköpfe, was bei einer unter Volllast laufenden Festplatte mit 4 ms Zugriffszeit einmal pro Woche passiert. Weitere Fehlerquellen: der Cache der Festplatte, deren Firmware, das Datenkabel, die Firmware des Controllers und dessen Hardwaretreiber bis hin zum PCI(e)-Bus. Teilweise sind die Datenübertragungen ECC- oder Parity-gesichert, aber auch hier werden nicht alle Fehler erkannt.

Hersteller wie Seagate scheinen sich des Problems bei heutigen Riesenfestplatten bewusst zu sein, denn bei der „Archive HDD v2“, einem 8-TByte-Laufwerk mit SMR-Technik, gibt es den warnenden Hinweis, nicht mehr als 500 GByte pro Tag zu schreiben oder zu lesen. Abhilfe schaffen Dateisysteme mit Prüfsummen. ZFS etwa erreicht durch seine (ausreichend große) SHA256-Prüfsumme eine zuverlässige Fehlererkennung auf oberster Ebene, egal an welcher Stelle ein Subsystem einen Fehler übersehen hat. Auch das Linux-Dateisystem Btrfs nutzt Prüfsummen (mit dem CRC-32C-Algorithmus). Dank Redundanz und der Verschmelzung von Dateisystem und Volume-Manager kann ZFS Fehler automatisch beim Lesen reparieren. (tiw)