Ist die Festplatte beschädigt?

Es kommt doch immer wieder vor: eine Festplatte geht kaputt, und keine Datensicherung ist vorhanden. Zuerst stellt sich die Frage, ob wirklich die Festplatte oder nur das Dateisystem defekt ist. Bei einem echten Hardwareschaden sind mit Sicherheit Daten verloren gegangen. Wenn nur das Dateisystem beschädigt wurde, kommt man manchmal mit einem "blauen Auge" davon.
Wichtig: wird die Festplatte aufgeschraubt oder mit dem Lötkolben traktiert, verliert man die Garantie!
Der Einsatz von Reparatursoftware führt nicht zu einem Garantieverlust. Allerdings kann die Festplatte mit hoher Wahrscheinlichkeit durch die weitere Benutzung noch stärker geschädigt werden.

Klicken der Festplatte

Ein sicheres Anzeichen für einen mechanischen Ausfall ist starkes, sich wiederholendes Klicken. Das wird auch als "Click of Death" bezeichnet. Die Lese/Schreibgabel hat auf der Festplattenoberfläche aufgesetzt, diese beschädigt und versucht sich erneut zu positionieren, um doch noch Daten zu lesen. In diesem Fall die Festplatte sofort abschalten und ausbauen, eine Datenrettung erfolgt mittels dd_rescue/dd_rhelp (s.u.). Vorher ist aber zu prüfen, ob der Fehler nicht nur im Dateisystem liegt.

Festplatte startet nicht

Wenn die Festplatte nicht anläuft besteht noch Hoffnung an alle Daten zu kommen. Beim Einschalten des Computers sollte man hören können, wie der Elektromotor die Festplatte auf Drehzahl bringt. Geschieht dies nicht, meldet bereits das BIOS eine Fehler bei der Plattenerkennung. Den Computer aufschrauben, die Festplatte ausbauen, aber die Kabel angeklemmt lassen, die Festplatte in die Hand nehmen (Isolierung beachten) oder Hand auflegen, Computer einschalten. Man sollte leichte Vibrationen spüren. Es kann auch an einem Problem der Datenübermittlung liegen - Computer ausschalten, das Flachbandkabel/Datenkabel abziehen, aber die Stromversorgung (4poliger Stecker) stecken lassen, Computer einschalten. Läuft die Festplatte jetzt an, liegt ein Fehler im Datenkabel, den Steckbrücken ("Jumper") oder dem Controller vor. Bei IDE-Festplatten ist der Controller meist im Chipsatz der Hauptplatine integriert, sollte der Fehler dort im Controller liegen ist die Hauptplatine auszutauschen. Läuft die Festplatte auch dann nicht an, wenn nur die Stromversorgung gesteckt ist, kann das an einem Lagerschaden oder Kabelschaden innerhalb der Festplatte liegen.
Mit Glück ist tatsächlich nur die Motorverdrahtung der Festplatte beschädigt oder lose, die Steckverbindungen überprüfen und im Zweifelsfall richten, Wagemutige greifen zum Lötkolben. Es gibt noch eine Kamikaze-Rettungsmöglichkeit: Festplatte aufschrauben und die Festplatte manuell durch drehen starten, wenn das Problem in einem Lagerschaden liegt. Ein Lagerschaden führt dazu, das der Motor erst einmal nicht anläuft, weil er die erhöhte Reibung im Lager nicht überwinden kann - dreht man die Platte von Hand, entwickelt er aber u.U. noch genug Kraft um diese auf Drehzahl zu bringen. Das die Garantie verloren geht ist klar, aber durch Öffnen des Gerätes wird die Festplatte Staub ausgesetzt, von Fingerabdrücken durch Berührung mal ganz abgesehen. Eine geöffnete Festplatte kann nur noch einige Stunden genutzt werden, die Zerstörung ist sicher - daher "Kamikaze-Rettung".

Prüfsoftware vom Hersteller

