Home / LinuxUser / 2004 / 08 / Mit dd_rescue defekte Partition wiederherstellen

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

Aufmacher Artikel

Rettungsanker

Mit dd_rescue defekte Partition wiederherstellen

01.08.2004 Wer regelmäßig seine Daten sichert, braucht vor Platten-Versagen keine Angst zu haben – doch manchmal vergisst man die regelmäßigen Backups. Verabschiedet sich dann die Festplatte mit einem Lesefehler, ist guter Rat teuer. Oder umsonst, wenn Sie "dd_rescue" verwenden.

Mögliche Gründe für das Ausfallen einer Festplatte gibt es viele: Wenn die Platte einen Head-Crash hat und der Schreib-/Lesekopf zerstört ist, kann nur noch der Fachmann helfen; wie ein Datenrettungsdienst selbst stark beschädigten oder verbrannten Festplatten noch Informationen entlockt, hat unsere Schwesterzeitschrift Linux-Magazin im vergangenen Jahr beschrieben [1].

Oft ist der Schaden aber gering: Einzelne Sektoren sind nicht mehr lesbar, die "Selbstheilungskraft" der Festplatte, die für solche Fälle Reservesektoren bereit hält, ist erschöpft.

Im günstigen Fall können Sie die Partitionen einer defekten Platte noch mounten, nur bei wenigen Dateien (vielleicht nur bei einer) erhalten Sie einen Lesefehler. Dann reicht es aus, alle Dateien der betroffenen Partition auf eine neue Festplatte zu kopieren und danach die alte Platte zu entsorgen oder auf dem Garantieweg auszutauschen. Weiter benutzen sollten Sie eine defekte Platte nicht, auch wenn sich mit Hilfe von badblocks (siehe Kasten 1) defekte Sektoren explizit ausblenden lassen – die Gefahr ist einfach zu groß, dass die bereits angeschlagene Platte in Kürze noch weitere Defekte zeigt.

Kasten 1: Medien-Check mit badblocks

Das Tool badblocks ermittelt fehlerhafte Blöcke auf Datenträgern wie Disketten und Festplatten. In Zusammenarbeit mit fsck können die entdeckten Fehlerstellen im Dateisystem als unbenutzbar markiert werden, dazu muss man fsck die Ausgabe von badblocks übergeben:

badblocks /dev/hdb5 > /tmp/bad-blocks
fsck -t ext2 -l /tmp/bad-blocks /dev/hdb5

Soll hingegen ein beschädigter Datenträger nur neu formatiert werden, geht es auch ohne expliziten Aufruf von badblocks: Die mkfs-Kommandos kennen die Option -c (check) und rufen dann vor dem Formatieren selbständig badblocks auf:

mke3fs -c /dev/hdb5

Mounten schlägt fehl

Unangenehmer ist die Situation, wenn Sie eine Partition nicht mehr mounten können, weil im vorderen Bereich wichtige Verwaltungsdaten nicht lesbar sind und auch von fsck nicht mehr repariert werden können, weil die defekten Blöcke auch nicht schreibbar sind (siehe Kasten 2).

Dann hilft nur Eines: Wenn Sie eine Kopie des ganzen Dateisystems erzeugen, die Sie auf einer zweiten Platte ablegen, können Sie diese Image-Datei mit fsck bearbeiten und so möglicherweise die Daten retten – denn Dateisysteme enthalten an verschiedenen Stellen Kopien der Verwaltungsinformationen.

Kasten 2: Plattenfehler

Lesefehler, die das Mounten einer Partition verhindern, zeigen sich im Kernel-Log wie folgt:

Feb  6 05:28:42 server kernel: reiserfs: found format "3.6" with standard journal
Feb  6 05:28:47 server kernel: reiserfs: enabling write barrier flush mode
Feb  6 05:28:47 server kernel: reiserfs: using ordered data mode
Feb  6 05:28:50 server kernel: hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error }
Feb  6 05:28:50 server kernel: hdb: dma_intr: error=0x40 { UncorrectableError }, LBAsect=19616787, sector=65680
Feb  6 05:28:50 server kernel: end_request: I/O error, dev 03:42 (hdb), sector 65680
Feb  6 05:28:50 server kernel: journal-459: unable to read  journal header
Feb  6 05:28:50 server kernel: sh-2022: reiserfs_read_super: unable to initialize journal space

