dd
数時間走って故障しました。通常、このようなメッセージで
Input/output error
68424+1 records in
68424+1 records out
342124883968 bytes (342 GB) copied, 5114.68 s, 66.9 MB/s
私ができることはありますか?出力を使用する方法はありますか?または、中断した部分から再起動しますか?
バックアップしているパーティションが使用中だと思う理由はありますか?
通常、パーティションの使用量が少なくなると、常に約70〜80%の競合が発生します。
このプロセスには時間がかかりすぎるため、さまざまな試みをするのは難しいかもしれません。
画像として出力します。パーティショニングを使用することもできますが、LVMが関連しています。
sudo lvmdiskscan
/dev/centos/swap [ 3.89 GiB]
/dev/sda1 [ 500.00 MiB]
/dev/centos/root [ 50.00 GiB]
/dev/sda2 [ 465.27 GiB] LVM physical volume
/dev/centos/home [ 411.38 GiB]
/dev/sdb1 [ 931.51 GiB]
3 disks
2 partitions
0 LVM physical volume whole disks
1 LVM physical volume
dd conv=sync,noerror if=/dev/centos/home bs=2000000 of=/run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image
dd: error reading '/dev/centos/home': Input/output error
171062+1 records in
171063+0 records out
342126000000 bytes (342 GB) copied, 4625.3 s, 74.0 MB/s
220856+2 records in
220858+0 records out
441716000000 bytes (442 GB) copied, 6138.1 s, 72.0 MB/s
金曜日の朝
ddrescue --sector-size=2048 --cluster-size=$((256*512)) --sparse --verbose /dev/centos/home /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.map
GNU ddrescue 1.18.1 About to copy 441714 MBytes from /dev/centos/home to /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd7c_dd.image Starting positions: infile = 0 B, outfile = 0 B Copy block size: 131072 sectors Initial skip size: 32 sectors Sector size: 2048 Bytes
Press Ctrl-C to interrupt rescued: 441714 MB, errsize: 8192 B, current rate: 0 B/s ipos: 342124 MB, errors: 1, average rate: 60675 kB/s opos: 342124 MB, run time: 2.02 h, successful read: 9 s ago Finished
しかし、
extundelete sd7c_dd.image --restore-directory /home/ob/p -o /tmp/tt extundelete: Bad magic number in super-block when trying to open filesystem sd7c_dd.image
/dev/mapper/centos-home on /home type xfs (rw,relatime,attr2,inode64,noquota)
答え1
dd
特にイメージが破損する可能性があるため、マウントされたファイルシステムで実行しないでください。バックアップをしたい場合。を使用したい場合がありますtar
。
デバイスが次のように確認された場合いいえ失敗した場合は、seek
(出力ファイル内のNチャンクを探す)フラグとskip=N
(入力のNチャンクをスキップ)フラグを使用できます。 Linuxシステムでは、このdmesg
コマンドを使用して現在のカーネルログを取得できます。
コピーするデバイスに欠陥があるかどうかわからない場合は、ddrescue
デバイスのイメージを取得することをお勧めします。このツールは、読み込みエラーで中断されず、正しく読み取れないブロックの場所を記録します。
答え2
使用しているパーティションのイメージをコピーしようとすると、重大なエラーが発生します。このようなパーティションをコピーするには何も書く必要はありません。絶対にしないでください。
これは、パーティションを停止できる場合に使用でき、ddrescue
欠陥のあるセクターがあるディスクとパーティションを読み取るように設計されています。/dev/sda1
イメージファイルに抽出するための一般的な呼び出しは/media/sda1.img
次のとおりです。
ddrescue --sector-size=2048 --cluster-size=$((64*512)) --sparse --verbose /dev/sda1 /media/sda1.img /media/sda1.map
セクタとクラスタサイズはddrescue
64MB単位で読み取るように設定されています。これを128MBまたは256MBに増やそうとするかもしれませんが、これはスループットが必ずしも増えるわけではありません。
特定の場合、ソースパーティションは実際にはLVMボリュームであるため、これは非常に役立ちます。バックアップしたいパーティションのスナップショットを作成できます。この例ではこれをと呼びますhome-snap
。
lvcreate --snapshot --name home-snap --size 1G /dev/centos/home
ddrescue --sector-size=2048 --cluster-size=$((64*512)) --sparse --verbose /dev/centos/home-snap /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.image /run/media/ob/X_1T_Media1GHD-PCTU3/c/sd9e22_cel.map
lvremove -y /dev/centos/home-snap
答え3
デバイスがコピーされた342 GBを超えると、そのディスクに不良セクタがある可能性があります。
同じ値を使用seek
して復元できます。skip
dd <your previous options here ...> seek=68424 skip=68424 conv=notrunc
68424
同じI / Oエラーが再び発生する可能性が高いため、これを増やす必要があります。使用したチャンクサイズを指定しませんでした(計算にはあまりにも怠惰です)。小さなエラー領域をスキップするために、より小さなチャンクサイズを好むこともできます(それに応じて調整する必要がありますseek
)skip
。
使用しないでくださいconv=noerror
。それは物を腐食させる。さらにエラーが発生した場合は、それを使用してくださいddrescue
。読み取りエラーを処理するよりも優れたツールですdd
。