-
デフォルトの 512 バイト
dd
を使用しています ブロックサイズ。128k
など、より大きなブロック サイズを使用すると、パフォーマンスが大幅に向上します。 または1m
. -
2 つの
dd
を実行しているため、2 つの出力があります。 コマンド、最初のものはデバイス リーダーで、I/O エラーを示しています。 -
あなたが使用しているデバイス名を考えると、LVM を使用している可能性があります:
/dev/Storage/Storage
.これはディスク全体であり、サブセットではありませんか?lvdisplay
を使用 このデバイス名の背後にあるものを把握します。
カーネル ログ メッセージ (dmesg
、または /var/log/kern.log
) ハードウェア エラーの場合は、SATA ドライバーからの詳細なメッセージを参照してください。こちらも便利です: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
これ以上あります。 conv=noerror
ddrescue
の後に GNU dd に追加されました 存在した、IIRC.)
中断したところから再開したい場合は、seek
を使用できます と skip
オプション、conv=notrunc
付き .
本当に dd がどれだけ進んでいるか知りたい場合は、stdin のファイル位置を見てください:
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