不良セクタのあるSATAHDDを持っています。データは必要ありません。新しいデバイスを作成するには、HDDをフォーマットする必要があります。
次のようなコマンドでHDDの問題を修復しようとしました
fsck.ext4 -p /dev/sda1
しかし、セクターを修正するには何年もかかります。 HDD全体をフォーマットしましたが、まだ問題があります。 HDDをフォーマットして不良セクタを復元する簡単な方法はありますか?
いいえ、簡単な方法はありません。一般に、不良セクタのあるディスクがある場合は、次のようなコマンドを使用して、ディスクの内容全体を上書きする必要があります。
dd bs=512k if=/dev/zero of=/dev/...
少し時間がかかります(通常2〜3時間)。これを行うと、ディスクに不良セクタを処理する機会が与えられます。最新のディスク(過去約15年で製造)は不良セクタを内部で処理し、書き込み中に予約されたセクタのセットからそれらのセクタを透過的に再マッピングします。したがって、最終的には、すべてのセクターが使用可能なディスクが必要になります。ディスクがこの再マッピングを実行できない場合は、通常、不良セクタが非常に多く、予約済みセクタが不足していることを意味します。これは、ディスクのサポートが終了したことを明確に示しています。
HDDの不良セクタ(セクタは古い用語であり、現在は「ブロック」がより一般的に使用されています)は、1つ以上の不良ブロックがディスクの磁気表面積の仕様から外れていることを意味します。これらのブロックを見つける唯一の方法は、ハードドライブ上のすべてのブロックを読み取ろうとすることです。 HDDは遅いので、時間がかかります。
たとえば、最新のHDDの実際の読み取りスループットは約130 MB/sであるため、最新の4TBディスクは、不良ブロックなしでディスク全体を1回読み取るのに、約4000000MB/130MB/s = 8.5hかかります。 1つ以上の不良ブロックがあるドライブでは、ドライブがそれらのブロックを繰り返し再読み取りしようとするため、スループットが大幅に低下します。これにより、読み取りエラーの原因となる不良ブロックをlocateすることができます。最新のHDDで不良ブロックを再マップするには、何かをその不良ブロックに書き込む必要があります。
HDDサーフェスのブロックが機能するかどうかを実際にテストする唯一の方法は、そのブロックを読み取り、それを書き戻し、ドライブがまだすべてが正常であると言っているかどうかを確認することですそのブロックに対して。ブロックの長さは512バイトでしたが、最近のドライブは内部で4KBのブロックを使用します。最新の4TBドライブでは、約10億(1e9)の4KBブロックをテストする必要があります。そして、HDDが遅いと言いましたか?
不良ブロックやデータがある場合は、本当にfsck.ext4 -cc
が必要です。そして、それは少なくとも1日か2日かかります。 fsck.ext4 -c
を実行すると、ext4は不良ブロックを回避できますが、ドライブを修正することはできません。 -c
のfsck.ext4
オプションを使用すると、パーティション上のすべてのブロックを試行できます読み取り。 -cc
オプションを使用すると、すべてのブロックを読み取り試行し、書き込み同じ内容をドライブに戻してエラーをチェックします。また、-cc
に障害が発生したディスクでも、修復できる場合があります...ただし、不良ブロックを特定するための特効薬はありません。唯一の方法はドライブ全体をスキャンすることであり、巨大なドライブでは遅くなります。
yoはデータを必要としないため、Sudo dd if=/dev/zero of=/dev/sdX bs=4M
を実行すると、「データの読み取り」部分をスキップして、「ブロックの修正」部分に直接移動できます。それでも、完了するまでに8〜20時間かかります。
不良ブロックを上書きすると、ドライブファームウェアが不良ブロックを自動的に修正することに注意してください。 HDDの不良ブロックを上書きするためにどのOSまたはツールを使用するかは実際には問題ではありません。そして、データも重要ではありません。ドライブが特定の不良ブロックを修正できない場合、そのドライブは完了です。これは、最近のハードドライブには、論理アドレス空間の不良ブロックを埋めるために使用される予備の物理ブロックがいくつかあるためです。不良ブロックを修正できない場合は、予約スペース内のすべてのブロックがすでに使用されているためです。その場合、ドライブはすでに長い間故障しています。
ブロックを修正するには、正しいブロックサイズを使用する必要があることに注意してください。たとえば、ドライブが4KBの物理ブロックを使用し、512Bの論理ブロックを許可している場合、ドライブは技術的に実際の4KBのブロックを読み取ろうとし、書き込んだ512Bを変更し、再書き込みを行うため、不良ブロックを512Bの論理書き込みで上書きすることはできません。 -4KBブロックを磁気プラタンに書き戻します。明らかに、物理的な4KBブロックが不良の場合、「実際の4KBの読み取り」は失敗します。これを回避する方法は、4KBブロック全体を1つのHDDコマンドで書き込むことです。これにより、物理ディスクから何も読み取る必要がなくなります。最終的に、指定された不良ブロックを修正するには、正しく配置された4KBブロックを作成する必要があります。上記のdd
コマンドは常に4MBのブロックを書き込みます。これは、デバイス全体をof
ターゲットとして使用する場合に正しく整列されます(書き込みには4 KBの倍数を使用でき、上記の例では4MBを使用します)パフォーマンスを向上させるため)。単一のパーティションをターゲットとして使用し、そのパーティションが正しく配置されていない場合でも、論理ブロックサイズと物理ブロックサイズがドライブで一致しないと、そのコマンドで不良ブロックを修正できない可能性があります。私の知る限り、これはほとんどの最新のHDDに当てはまります。 smartctl -x /dev/sdX
を実行すると、デバイスsdX
に関する情報が得られます。
いつものように、このようなものをいじる前に、man fsck.ext4
、man dd
、およびman smartctl
を実行してください。
badblocks -wsv -o /root/<badblocks.txt> /dev/<device>
mkfs.<filesystem-type> -l /root/<badblocks.txt> /dev/<device>
まず第一に、不良セクタは、理論的には、ハードドライブの部品への恒久的な損傷を意味します。したがって、近い将来に重要なデータにこのドライブを使用することを計画している場合は、おそらくそれを再検討してください。不良セクタが増える可能性は高いです。私の知る限り、不良セクタを実際に修正する実際の方法があります。それらが使用されないようにするだけです。また、ファイルシステムはパーティションに書き込まれる可能性があることに注意する必要があります。パーティションのリストを表示するには、 fdisk -lコマンド を使用します。次に、 e2fsck -c command を使用して、不良ブロックがファイルまたはディレクトリに割り当てられるのを防ぐことができます。