不良セクタ
近年のハードディスクドライブは、予備のセクタ(代替セクタとも)をあらかじめ持ち、ある程度の数の不良セクタを置き換えて対処する仕組みがある。この置換はOSなどのシステムからは不可視でディスクが自動的に処理する。置換されたセクタはリストとして記憶されるが、これにはPリスト(Primary list)およびGリスト(Grown list)の二種類がある。
Pリストは製造段階で発生した不良セクタのリストである。不良セクターは隣の正常セクタで代替される。Pリストはハードウェアに実装されるため、読み出しおよび書き込みの動作速度は正常セクタと同等である。
Gリストは工場出荷後に不良セクタと予備セクタを紐づけるためのリストである。以下の流れでセクタの代替とマークが行われる:
通常の読み取りでエラーが発生した場合、何度かそのセクタを再読み込みする - リトライ処理 リトライで読み込みが成功した場合、そのデータを同セクタに上書きして領域をリフレッシュ。
以下のペンディングセクタの処理へ進む リトライで読み込みができなかった場合、不良セクタとマークされる
リトライでかろうじて読めたセクターを代替保留中のセクタ(ペンディングセクタ)として登録する
同時に同データを代替セクターへとコピーする
次回ペンディグセクタへの読み込みアクセスがあった場合、ペンディングセクタと代替セクタのデータを比較してベリファイする ベリファイが成功した場合、ペンディングセクタは正常セクタに昇格し、代替セクタは解放される ベリファイが失敗した場合、ペンディグセクタは不良セクタに降格し、以降使われない
代替セクタはペンディングセクタの次のセクタにすることはできない - 次のセクタには有効なデータが残っている可能性があるため。このため、予備セクタはディスクの最後に割り当てられる。これはデータの断片化を引き起こし、また、リストがハードウェア上に実装することができない事もあり、読み出しおよび書き込みの動作は正常セクタに比較して遅くなる。