Knoppix: dd_rescue on board

Das Tool dd_rescue von Kurt Garloff [2] ist eine Variante des Unix-Klassikers dd, die speziell für die Datenrettung entwickelt wurde. Knoppix enthält dd_rescue, so dass Knoppix-Benutzer auf eine Installation aus den Sourcen verzichten können. Alle anderen finden die Quellen auf der dd_rescue-Homepage oder auf der LinuxUser-CD, wir beschreiben hier aber den Einsatz mit Knoppix.

dd_rescue hat gegenüber dd (neben seiner einfacheren Bedienung) zwei Vorteile: * Gibt es beim Kopieren Lesefehler, bricht dd_rescue den Kopiervorgang nicht ab, sondern schreibt anstelle des unlesbaren Blocks einen gleich großen Bereich Nullen in die Zieldatei. Damit erhalten Sie am Ende ein vollständiges Abbild der Partition, in dem nur die unlesbaren Bereiche durch Nullen ersetzt sind. *

dd_rescue arbeitet mit zwei Blockgrößen für die Lesezugriffe: So lange kein Fehler auftritt, werden große Blöcke gelesen (Vorgabe: 16384 Byte), nach einem Fehler geht es mit kleineren Blöcken weiter (Vorgabe: 512 Byte). Beide Werte können Sie über Optionen verändern.

Vorbereitung

Als Vorbereitung bauen Sie die defekte Platte in einen Rechner ein. Außerdem benötigen Sie eine weitere Platte, die auf mindestens einer Partition genug Speicherplatz für die folgenden Schritte hat: Es sollte mindestens doppelt so viel Platz frei sein, wie die betroffene Partition der defekten Platte belegt.

Nach dem Booten von Knoppix öffnen Sie eine Konsole und werden darin mit sudo su (ohne Passworteingabe) zum Administrator root. Mit fdisk -l geben Sie die Liste der Partitionen aus.

Haben Sie die fehlerhafte Partition identifiziert, kann die Rettungsaktion auch schon fast beginnen. Zunächst mounten Sie eine Partition auf der zweiten (fehlerfreien) Platte, z. B. nach /mnt:

mount /dev/hdb1 /mnt

Wenn die betroffene Partition /dev/hda5 heißt, können Sie nun dd_rescue wie folgt aufrufen:

dd_rescue /dev/hda5 /mnt/image.dat

Die dd-typischen Parameter if= und of= sind bei dd_rescue nicht nötig: Der erste und zweite Parameter geben Quelle und Ziel an. Während das Programm arbeitet, zeigt es ständig an, wie weit es schon fortgeschritten ist. Bei Lesefehlern wird eine Warnung ausgegeben. Kasten 3 zeigt einen Beispielaufruf von dd_rescue und die Ausgaben.

Kasten 3: Ausgaben von dd_rescue

AUF KEINEN FALL DIESE ZEILEN UMBRECHEN. ZUR NOT 3-SPALTIG SETZEN

root@ttyp0[knoppix]# dd_rescue /dev/hda5 /mnt/image.dat
dd_rescue: (info): ipos:    859444.5k, opos:    859444.5k, xferd:    859444.5k
                   errs:      0, errxfer:         0.0k, succxfer:    859444.5k
             +curr.rate:    30166kB/s, avg.rate:    41084kB/s, avg.load: -0.6%
dd_rescue: (warning): /dev/hda5 (859444.5k): Input/output error!
dd_rescue: (info): ipos:  80043264.0k, opos:  80043264.0k, xferd:  80043264.0k
                   errs:      1, errxfer:         0.5k, succxfer:  80043263.5k
             +curr.rate:    30166kB/s, avg.rate:    41084kB/s, avg.load: -0.6%