Wenn die Platte noch läuft, aber der Zustand unklar ist, wird sie erst einmal aus dem Betrieb genommen. An einem anderen Computer wird nun ein Prüfprogramm des Festplattenherstellers installiert. Meist erzeugt diese Software Disketten, von denen dann das System mit der verdächtigen Festplatte gestartet wird. Die Diagnose ist meist zuverlässig, wenn ein Fehler gemeldet wird, ist die Platte ein Garantiefall oder Schrottreif. Findet die Software auch bei intensivem Test nichts, liegt eher ein Fehler im Dateisystem vor. Dieser wird dann mit chkdsk (Windows) oder fsck (Linux) behoben. Um die Daten doch noch auszulesen, wendet man folgende Methode an:

Datenrettung selbst oder im Labor?

Diese Frage läßt sich über die Kosten beantworten. Wenn die Daten unwichtig sind, lohnt der Aufwand nicht - mit Hilfe der Prüfsoftware des Festplattenherstellers löscht man die Festplatte und reicht sie zur Garantie ein bzw. verschrottet sie. Wenn die Daten sehr viel Arbeit bedeuten, lohnt sich die Investition in ein Labor und der hohe Geldbetrag - 4stellig wird er wohl werden. Wenn der Verlust an Daten ärgerlich, aber nicht teuer ist, kann man selbst ein Rettung versuchen - und danach die Platte wegwerfen. Jede Eigenarbeit verschlimmert die Situation, also erst überlegen, dann handeln.

Datenrettung mit dd_rescue und dd_rhelp

Warnung: verwenden Sie kein Betriebssystem, das schreibend auf dei Festplatten zugreift. Die aktuellen Betriebssysteme von Microsoft machen das leider alle! Daher wird die Rettung hier mit Programmen für Linux erklärt. Rettungssoftware für Windows kommt alternativ oder in einem zweiten Durchlauf zum Einsatz. Unter Windows ist die Arbeit mit stark beschädigten Festplatten knifflig und Fehleranfällig. Idealerweise installiert man ein Debian Linux oder eine andere Distribution auf einem anderen PC. Dann werden die beiden Programme mit einem Browser wie Lynx (für die Konsole) oder unter einer grafischen Oberfläche heruntergeladen und von Hand installiert. Wenn das Linux wie gewünscht arbeitet und beide Programme funktionieren, fährt man den PC herunter. Nun benötigt man eine weitere, heile Festplatte, die genauso groß oder grösser als die beschädigte Festplatte ist. Die Linux-Systemplatte wird als primärer Master (hda) am ersten IDE-Kanal konfiguriert sein, die heile Festplatte ist als primärer Slave (hdb) zu konfigurieren. Die defekte Festplatte wird als sekundärer Master (hdc) angeschlossen. Nun wird das System wieder gestartet, während des Startvorganges kontrolliert man, ob die Festplatten alle korrekt erkannt werden.

Arbeitsweise von dd

dd ist Programm das blockweise Geräte kopieren kann. Entweder wird ein Gerät auf ein anderes geschrieben, oder die Ausgabe wird in eine Datei umgelenkt (diese Datei wird dann so groß wie das zu sichernde Gerät). Bei diesem Vorgang wird das Dateisystem ignoriert, man kann also beliebige Dateisysteme (auch verschlüsselt) damit kopieren. Der Haken dabei ist, das dd bei Fehlern abbricht. Man kann dieses Verhalten zwar durch den Kommandozeilenparameter "noerror" umgehen, dann fehlen aber die defekten Blöcke. Diese fehlenden Blöcke machen das Dateisystem unlesbar. Daher wird die Modifikation von dd, dd_rescue benutzt: durch den Parameter "-A" schreibt dieses Werkzeug einfach leere Blöcke (also Nullen), wenn Lesefehler auftreten. Dadurch kann das Dateisystem wieder nutzbar gemacht werden: es fehlen zwar Daten, die noch vorhandenen Daten sind jedoch an den richtigen Positionen.

