web-dev-qa-db-ja.com

Advanced Formatドライブに直接アクセスしてddrescueを実行するには、どのセクターサイズを選択すればよいですか?

最初に次のコマンドを実行して、AF/512eHDDのイメージングを開始しました。

    ddrescue -n /dev/sdb2 drive_c.img mapfile.log

完了したら、mapfile.logのバックアップを作成し、ドライブの物理セクターサイズである4Kを使用して、直接ディスクアクセスで分割フェーズを実行することにしました。

    ddrescue -d -b4096 -r3 /dev/sdb2 drive_c.img mapfile.log

512バイトのセクターサイズを選択した場合、不良セクターからさらにスクレイピングしたでしょうか?

これを書いている時点で、分割段階が終了し、不良セクタが2回再試行されています。当然、マップファイル内のほとんどすべての不良ブロックはn×4Kサイズです。同じコマンドを512bセクターで実行した場合、それらをさらに削ることができますか?

考えと混乱

まず第一に、直接ディスクアクセスの使用が適切であったかどうかさえわかりません。

Ddrescueの情報ファイルは、次の場合に直接ディスクアクセススイッチを要求します

ログファイル内の位置とサイズは、常にセクターサイズの倍数です。

つまり、

カーネルはディスクアクセスをキャッシュし、それらをグループ化します。

したがって、カーネルがリクエストを「グループ化」していた場合、マップファイルの最小ブロックは8Kまたは16Kである必要があります。しかし、私の場合、マップファイルには、最初の実行が完了した後、読み取り不能でレスキューされた512バイトのブロックがたくさん含まれていました。

2回目の実行中に、512bブロックの大部分が4Kブロックにマージされました。たとえば、分割フェーズの前に非分割ブロックに隣接していた512 bの不良セクタが、隣接する不良セクタとマージされました。これは私には問題ないようです。おそらく、トリミング段階で、ハードドライブのヘッドが4Kセクターを読み取ることができなかったため、512bの不良セクターがddrescueに返されました。トリミングはそこで終了し、512bセクターに続くブロックは非分割としてマークされました。

正常に見えないのは、このスクリーンショットのように512bの不良セクタがあることです。 512 b bad sector sandwitched

なぜ頭は4Kセクターを読み取ることができるのに、その1/8しか読み取れないと宣言するのでしょうか。物理セクターは頭によって原子的に読み取られるという印象を受けましたか?したがって、その一部が悪い場合、セクター全体が悪いです。

これは明らかに疑問を投げかけます-直接アクセスの有無にかかわらず、512 bセクターサイズでddrescueを実行することにより、4Kの「部分的に不良」セクターからデータを取得することは可能ですか?

明らかに、何かが足し合わない。

ところで、これは私の最初の投稿された質問なので、形式がフォーラムと一致していないか、質問が多すぎる場合は失礼します。しかし、それはさておき、私が見つけたものはすべて、適切なケースから遠すぎるか、明らかに専門知識を前提としているため、メインの質問に関連するトピック、つまり高度なフォーマット、直接ディスクアクセス、カーネルキャッシュなどのいずれかについて意見を得ることができれば幸いです。読者から。

乾杯!

4
redhotborscht

Ddrescueの作者であるAntonioDiazとメールを交換したところ、彼は「高度な形式」のドライブ(つまり、物理セクターが4096バイトで論理セクターが512バイトのドライブ)で使用する正しいパラメーターについて教えてくれました。 ")は:

 -b4096

一度に1つの4096バイトセクターのみを読み取るようにしたい場合(遅い!)、次も指定します。

  -c1

アントニオはStackExchangeでアクティブではありませんが、彼はこの電子メールメーリングリストを介してddrescueをサポートしています。

https://www.mail-archive.com/[email protected]/

メールを[email protected]に送信すると、メールはその概要ページに表示され、彼の回答も整理された形式で表示されます(ただし、もちろんメールアドレスは表示されません)。さらに、Antonioに迷惑をかける前に、そのページを検索して、問題や質問に関する以前の議論を見つけようとすることもできます。 (彼はとても忙しい人なので、時間を無駄にしないでください!)

Ddrescueログファイルに512バイトの「不良」領域が含まれている理由は、最初にデフォルトのセクターサイズである512バイトでddrescueを実行したためです。これは悲惨なことではありませんが、ドライブに512バイトのセクターがあるとddrescueが判断し、読み取りエラーのために0バイトのデータを返す読み取りが発行された場合、ddrescueは512バイトの最初のバイトのみが読み取り不能であると想定し、残り。したがって、ログファイルで不良としてマークされるのは512バイトだけです。

1
Dave Burton

Wikipedia によると、パリティを分散でき、ECCは一部のデータを回復できます。ディスクごとに異なるECCアルゴリズムが存在する場合があります。 512ビットセクターエラーの場合、4Kセクターが部分的にしか損傷しておらず、ECCが4Kセクターの7/8を修正および検証できた可能性があります。

0
Futal