dd衝突 - やるべきこと

dd衝突 - やるべきこと

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

セクタとクラスタサイズはddrescue64MB単位で読み取るように設定されています。これを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エラーが再び発生する可能性が高いため、これを増やす必要があります。使用したチャンクサイズを指定しませんでした(計算にはあまりにも怠惰です)。小さなエラー領域をスキップするために、より小さなチャンクサイズを好むこともできます(それに応じて調整する必要がありますseekskip

使用しないでくださいconv=noerrorそれは物を腐食させる。さらにエラーが発生した場合は、それを使用してくださいddrescue。読み取りエラーを処理するよりも優れたツールですdd

関連情報