1つのコマンドでハードドライブの不良ブロックを修正できますか?

1つのコマンドでハードドライブの不良ブロックを修正できますか?

ハードドライブのエラーを修正しようとしています。手動で変更することもできますが、数時間かかることがあります。

このコマンドを入力するとsudo badblocks -b 512 /dev/sda何百もの結果が表示されるので、手動で修正するのを避けたいと思います。

私のエラーの詳細を見ることができます。ここ

それでは、エラーを修正するために使用できるツールはありますか?それとも私のためにシェルスクリプトを書くことができますか?

ベストアンサー1

まあ、いくつかの状況があります:

  1. ディスクはRAIDアレイの一部です。わかりましたmdが次のように配列を「修正」するようにしますecho 'repair' > /sys/block/md0/md/sync_action。問題は解決され、データは失われませんでした。 (あなたの場合はそうではないようですが、変更することを本当に考慮する必要があります。)
  2. ディスク上のデータ(またはデータ)にはまったく興味がありません。 ddを使用してディスク全体をゼロにします。
  3. 不良ブロックはディスクで使用可能な領域の一部です。たとえば、空きcat /dev/zero > tempfile領域をゼロで埋めます。 rootとしてこれを行います(rootに対してのみスペース予約)。おそらくシングルユーザーモードになるでしょう(したがって、スペース不足による中断はありません)。スペースが足りなくなったら、ファイル(rm tempfile)を削除してください。
  4. 不良ブロックは、ディスク上のデータ(ファイル)またはメタデータ(ファイルシステム構造)の一部です。データが失われました。fsck -fc(最悪の場合はファイルシステムをマウントせずに実行するか、ルートファイルシステムの場合は初期起動中に読み取り専用モードで実行します)どのファイルが存在するかを知らせます。バックアップから交換してください。

また、badblocks -nこれが必ず行われる必要があるかもしれません。ただに完了しましたインストールされていませんファイルシステムは強制的に再マップされます。データが失われてはいけません(すでに失われた不良ブロックのデータを除く)。

不良ブロックに基づいて出力したい場合(ここでは安全ではない、これは静かな損傷を引き起こす可能性があります)これはかなり簡単です。 badblocks出力の各行は、ブロックサイズ(例では512)に基づいてブロック番号を提供します。 ddに同じブロックサイズを使用してくださいbs。ブロック番号はあなたのseekddです。値countは1(または複数の不良ブロックが連続している場合はより高い)です。of不良ブロックを実行しているパーティション(またはディスク)。良いことifです/dev/zero

おすすめ記事