PCFreak Logo (c) Der PCFreak

Daten von defekter Festplatte lesen (ddrescue)

Ausgangslage
80GB Notebook Festplatte braucht ca. 20min um Windows XP zu booten und endet dann in einem Bluescreen. Während des Bootvorgangs sind seltsame Festplattengeräusche zu hören, wenn man mit dem Ohr ans Gerät geht. Eine neue Festplatte wurde bereits angeschafft (120GB)

Auftrag
System soll möglichst 1:1 wiederhergestellt werden, da wichtige Daten auf der Festplatte sind.

Durchführung

  1. Platte in bestmöglichen Ausgangszustand bringen
    Festplatte mit Spinrite in Option 2 überprüft (Dauer 4 Tage). 2 defekte Sektoren konnten wiederhergestellt werden, aber es sind immer noch extrem viele sog. „unrecoverable“ Fehler auf der Festplatte vorhanden. S.M.A.R.T. hat schon die maximale Anzahl von Sektoren mittels Remapping umkonfiguriert. – Wir sind am Limit und haben nicht mehr viel Zeit. Ggf. sollte dieser Schritt übersprungen werden, da dabei die Festplatte endgültig den Geist aufgeben könnte!
  2. Versuch die Festplatte mit Acronis TrueImage zu sichern
    Dieser Versuch schlug fehl, da Acronis mit defekten Festplatten nicht umgehen kann und sofort den Kopiervorgang stoppt.
  3. Versuch Daten mit ddrescue zu kopieren
    Die alte und die neue Festplatte sollten elektrisch und datentechnisch an ein funktionsfähiges System angeschlossen werden. Man kann jedoch auch über Netzwerk etc. wegsichern, je nachdem was einem besser liegt.Booten mit Linux-Live-Cd (am besten sollte ddrescue schon enthalten sein).
    Ich habe das Ganze mit einer Kubuntu Live-CD gemacht und habe ddrescue nach Modifikation der sources.list
    (Universal Repos freischalten) live nachinstalliert.Beide Festplatten (alt und neu) sind am System angeschlossen.

    Die Eingabe von fdisk -l zeigt beide Festplatten im System an.
    Wichtig, die Geräte müssen als Device existieren. Von einer Festplatte, die nicht unter /dev/xxx gelistet ist kann man nichts mehr runterkopieren.

    Nun starten wir den Kopiervorgang mit ddrescue. Wichtig dabei ist, unbedingt ein Logfile anzugeben (welches natürlich idealerweise an einem externen Speicherort abgelegt werden sollte, weil über dieses Logfile jederzeit eine Abbruch/Pausieren des Kopiervorgangs möglich ist und eine Fortsetzung an genau der gestoppten Stelle möglich ist, z.B. notwendig, wenn man die defekte Festplatte immer mal wieder ausbauen und über Nacht in den Kühlschrank stellen muss.

    Hier die Hilfe von ddrescue

    GNU ddrescue – Data recovery tool.
    Copies data from one file or block device to another,trying hard to rescue data in case of read errors.

    Usage: ./ddrescue [options] infile outfile [logfile]
    Options:
    -h, –help display this help and exit
    -V, –version output version information and exit
    -b, –block-size= hardware block size of input device [512]
    -B, –binary-prefixes show binary multipliers in numbers [default SI]
    -c, –cluster-size= hardware blocks to copy at a time [128]
    -C, –complete-only do not read new data beyond logfile limits
    -d, –direct use direct disc access for input file
    -e, –max-errors= maximum number of error areas allowed
    -i, –input-position=

    starting position in input file [0]
    -n, –no-split do not try to split error areas
    -o, –output-position=
    starting position in output file [ipos]
    -q, –quiet quiet operation
    -r, –max-retries= exit after given retries (-1=infinity) [0]
    -s, –max-size= maximum size of data to be copied
    -t, –truncate truncate output file
    -v, –verbose verbose operation
    Numbers may be followed by a multiplier: b = blocks, k = kB = 10^3 = 1000,Ki = KiB = 2^10 = 1024,
    M = 10^6, Mi = 2^20, G = 10^9, Gi = 2^30, etc…Einige neuere Funktionen wie -d stehen erst in neueren Versionen von ddrescue zur Verfügung, wenn nötig eben halt selbst kompilieren.

    Ich habe bewusst -r0 gewählt, da ich ewige Leseversuche vermeiden wollte, damit die defekte Platte weitestgehendst geschont wird. Mit -d kann man den Kernel umgehen und direkt vom Gerät lesen, was u.U. auch bessere Ergebnisse bringt.

    Der Befehl könnte also ungefähr so aussehen:

    ddrescue -r0 -v -d -n /dev/sda /dev/sdb /mnt/usbstick/ddrescue.log

    /dev/sda = Quelle
    /dev/sdb = Ziel (in meinem Fall die neue Disk, könnte aber auch eine Datei sein z.B. target.img)
    /mnt/usbstick/ddrescue.log = Logfile auf externem USB-Stick

    Man kann nun jederzeit mit Ctrl+C den Kopiervorgang abbrechen und mit obigem Befehl wieder fortsetzen.

    Im Nachhinein muss ich sagen ist es besser als Ziel für den Kopiervorgang ein File auf einer anderen Festplatte anzugeben (nicht die neue Platte), damit man auf jedenfall eine Sicherungskopie der maximal lesbaren Daten als Datei hat. !!! Achtung, bitte beachten, die Festplatte auf die man in ein File sichert muss entsprechend große Dateien abkönnen! Da der Kopiervorgang sehr lange dauert kann man ggf. auch zur Laufzeit die Zieldatei komprimieren um Platz zu sparen.

    Nach ca. 72 Stunden war dann der Kopiervorgang abgeschlossen.

    Natürlich habe ich die neue Festplatte nicht sofort ins Notebook eingebaut und gestartet, sondern von der Kopie ein Acronis Image abgezogen.

Dann die Festplatte ins Notebook eingebaut und gebootet – Voila XP startet superschnell und ohne Probleme.

Anschließend ein

chkdsk /f C:

gefolgt von einem Reboot und nach ca. 20 Minuten chkdsk hatte ich ein lauffähiges System.

Ca. 12MB Daten konnten nicht gerettet werden, welche Dateien das auch immer waren.

Ich habe vom System dann die wichtigen Daten kopiert und trotzdem neu installiert, da nicht festgestellt werden konnte, welche Daten am System fehlten.

Ich hoffe diese Anleitung hilft irgendjemandem weiter, der sich ggf. in der gleichen Situation befindet.

Wichtigste Erkenntnis:
Es gibt immer eine Lösung und man muss viel Zeit haben!

1 Comment so far

  1. Zero on Oktober 16th, 2007

    hätte ich vor ein paar monaten echt verwendung für gehabt. Auch Notebookplatte gefreckt, Windows verweigerte die Arbeit mit der Platte. Auch alles mögliche probiert, chkdsk, scandisk, usw. hat alles nix geholfen. Auch der Betrieb in der Kühltruhe hat nix dran geändert. Irgendwann hab ich dann aus lauter frust einfach versucht mit nem Kubuntu Live System auf die Platte zuzugreifen, was bis auf ein paar lesefehler in irgendgendwelchen mp3\’s wunderbar funktioniert hat. Ich hab so wenigstens alle meine wichtigen Daten retten können. Damit nach mir niemand anders rettungsversuche auf meiner defekten platte macht hab ich diese noch mit ner Axt in zwei relativ gleich große Teile gestückelt und im Hausmüll entsorgt 😉 – hätt ich ddrescue damals schon gekannt hätt ich wohl einen ähnlichen blog dazu verfassen können. Fazit: Wer wirklich sucht, der findet scheinbar auch… und natürlich is an der Sache mit der Zeit auch ein Funke Wahrheit dran…