Da dd_rescue beim Lesen von defekten Blöcken extrem langsam wird (eine komplette Kopie kann Wochen dauern), und bei längerer Betriebsdauer immer mehr Schäden auftreten, kann man mittels des Skriptes dd_rhelp zuerst die noch intakten Daten kopieren. Wenn dieses Skript Lesefehler durch dd_rescue feststellt, bricht es das Programm dd_rescue ab und startet es an einer anderen Stelle der Festplatte erneut. Da die defekten Blöcke normalerweise nebeneinander liegen, werden relativ schnell die intakten Bereiche der Festplatte gefunden und gesichert, danach wird erst die Sicherung der defekten Bereiche versucht. Läßt man das Skript unbegrenzt lange arbeiten, entspricht das Ergebnis einem dd_rescue. Dennoch sollte man dd_rhelp benutzen, da es zum einen einer Ausweitung der defekten Bereiche zuvorkommt und zum anderen ein Protokoll erstellt und speichert, so das der Vorgang immer wieder neu gestartet werden kann und der Anwender eine Übersicht über die Situation bekommt. Wenn nur noch defekte Blöcke gefunden werden, kann die Rettungsaktion erst einmal abgebrochen werden.

Die Rettung der Dateien aus dem Dateisystem wird auf der Kopie, die mit dd_rescue erstellt wurde, versucht. Auch bei diesem Vorgang ist sicherzustellen, das nicht auf die Platte geschrieben wird, falls man doch noch weitere Blöcke zu retten versucht oder bei der Dateireparatur etwas schief geht. Im Zweifel erstellt man von der Platte, auf die gesichert wurde, eine weitere Kopie mit dd - da beide Festplatten dann ja intakt sind, geht das relativ schnell.

Im folgenden die Beispielausgabe einer solchen Datenrettungsaktion. Die Festplatte hat rund 60GB, von denen die ersten 20 stark beschädigt sind. Der geringe Anteil der fehlerhaft transferierten Blöcke liegt an den häufigen Sprüngen.

=== dd_rhelp INFO - 97 chunks...
- Jump pos : 10818215.0 - max file size : 58615704.0
- Biggest hole size :  369510 k - total holes : 21006185.5k
- xferd(succ/err) : 37609519.5k(37609467.5k/52.0k)
- EOF is found and is at 58615704.0k.
=== BAR === [ 'x' dd_rescued, '*' next jump point, '|' '.' not dd_rescued ]
x||.|...|...|...|...|...|..||...|...|...|...|...|...|...|...|...||..|...|...|...
|...|...|...|...|...|...|...|...|...|...|...|...|xxxx|...||...|...|...|...|...|.
..|.|x|...|...|...|.|x|...|..||...|.......|.......|......|...*...|x|...|...|..||
...|...|...|...|...||...|x|.....||....||......|.....|......|.....|......|.....|.
.....|.....|......|.....|......|.....|......|....|....||...|x|.....|xxxxxxx|..||
.....|....|xxxxx|.....|.....||.....|......|xxxxx|......|.....|......|xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|.|xxx|....|xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
=== Bar was drawn from 0 to 58615704.0
=== launched via 'dd_rhelp' at 10818215.0k, 184755k <<< ===

Bei schweren Fällen hilft die Einstellung von langsameren Parametern gelegentlich. Dazu bringt man den IDE-Controller auf PIO 0, schaltet DMA und einige andere Features ab. Zusätzlich kann man das dd_rhelp Skript editieren und dort die Blockgrößen verkleinern. Voreingestellte Blockgrößen sind "max_bs=16384" und "min_bs=512". Werte von "max_bs=1024" und "min_bs=64" verlangsamen zwar den Kopiervorgang, können aber auch hilfreich sein. Die passenden Einstellungen sind in jedem Fall auszuprobieren. Die Einstellungen des Controllers und der Festplatte erledigt man mit "hdparm" (im Beispiel für hdc):

hdparm -m 0 -d 0 -p 0 -A 0 -X 08 /dev/hdc

Software-Links

Die Liste erhebt keinen Anspruch auf Vollständigkeit.