ddrescue --generate-mode は再開用のマップファイルを生成しましたが、トリミングされていないブロックが欠落していますか?

ddrescue --generate-mode は再開用のマップファイルを生成しましたが、トリミングされていないブロックが欠落していますか?

故障した 2TB WD ドライブを NAS から復旧するために ddrescue を起動しました。ログファイルを指定したのですが、残念ながら起動可能なフラッシュドライブから Ubuntu を試用モードで実行していたため、別途マウントしたドライブにログファイルを書き込んでいなかったため、電源が 11% 程度切れたときにログファイルが失われたことに気付きました。

マニュアルの第 14 章では、生成モードが機能する可能性があると記載されていたため、次を実行しました。

ddrescue --generate-mode infile outfile mapfile

回復先のドライブは新品のドライブなので、ドライブ上に古いデータは存在していなかったため、機能することを期待していました。

現在、SSD にインストールされた Ubuntu を実行しているので、生成されたマップファイルを使用して、ddrescue を再度実行しました。

ddrescue -f -n -r1 /dev/sda /dev/sdb /tmp/ddrescue.log

これは大部分でうまくいったようで、回復プロセスは 11.5% マークあたりで、中断したところから再開されました。ただし、クラッシュ前に ddrescue が読み取りエラーを 1 つ特定し、約 20MB の非トリミング ブロックを表示していたのに、新しいマップファイルでプロセスを開始すると、読み取りエラーは 0 件、非トリミング ブロックは 0 件とマークされていました。8 時間実行した後、エラーが 2 件、非トリミング ブロックが 29696B と表示されていますが、ddrescue は既に復旧済みとしてマークされている古いデータ部分を参照していないため、これらは新しい読み取りエラーであると想定しています。

ddrescue は後続のパスで元の読み取りエラーを検出するのでしょうか、それともそのエラーは永久に消えてしまい、それらのブロックを見つけて再試行する唯一の方法は、新しいマップファイルを使用して最初からすべてをやり直すことでしょうか?

すべてではないにしても、古いドライブから可能な限り回復したいので、必要なら最初からやり直すつもりです。

これに関して何か助けていただければ幸いです。

答え1

について--generate-mode

Ddrescue は、場合によっては、と の (部分的な) コピーmapfileから、正確な とほぼ同じ品質の近似 を生成できます。これは、すべてゼロを含むセクターが復旧されなかったと単純に想定することによって行われます。infileoutfilemapfile

ソース

最初の試行では、ソース ディスクのエラーのあるセクターに対応するターゲット ディスクのセクターには書き込まれませんでした。同様に、スキップされたセクターに対応するセクターにも書き込まれませんでした。ターゲット ディスクがまだ書き込まれていないセクターからすべてゼロを返すと仮定すると、後者はddrescue --generate-modeこれらすべてのフラグメントを「復旧されていない」と分類しました。

--generate-modeセクターがゼロでいっぱいかどうかは、ソースディスクの未試行セクター、未トリミング、未スクレイピング、または不良セクターに対応しているために判断できません。または、コピーされたがたまたますべてゼロを含む正常なセクターです。ゼロでいっぱいのセクターがある場合は、outfileおそらく読み取られていないということです。多分読み取り可能です。 は、--generate-mode近似値を作成するときに、そのようなセクターを未試行として分類するだけなので、を実際に使用するmapfilefuture は、セクターの読み取りを試行 (または再試行) します。ddrescuemapfile

究極的にはddrescue、一部のセクターを不必要に再読み取りすることがあります。つまり、読み取られたセクターがすべてゼロを含むため、--generate-mode試行されていないセクターのように見えるセクターです。これは、あるとしても、通常は小さな不便です。

開始時にターゲット ディスクにゼロ以外のセクターがない限り、最初からやり直す必要はありません。そのようなセクターは、--generate-mode実際にはそうでなくても、復元されたデータであると認識されます。ターゲット ディスク (新品のディスク) にはゼロのみが含まれていると認識しています。その認識が正しい場合は、最初からやり直す必要はありません。

あなたの考えが正しければ、最初の試行からの誤ったセクターは--generate-mode「救済されなかった」と分類され、あなたの究極(まだ実行中)はddrescueそれを再度読み取ろうとしているか、または読み取ろうとしています。

関連情報