2

http://www.gnu.org/software/ddrescue/manual/ddrescue_manual.html

ddrescue のアルゴリズムは次のとおりです (ユーザーはいつでもプロセスを中断できますが、不良ドライブはカーネルがあきらめるまで長い間 ddrescue をブロックする可能性があることに注意してください)。

1) 必要に応じて、マルチパートまたは以前に中断されたレスキューのステータスを説明するログファイルを読み取ります。ログファイルが指定されていないか、空であるか存在しない場合は、すべてのレスキュー ドメインを未試行としてマークします。

2) (第 1 フェーズ、コピー) 入力ファイルの試行されていない部分を読み取り、失敗したブロックをトリミングされていないものとしてマークし、すべてのレスキュー ドメインが試行されるまでスキップします。試行されていない領域のみが大きなブロックで読み取られます。トリミング、分割、および再試行は、セクターごとに行われます。各セクターは最大 2 回試行されます。このステップの 1 つ目は大きなブロック読み取りの一部として、2 つ目は以下のいずれかのステップの 1 つのセクター読み取りとしてです。

3) (第 2 段階; トリミング) 読み取りは、トリミングされていない最大のブロックの前縁から、不良セクタが見つかるまで、一度に 1 つのセクタを転送します。次に、不良セクタが見つかるまで、同じブロックの後縁から一度に 1 セクタずつ逆方向に読み取ります。トリミングされていないブロックごとに、見つかった不良セクタを不良セクタとしてマークし、そのブロックの残りを非分割としてマークします。トリミングされていないブロックがなくなるまで繰り返します。

4) (第 3 段階、分割) 読み取りは、分割されていない最大のブロックの中心から一度に 1 セクタずつ、不良セクタが見つかるまで転送します。次に、不良セクタが見つかるまで、同じブロックの中心から一度に 1 セクタずつ逆方向に読み取ります。--logfile-size', read the smallest non-split blocks until the number of entries in the logfile drops belowログファイルが--logfile-sizeより大きい場合 。残りのすべての非分割ブロックが 5 セクター未満になるまで繰り返します。次に、分割されていない残りのブロックを順番に読み取ります。

5) (第 4 段階、再試行) オプションで、指定された再試行回数に達するまで、不良セクタの読み取りを再試行します。

6) オプションで、後で使用するためにログファイルを書き込みます。

私の理解: ** 彼がコピーしているとき ** 彼はブロックを 1 つずつコピーするだけで、古いブロックをコピーするために後退することはありません。欠陥のあるセクターを含むブロックはすべて、不良とマークされます (ブロック全体)。不良ブロックはトリミングされていないとマークされます。

伝説:

=1 2 3= is a bad BLOCK
[1 2 3] is a good block
x is a bad sector
@ is the read cursor
in a =1 2 3= center sector(2) is always bad

彼がトリミング しているとき、読み取りは、トリミングされていない最大のブロックのリーディング エッジから、不良セクタが見つかるまで、一度に 1 つのセクタを転送します。

=1 2 3= [4 5 6] =7 8 9=@ [10 11 12] =13 14 15=

=1 2 3= [4 5 6] =7 8 9= [10 11 12] =13 @14 15=

次に、不良セクタが見つかるまで、同じブロックの後縁から一度に 1 セクタずつ逆方向に読み取ります。

=1 2 3= [4 5 6] @=7 8 9= [10 11 12] =13 14 15=

=1 @2 3= [4 5 6] =7 8 9= [10 11 12] =13 14 15=

トリミングされていないブロックごとに、見つかった不良セクタを不良セクタとしてマークし、そのブロックの残りを非分割としてマークします。

=1 x 3= [4 5 6] =7 8 9= [10 11 12] =13 x 15=
  1. なぜ彼はこれをしているのですか?? なぜ彼は線形にコピーできず、不良セクタに遭遇するたびにそれをスキップすることができないのですか - 私には彼がしているのは不良ブロックから作業セクタを抽出することだけのようです.

  2. 私は「トリミング」に行き詰まり、分割はさらに悪化しています - 誰かがその文書を読んでそれをすべて説明できますか!

  3. 彼はどうやって再試行することさえできますか! 不良セクタを再試行することはできますが、既にブロックをトリミングして書き出してしまっているため、再試行によって復元されたデータをどのように挿入するのでしょうか?

4

1 に答える 1

2
  1. 不良セクタは自然にグループで発生します...作業中のドライブをハンマーで軽く叩くと、ヘッドが表面を傷つける可能性が高くなります...回転している...そのため、ストレージ表面に素敵な同心円が作成されます. 不良ブロックの後に不良ブロックを試すのは通常、時間の浪費です...そしてほとんどの場合、不良ドライブにはあまり時間がありません...

  2. 未知の範囲をトリミングした後、エッジに不良セクタがある可能性が最も高い - そのため、中央で分割が開始されます...これはおそらく健全です...

  3. fseek()などを使用してターゲットセクターをシークします... ddrescueはステロイドのddのようなものです...どのデータが読み取られたかを「知る」能力があり、ディスクのすべての部分を除外します読めない

于 2013-07-17T20:44:00.573 に答える