GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Interpretieren von dd Input/Output-Fehler

  • Sie verwenden die standardmäßigen 512 Bytes dd Block Größe. Sie würden die Leistung erheblich verbessern, indem Sie eine größere Blockgröße verwenden, sagen wir 128k oder sogar 1m .

  • Es gibt zwei Ausgaben, weil Sie zwei dd ausführen Befehle, der erste ist der Geräteleser und zeigt einen E/A-Fehler an.

  • Angesichts des von Ihnen verwendeten Gerätenamens verwenden Sie wahrscheinlich LVM:/dev/Storage/Storage . Sind Sie sicher, dass dies die gesamte Festplatte ist und nicht eine Teilmenge? Verwenden Sie lvdisplay herauszufinden, was sich hinter diesem Gerätenamen verbirgt.


Sehen Sie in Ihren Kernel-Protokollmeldungen nach (dmesg , oder /var/log/kern.log ) für detailliertere Meldungen der SATA-Treiber, wenn es sich um einen Hardwarefehler handelt. Auch nützlich:smartctl -x /dev/sda . Wenn es nur ein Versuch war, über das Ende einer Partition hinaus zu lesen, könnte das auch im Kernel-Log erscheinen.

Um dd dazu zu bringen, nach einem I/O-Fehler weiterzumachen, um die lesbaren Teile zu lesen, die auf den Fehler folgen, verwenden Sie

dd if=... of=... conv=noerror bs=128k   # it doesn't get any faster beyond about 128k, because of L2 cache size

(Wie in den Kommentaren zum OP erwähnt, ddrescue hat dies und mehr. conv=noerror wurde nach ddrescue zu GNU dd hinzugefügt existiert, IIRC.)

Wenn Sie dort weitermachen möchten, wo Sie aufgehört haben, können Sie den seek verwenden und skip Optionen, mit conv=notrunc .

Wenn Sie wirklich sehen wollen, wie weit dd fortgeschritten ist, sehen Sie sich die Dateiposition seiner stdin an:

cat /proc/$(pidof dd)/fdinfo/0  # dd opens its infile as fd #0

(oder ls -lh die Größe der Ausgabedatei). Das Kopieren einer ganzen Festplatte voller Daten 2 zusätzliche Male, indem man sie durch etwas leitet, erscheint mir albern, als würde es Ihren Computer nur ein kleines bisschen langsamer machen als für die Stunden, die die Kopie dauern wird.

Oder zumindest tun:

dd if=... conv=noerror bs=128k | pv > Storage.img

Linux
  1. Arbeiten mit Eingabeausgabe und Fehlerumleitung in Linux

  2. Wie funktionieren Tastatureingabe und Textausgabe?

  3. Ausgabe welchen Befehls für die Eingabe auf CD verwendet?

  4. Aufteilung der Ausgabe in neue Zeilen?

  5. Ein- und Ausgabe von einer bestimmten ausführbaren Datei abfangen?

Eingabe-Ausgabe-Umleitung unter Linux erklärt

Wie sortiere ich die Ausgabe nach Größe?

Erklärt:Eingabe-, Ausgabe- und Fehlerumleitung in Linux

Shell-Scripting Teil 4 – Eingabe, Ausgabe und Umleitung

Wie interpretiere und behebe ich einen Eingabe-/Ausgabefehler in Linux?

Wie kann ich die Ausgabe von du -h nach Größe sortieren?