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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

KDE Plasma Workspaces 4.8
(306 Punkte bei 32 Stimmen)
SUSE12
(173 Punkte bei 4 Stimmen)
Pardus Linux am Ende?
(164 Punkte bei 4 Stimmen)
OpenSuse 12.1-Service Kit 01/12
(161 Punkte bei 4 Stimmen)
Meinst Du: Patch CD Updates?
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

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/

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

18558 Hits
Wertung: 179 Punkte (9 Stimmen)

Schlecht Gut

Infos zum Autor

Hans-Georg Eßer

Hans-Georg Eßer

Hans-Georg Eßer ist Chefredakteur der Zeitschrift EasyLinux, Doktorand an der Uni Erlangen-Nürnberg und seit Mitte der 90er begeisterter Linux-Anwender.


Infos zur Publikation

Infos zur Publikation

title_2012_02

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 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 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Knoppix: Bootvorgang mit Cheatcode beschleunigen
Knoppix: Bootvorgang mit Cheatcode beschleunigen
Marcel Hilzinger, 18.01.2012 21:05, 0 Kommentare

Die Bootsequenz der Live-Distribution sucht beim Start zunächst auf Festplatten, dann auf USB-Sticks und erst dann in den DVD-Laufwerken (/dev/sr* oder /dev/scd*) nac...

Aktuelle Fragen

OpenSuse 12.1-Service Kit 01/12
Christoph-J. Walter, 28.01.2012 08:52, 2 Antworten
Hallo Gemeinde, ich habe 12.1 neu installiert. Alles in Ordnung! Nun möchte ich das Service Kit (...
Ubuntu 11.10 konfigurieren
Michael Hinz, 27.01.2012 17:52, 0 Antworten
Ubuntu läuft bei mir. Allerdings nur, wenn die Daten-CD eingelegt ist. Unabhängig von Bios-Einste...
SUSE12
Jörg Müller, 25.01.2012 14:27, 5 Antworten
Hallo Gemeinde Ich habe schon ziemlich lange auf einem Rechner Linux laufen, bin also nicht ganz...
Hat jemand Erfahrung beim Einsatz einer Kinect / OpenNI?
GoaSkin , 24.01.2012 23:35, 0 Antworten
Hallo, ich habe mir eine Kinect zugelegt, um zu schauen, was man damit unter Linux so machen k...
Kollaboration - Zeichnen auf mehreren Geräten gleichzeitig
Ludwig jun. B., 19.01.2012 11:17, 4 Antworten
Schönen guten Tag, ich suche aktuell eine Software für Linux/Windows (eines von beiden), welch...