/dev/Storage/Storage
パイプを使用して(LVMの下のLV)をイメージファイルにコピーしましたdd | pv | dd
。エラーを報告しますが、ディスクのコピーが完了したのか、エラーが原因で停止したのかをdd
知りたいです。dd
2つの異なる出力を提供するので、わかりません。 1つは上部にエラーがあり、もう1つはエラーがありません。私はその間に0.1秒だけ追加され、追加データがないので推測していいえと言いたいのですが、実際にあるかどうかはわかりません。
/dev/Storage/Storage
1TB ディスク (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=noerror
GNU ddが存在した後に追加されましたddrescue
。)
中断した部分から続行するには、オプションseek
もskip
使用できます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
答え2
デフォルトのブロック
dd
サイズである512バイトを使用しています。より大きなブロックサイズ(128k
偶数など)を使用すると、パフォーマンスが大幅に向上する可能性があります1m
。2つのコマンドを実行するため、2つの出力があります
dd
。 1つ目は、I/Oエラーを表示するデバイスリーダーです。お使いのデバイス名を見ると、おそらくLVM:を使用しています
/dev/Storage/Storage
。これはサブセットではなくディスク全体ですか?lvdisplay
デバイス名の後に隠れた意味を見つけるために使用されます。