ディスクイメージのパーティションを編集することは可能ですか?


1

ddrescueを使用して、クラッシュした2TBドライブを回復しようとしています。それは今一週間以上実行されていて、ちょうど終わりに近づいて、このエラーで明らかにスペースを使い果たしました:

ddrescue: write error: No space left on device

コピー先の2TBの空のドライブだったので、メーカーごとに実際のドライブ容量にばらつきがあると推測しています。ドライブは満杯ではなく、クラッシュ時に約600GBしか使用されず、合計254MBのエラーが20個しかなかったため、復元されたディスクイメージにはそこにあったデータの大部分が実際にあると推測されます。

このコマンドを使用してイメージをマウントしようとすると:

sudo mount -o loop,ro,offset=0 rimage /mnt/resc

それは失敗し、これはdmesgに表示されます:

[999150.073373] EXT4-fs (loop0): bad geometry: block count 488378646 exceeds size of device (480723271 blocks)

1)イメージのブロック数を編集してマウントできるようにする方法はありますか?

2)その場合、その後ディスクイメージのパーティションサイズを縮小することは可能ですか?

回答:


1

ディスク容量の問題

復元先のファイルシステム上のイメージファイルに書き込みを行っており、ファイルシステムにオーバーヘッドがあるため、復元先のディスク領域が不足した可能性があります。あなたは可能性があるとディスク容量の問題で逃げることができた--sparseのフラグddrescue

私は別のイメージを作成することを強くお勧めします。今回は、より大きなハードドライブまたはを使用して、スペースの問題を回避しddrescue --sparseます。

実際に使用ddrescueして、ファイルシステムをスキップして、リカバリ先のハードドライブ全体を上書きできます。回復先のハードドライブが/dev/sdcである場合、ddrescueに書き込む代わりに書き込みを行うように指示しますrimage。回復先のハードドライブは、障害のあるハードドライブのクローンから回復不能な部分を除いたもののように動作します。

デバイスイメージのサイズ変更

ddrescueイメージが故障したドライブ全体のものであると想定される場合、故障したドライブ/dev/sdbのデバイスパスに置き換えて次のコマンドを実行します。

sudo blockdev --getsize64 /dev/sdb

出力(例500107862016)を取得し、次/path/to/rimageを使用してリカバリイメージのサイズを変更しますtruncate

truncate -s 500107862016 /path/to/rimage

注意:以下のサイズがそのサイズに切り捨て/path/to/rimage ますデータの損失につながります。

/path/to/rimagewith の現在のサイズをdu -b --apparent-size /path/to/image確認し、返されたサイズが指定したサイズよりも小さいことblockdevを確認してください。

これで、復元されたイメージは予想されるフルサイズにmount.ext4なります。

パーティションイメージのサイズ変更

ddrescue故障したドライブのパーティションで実行していた場合、代わりに次のコマンドを使用してパーティションのサイズを取得し、パーティション/dev/sdb1のデバイスパスに置き換えます。

sudo blockdev --getsize64 /dev/sdb1

次に、出力(例500106788864)を取得し、次/path/to/rimageを使用してリカバリイメージのサイズを変更しますtruncate

truncate -s 500106788864 /path/to/rimage

注意:以下のサイズがそのサイズに切り捨て/path/to/rimage ますデータの損失につながります。

/path/to/rimagewith の現在のサイズをdu -b --apparent-size /path/to/image確認し、返されたサイズが指定したサイズよりも小さいことblockdevを確認してください。


ありがとう、truncateを使用して取得でき、イメージを正常にマウントできるようになり、そこにデータを表示できるようになりました(一部のアイテムを削除できないため、一部は完全に失敗しましたが、ar / wエラーが発生します)。パーティションのサイズを変更することについての私の質問は、パーティションのイメージのサイズを変更することではなく、partedまたは他のツールを使用してイメージ自体のパーティションを縮小する方法があるため、データを移動することができます3番目のドライブを必要とせずに、ドライブにイメージを保存します。さらに1週間のddrescueの再実行は非常に魅力的ではありません。
マイケルVanDeMar

@MichaelVanDeMar:特にデータに穴がある場合、ファイルシステムはサイズ変更時に整合性を保証できないため、提案したものはデータ損失のリスクがあります。あなたのデータがあなたにとって重要であるならば、あなたがあなたが得ることができるすべてを手に入れたと確信するまで、あなたはすべての一つのビットを保存しようとするべきです。(ただし、既にイメージを変更しているようです) 。復元したデータのサイズを変更することはお勧めしません。
デルティック

現在はディスク全体を占有しているため、縮小するまでコピーできません。イメージ上のパーティションを縮小するために、parted、gparted、またはその他のディスクユーティリティを使用する方法はありますか?マウントしたときに、Fedoraのディスクユーティリティを使用すると、パーティションを編集するオプションがグレー表示され、マウントされていないイメージを指す方法がわかりません。さらに悪いケースとして、何か不具合があり、絶対にやらなければならない場合は、いつものように--sparseを使用するか、イメージではなくディスク自体に書き込むことからやり直すことができます。
マイケルVanDeMar

@MichaelVanDeMar:要するに、ファイルシステムはサイズ変更を担当していますが、データが破損しているということは、ファイルシステムがそれ自体で信頼できないということです。その結果、元のデータをできるだけ多く保存する必要があることを強調します。外付けハードドライブを予備にできる場合は、qemu-img convert -O qcow2 -cp /path/to/rimage /path/to/exthdd/rimage.qcow2すべてのデータを保持しながらスペースを大幅に節約できます。できない場合は、fsck内部のパーティションを使用する必要があります/path/to/rimage
デルティック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.