dd_rescue: (info): /dev/hda5 (80043264.0k): EOF
Summary for /dev/hda5 -> /mnt/image.dat:
dd_rescue: (info): ipos:  80043264.0k, opos:  80043264.0k, xferd:  80043264.0k
                   errs:      0, errxfer:         0.5k, succxfer:  80043263.5k
             +curr.rate:        0kB/s, avg.rate:    41084kB/s, avg.load: -0.6%
root@ttyp0[knoppix]# _

Wenn die Fehler auf der Platte minimal sind, erhalten Sie so in kurzer Zeit ein Image der beschädigten Partition, in dem alle noch lesbaren Daten am richtigen Ort stehen.

Großer Schaden – links und rechts gucken

Wenn ein größerer Bereich der Platte beschädigt ist, kann es vorkommen, dass dd_rescue ab einer bestimmten Stelle keine sichtbaren Fortschritte mehr macht, weil es nur noch defekte Blöcke erkennt. In diesem Fall können Sie das Tool abbrechen und dd_rescue erneut aufrufen, diesmal aber eine andere Zieldatei und zusätzlich die Option -r angeben:

dd_rescue -r /dev/hda5 /mnt/image-tail.dat

Dann tastet sich dd_rescue von hinten rückwärts an die fehlerhafte Stelle heran. Auch dieser Schritt wird nach einer Weile auf viele Fehler stoßen, so dass Sie wieder abbrechen können. Aus der Größe der beiden erhaltenen Dateien image.dat und image-tail.dat sowie der Größe der Partition berechnen Sie dann, wie groß das fehlende Zwischenstück ist, erstellen mit

dd if=/dev/zero of=/mnt/image-zero.dat bs=1024 count=N

eine leere Datei passender Größe und setzen schließlich alle Dateien zu einem Image zusammen:

cd /mnt; cat image.dat image-zero.dat image-tail.dat > image-full.dat
Abbildung 1

Abbildung 1: Ruft man "dd_rescue" mit der Option "-h" auf, verrät es die Optionen.

Reparieren

Bevor Sie die von dd_rescue erstellte Image-Datei weiterbehandeln, ist es ratsam, eine Sicherheitskopie anzulegen; daher stammt auch die oben gegebene Empfehlung, mindestens zweimal so viel freien Platz zu haben, wie die Partition benötigt:

cp /mnt/image.dat /mnt/image.dat.copy

Die Image-Datei reparieren Sie dann mit der zum Dateisystem passenden fsck-Variante und geeigneten Optionen, im Fall eines Reiser-Dateisystems z. B. mit

reiserfsck --fix-fixable /mnt/image.dat

oder

fsck.ext3 -p /mnt/image.dat

für ein Ext3-Dateisystem.

Danach mounten Sie das reparierte System probeweise (und read-only):

mkdir /temp
mount -o loop,ro /mnt/image.dat /temp

Jetzt können Sie unter /temp auf die Daten der beschädigten Partition zugreifen und diese z. B. mit cp -a /temp ZIEL in ein anderes Verzeichnis sichern oder mit

rsync -av --rsh="ssh" /temp root@rechner:ZIEL/

über das Netzwerk auf einen anderen Rechner kopieren.

Glossar

dd

Das klassische Unix-Tool "dd" kopiert Daten zwischen Blockgerätedateien und/oder regulären Dateien. Es wird z. B. benutzt, um ein Disketten-Image auf Diskette zu schreiben. (Die Abkürzung steht für "copy and convert" – als das Programm entwickelt wurde, war die nahe liegende Abkürzung "cc" schon für den C-Compiler vergeben.)

Infos

[1] Plattenrettung, Mirko Dölle: "Spanabhebende Datenverarbeitung", Linux-Magazin 07/2003, S. 64

[2] dd_rescue, http://www.garloff.de/kurt/linux/ddrescue/

Tip a friend    Druckansicht Bookmark and Share
Kommentare
besten dank!!
mv (unangemeldet), Montag, 12. November 2012 18:46:02
Ein/Ausklappen

super alte Anteilung und dennoch gültig und vorallem funktionierend! Besten DANK!!!


Bewertung: 220 Punkte bei 8 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

42716 Hits
Wertung: 195 Punkte (28 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...