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: 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/

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

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: 228 Punkte bei 26 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 11/2014: VIDEOS BEARBEITEN

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Artikelsuche
Erwin Ruitenberg, 09.10.2014 07:51, 1 Antworten
Ich habe seit einige Jahre ein Dugisub LinuxUser. Dann weiß ich das irgendwann ein bestimmtes Art...
Windows 8 startet nur mit externer Festplatte
Anne La, 10.09.2014 17:25, 4 Antworten
Hallo Leute, also, ich bin auf folgendes Problem gestoßen: Ich habe Ubuntu 14.04 auf meiner...
Videoüberwachung mit Zoneminder
Heinz Becker, 10.08.2014 17:57, 0 Antworten
Hallo, ich habe den ZONEMINDER erfolgreich installiert. Das Bild erscheint jedoch nicht,...
internes Wlan und USB-Wlan-Srick
Gerhard Blobner, 04.08.2014 15:20, 2 Antworten
Hallo Linux-Forum: ich bin ein neuer Linux-User (ca. 25 Jahre Windows) und bin von WIN 8 auf Mint...
Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...