不良セクタとは何か

局所的な物理障害

不良セクタとは、データを正常に読み出せないセクタのことです。
データを書き込めないのも同じように思えますが、
エラーが明らかになるのはデータの読み出し時なので、
基本的には、データを読めないセクタが不良セクタということになります。

不良セクタは、ハードディスクの物理障害の一種です。
ただし、物理障害の中でも、最も軽微なものです。
不良セクタの発生は、必ずしもハードディスクの故障を意味しているわけではありません。

不良セクタが存在すると、データを読み書きするというハードディスクの機能に支障をきたすので、
ハードウェア、ソフトウェアの各段階で、不良セクタを回避する仕組みが用意されています。
通常、不良セクタは自動的に処理されます。

「不良セクタ」という単語が具体的に何を指しているのかは、状況によって異なります。
以下、様々な状況下における不良セクタについて述べますが、
セクタのデータを読み出せない点では、共通しています。

不良セクタの種類

注意しなければならないのは、
「不良セクタ」という単語が示しているものが、必ずしも同一ではない点です。
具体的には、

これらは一見同じようで、実体は異なります。

ファイルシステム上の不良セクタ

ファイルシステム上の不良セクタは、chkdsk」実行後に表示されます

不良セクター - CHKDSK

ファイルシステムがNTFSだと、「○○KB : 不良セクター」と表示されます。
ここで示されているのは、そのドライブのファイルシステムで管理されている不良セクタです。
つまり、論理的な不良セクタです。

不良セクタの現状を確認したければ、「chkdsk」を読み取り専用モードで実行すればいいです。
ファイルシステムの管理下にある不良セクタが表示されます。
※ファイルシステムにエラーがある場合は、まずファイルシステムの修復を求められます。

不良セクタは、正常なデータの読み出しができないセクタですから、
ファイルを管理する仕組みであるファイルシステムとしても、不良セクタは避けるべきものです。
ファイルシステムは、不良セクタが検出されると、不良セクタを含むクラスタの場所を記録します。
そして、今後その場所を使わないようにします。
その領域のサイズが、「chkdsk」実行後の「不良セクター」として表示されます。

ところで、ファイルシステムはセクタ単位ではなく、クラスタ単位で情報を管理しています
ファイルのプロパティでも、「サイズ」と「ディスク上のサイズ」が別々に表示されているとおりです。
つまり、実質は「不良セクター」=「不良クラスタ」です。
NTFSの場合は、クラスタサイズ(アロケーションユニットサイズ)は4KBになっていることが多いので、
「chkdsk」で検出される不良セクタも4KB単位になります。

従って、「chkdsk」で表示される不良セクタの分だけ実際の不良セクタが存在しているわけではありません。
実際の不良セクタに比べると、かなり大きい数値に切り上げられています。

「chkdsk」で表示されているのは、ファイルシステムで管理されている不良セクタ(というより不良クラスタ)なので、
これが正しく認識されていれば、「不良セクター」の数値を減らす必要はありません
それは、不良セクタが使われないための処理がなされていることを意味するからです。
無理にこの数値を減らそうとするのは、実際の不良セクタを使おうとするのと同義です。
「chkdsk」を実行するたびに不良セクタが増えるようなら問題ですが、
不良セクタのサイズが一定のままなら、状況は落ち着いているといえます。

一応、ファイルシステム上の不良セクタを再スキャンすることもできますが、
根本的な対策がなされていない限り、意味のない行為になります。

ファームウェア上の不良セクタ

ハードディスクの動作を司るファームウェアも、不良セクタを判定しています。
これは、物理的な不良セクタを、ファームウェアによって管理しているものです。

ファームウェア上の不良セクタを知るには、
ファームウェアが管理しているSMART情報を確認すればいいです。

不良セクタ - CrystalDiskInfo

不良セクタについて特に注意すべき項目は、
「05(5)」(代替処理済のセクタ数)と「C5(197)」(代替処理保留中のセクタ数)
です。
※かっこ内の数値は、16進値を10進表記したもの。
これらの「生の値」が「0」であれば、ファームウェアに不良セクタは検出されていません。
厳密には、不良セクタに関する属性は他にもありますが、
説明が長くなるので、下記ページ参照。

不良セクタに関する属性 - SMART情報と不良セクタ

ファームウェア上の不良セクタは、基本的にWindows等のOSからは見えません。
OS側で対応しなくてもいいように、ハードディスク内部で不良セクタを区別しているからです。
OS側で対応したものがファイルシステム上の不良セクタだとすると、
ファームウェア上の不良セクタはもっと前の段階、ハードディスクの中だけで完結しているものです。

物理的な不良セクタ

最終的な原因は、ハードディスクのプラッタ上にある物理的な不良セクタ、
物理的に読み出しができないセクタです。

ハードディスク内に物理的に不安定なセクタがあったとしても、
ファームウェアに検出されるまでは、不良セクタとして顕在化しません。
従って、ハードディスク内に、検出されていない不良セクタが存在する可能性は常にあります
余談ですが、フォーマット時にドライブの全領域のチェックをするのも、
ファームウェアやファイルシステムに不良セクタを検出させるための作業です。

不良セクタが発生しないハードディスクはありません。
ハードディスクは、不良セクタが発生する前提で作られています
データを管理する仕組みも同じです。
不良セクタの物理的な欠陥はどうしようもありませんが、
これまでに書いてきた不良セクタを回避する仕組みを使って、
論理的に正常なデータのやりとりをすることはできる、ということです。

不良セクタの修復について

不良セクタは、修復することができます。
ただし、条件付きで。

物理的な不良セクタを、正常なセクタに回復することはできません
でも、ファームウェア上の不良セクタと、ファイルシステム上の不良セクタは、
論理的なものなので、内容を修正することができます。
そういう意味で、不良セクタを修復することは可能です。
詳細は、下記ページ参照。

不良セクタの修復

ただし、このような操作が必要なケースは、それほど多くありません。
基本的に、不良セクタの管理は、ファームウェアやファイルシステムに任せておくべきです。
無理やり不良セクタに関する数値をゼロにする必要はありません
それは、ファームウェアやファイルシステムが、不良セクタを使わないように対処してきた結果だからです。

例外は、実際にハードディスクの動作に不具合が出ているときです。
たとえば、不良セクタが原因でハードディスクの読み出しが途中で止まってしまう場合は、
ファームウェア上の不良セクタを修正することが有効だと思います。