dd 入出力エラーの説明

dd 入出力エラーの説明

/dev/Storage/Storageパイプを使用して(LVMの下のLV)をイメージファイルにコピーしましたdd | pv | dd。エラーを報告しますが、ディスクのコピーが完了したのか、エラーが原因で停止したのかをdd知りたいです。dd2つの異なる出力を提供するので、わかりません。 1つは上部にエラーがあり、もう1つはエラーがありません。私はその間に0.1秒だけ追加され、追加データがないので推測していいえと言いたいのですが、実際にあるかどうかはわかりません。 /dev/Storage/Storage1TB ディスク (TB = 10 12 = 1000 4 ) または 931.51 GiB (ギガバイト = 2 30 = 1024 3 ) または 1953513472 セクタです。ディスク上のファイルシステムが複雑で、正常に動作しません。

$ sudo dd if=/dev/Storage/Storage | pv | dd of=Storage.img
dd: error reading ‘/dev/Storage/Storage’: Input/output error                   ]
1627672400+0 records ins] [   <=>                                              ]
1627672400+0 records out
833368268800 bytes (833 GB) copied, 75181 s, 11.1 MB/s
776GB 20:53:01 [10.6MB/s] [  <=>                                              ]
1627672400+0 records in
1627672400+0 records out
833368268800 bytes (833 GB) copied, 75181.1 s, 11.1 MB/s

ベストアンサー1

ハードウェアエラーの場合は、カーネルログメッセージ(dmesg、または)でSATAドライバの詳細メッセージを確認してください。/var/log/kern.logまた、便利です。smartctl -x /dev/sdaパーティションの終わりや他のものを読みたい場合は、カーネルログにも表示されることがあります。

I/O エラーの後でも dd を実行し続け、エラーの後に読める部分を読み取るには、次のようにします。

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

(コメントでOPが述べたように、ddrescueこれ以外のものがありました。IIRCはconv=noerrorGNU ddが存在した後に追加されましたddrescue。)

中断した部分から続行するには、オプションseekskip使用できますconv=notrunc


ddがどれだけ離れているかを知りたい場合は、標準入力のファイルの場所を確認してください。

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

(またはls -lh出力ファイルのサイズ)。パイプを介してハードドライブ全体のデータを2回以上コピーすることは、私にとっては愚かなようです。まるでコピーするのにかかる時間よりもコンピュータが少し遅くなるようです。

または少なくともこれを行う:

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

おすすめ記事