Defekte Sektoren reparieren unter Linux mit badblocks

Ich hatte mir einen gebrauchten Server gekauft der vor der Inbetriebnahme auf Herz und Nieren getestet werden sollte. Dabei sind mir auf der Festplatte defekte Sektoren aufgefallen. Glücklicherweise ist das noch nicht das Ende der Festplatte. Man kann nämlich defekte Sektoren reparieren. Unter Linux verwende ich dazu das Programm badblocks.

Die Voranalyse

Um überhaupt den gesundheitlichen Zustand der Festplatte abschätzen zu können habe ich zuerst den S.M.A.R.T. Status der Festplatte ausgelesen und die einzelnen Attribute im Detail analysiert.  Ich verwende dazu die smartmontools die bei so ziemlich jeder Linux Distribution enthalten sind.

Bei Bedarf lässt sich für die Festplatte auch ein ausführlicher Selbsttest starten. Den Devicenamen muss man natürlich bei Bedarf an die eigene Situation anpassen, bei mir ist es die erste Platte, damit sda.

Das Ergebnis des Selbsttests kann man meist ein paar Minuten bis Stunden (je nach Test)  später wieder mit smartctl auslesen.

Die meisten Attribute waren bei mir im Grünen Bereich. Als Hilfestellung zur Bewertung werden die Attribute auch nochmal normalisiert auf 100 dargestellt. Wenn der “VALUE” unter den Grenzwert “THRESH” absinkt geht es der Platte nicht mehr besonders gut und man sollte sich schleunigst um ein Backup und einen Austausch kümmern.

Die beiden Attribute die ich besonders beobachte sind die Anzahl der verschobenen Blöcke “Reallocated_Sector_ct” und die Blöcke die nur “verdächtig” waren, die “Current_Pending_Sector”.

Verschobene Blöcke sind die Bereiche bei denen der Festplattencontroller ein Problem erkannt hat. In der Regel hat ein Schreibzugriff auf diese Blöcke nicht geklappt. Die Blöcke wurden dann als “defekt” markiert und durch Reserveblöcke ersetzt von denen eine moderne Festplatte doch einige hat. Wenn diese Zahl schnell ansteigt ist das auch ein Hinweis darauf, dass sich die Platte ihrem Lebensende nähert.

Etwas mehr Sorgen machen mir die “Current_Pending_Sector”. Das sind Blöcke die als “verdächtig” vorgemerkt sind weil beim Lesen etwas nicht geklappt hat. Wenn beim nächsten Schreibzugriff auf diese Blöcke wieder alles in Ordnung ist dann fallen sie aus der Liste raus, ansonsten werden sie durch Reserveblöcke ersetzt (sieht man dann als Reallocated).

Leider kenne ich kein Tool mit dem sich nur diese verdächtigen Blöcke neu beschreiben lassen, smartctl zeigt die Blocknummern auch nicht an. Auch in den Logs die die Platte ausgeben kann habe ich das bislang nicht gefunden.

Die Holzhammermethode

Aber wie sagt man so schön? Und bist du nicht willig, so brauch’ ich Gewalt

So mache ich es dann auch mit der Festplatte. Mit dem Programm badblocks das Bestandteil der e2fsprogs ist lasse ich die komplette Festplatte durchsuchen. Das Programm liest dabei den Inhalt eines Blocks aus, schreibt ein Testpattern, prüft und schreibt am Schluss wieder den ursprünglichen Inhalt. Sollte es dabei zu Problemen kommen werden diese vom Festplattencontroller erkannt der den entsprechenden Sektor durch einen Reservesektor ersetzt. In der Theorie ist das sicher. Allerdings muss man bei dem Test bedenken, dass dieser Stress der Festplatte den Todesstoß versetzten kann wenn die Hardware schon angeschlagen ist. Und zum anderen gibt es auch die (geringe) Wahrscheinlichkeit von Bitfehlern die nicht erkannt werden. Bei Desktop-Festplatten sind das laut Spezifikation weniger als 2-14.

Wer ein gutes Backup hat kann das Programm nun laufen lassen:

Mit den Default-Einstellungen war das Programm bei mir sehr langsam. Daher lasse ich statt den default 64 Blöcken ganze 262144 Blöcke pro Schritt einlesen. Der Durchsatz stieg dabei auf annehmbare 130 MiB/s. Trotzdem muss man sich darauf gefasst machen, dass der Test ziemlich lange dauert, vor allem bei größeren Festplatten.

Als Ergebnis sollten dann die “pending” Sektoren verschwunden sein, eventuell sind die Anzahl der “reallocated” Sektoren höher geworden.

2 Gedanken zu „Defekte Sektoren reparieren unter Linux mit badblocks

    • Jedes “-v” erhöht den verbosity-level. Du erhälst dann an einigen Stellen zusätzliche Ausgaben. Da es doch leicht wie ein “w” aussehen kann werde ich die Optionen trennen. An der Funktion der Programms ändert sich nichts, nur an den Ausgaben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.