実際にディスクの不良ブロックを再マップします。

実際にディスクの不良ブロックを再マップします。

私はSATAドライブを持っていて、プログラムは合計8つの不良ブロックを識別しましたbadblocks。おそらくドライブファームウェアはそれを再マップし、スペアパーツを交換できるはずです。問題のパーティションを再構築し、e2fsckを複数回実行するためにモードbadblocksで実行しました。-n何も変わらず、常に同じ8つの不良ブロックです。

実行するとにsmartctl表示されます。Reallocated_Sector_Ct0

8つの不良ブロックを実際に再マッピングするファームウェアを入手するにはどうすればよいですか?

ベストアンサー1

ドライブは、セクタ全体の書き込み要求に新しいデータが提供された場合にのみ読み取れないセクタを再書き込みまたは再割り当てしようとすることがあります。badblocksこれをしないでください。何も変わりません。

「非破壊」読み書きモードは次のように動作します。

  1. 生データの読み取り
  2. テストパターンの作成
  3. テストパターンを読む
  4. 生データの書き込み

最初のステップが失敗した場合、つまりデータを読み取れない場合は、後で元のデータを回復できないため、そのセクタで書き込み操作を実行できません。これは破壊的な書き込みになりますが、特に非破壊的な変形を要求したため、まだ完了していません。

「非破壊的」方法は他の理由で元のデータを回復できない可能性があるため、いかなる場合でもデータを保存したいドライブで不良ブロックを実行しないでください。


とにかくこれを行うには、書き込みモードをbadblocks使用する必要があります。デフォルトではすべてのデータが上書きされるので、オプションの引数を使用して上書きする必要がある特定のセクタ範囲形式-wに範囲を絞り込みたいと思います。badblocks -w device [last_block [first_block]]まず、読み取り専用の不良ブロックテストを実行してこれらのセクタを識別できます。

読み取り専用テスト:

# badblocks /dev/foobar
1000

ブロック1000に欠陥があるので、対応するブロックは具体的に扱う。

# badblocks -w /dev/foobar 1000 1000

しかし、これはまだ失敗するでしょう。なぜ?badblocksデフォルトのブロックサイズである1024バイトが使用されるためです。

これは、セクタサイズが512バイトのデバイスの場合は正しくありません。不良ブロックは 1 つではなく 2 つのセクタを覆い、追加の損傷を引き起こします。また、セクタサイズが4096バイトのデバイスにも当てはまります。無効 - 不良ブロックは書き込みのみです。部分セクタでは完全なデータブロックを作成する必要があるため、再割り当てには機能しません。


したがって、上記の両方のコマンドは、ドライブの正しいブロックサイズ(物理セクタサイズ)(512または4096など)を指定する必要があります。

ブロックサイズが変更されると、報告されたブロック番号もそれに応じて変更されます。

# badblocks -b 512 /dev/foobar
2000
# badblocks -b 4096 /dev/foobar
250

それに応じて書き込みコマンドを調整できます。

# badblocks -b 512 -w /dev/foobar 2000 2000
# badblocks -b 4096 -w /dev/foobar 250 250

これにより、ドライブに問題のあるセクターを再割り当てする機会が提供されます。


それでも失敗した場合、別の可能性があります。指定されたデバイスがパーティションであるか、別の論理ドライブで物理ドライブと整列していない場合、すべての書き込みはソートされないため、最終的に4096ワードセクションが2つに書き込まれます。部分4096バイトセクタ。

ターゲットセクタを再配置しませんが、隣接セクタのデータを部分的に破壊します。

したがって、この方法には追加のデータ損失のリスクがあります。

おすすめ記事