以前はWDのディスクファームウェアを作成していましたが、一度不良ブロックを再割り当てするファームウェアを作成しました。
まず、ほとんどの不良ブロックは書き込みではなく読み取りで検出されます。書き込みは盲目的に行われます。つまり、データはチェックされずに書き込まれます。したがって、メディアが不良である場合、書き込み時に、ホストがそのセクターを読み取るまで、メディアはわかりません。正しいセクターを見つけるために書き込み時に読み取られるセクター(セクターヘッダー)の小さな部分があるため、セクターヘッダーの読み取りにエラーがある場合、ドライブはセクターを再割り当てし、受信したデータで書き込みます書き込みコマンドから。ただし、不良ブロックの大部分は読み取りで検出され、書き込みがセクターに成功したからといって、メディアが良好であることや、セクターが再割り当てされたことを意味するわけではありません。
次に、不良ブロックの再割り当て(再割り当てとも呼ばれます)について説明します。はい、通常、ドライブはエラーが十分に悪い(つまり、ECCの障害が十分に悪い)場合にセクターの再割り当てを試みますが、ECC修正後もドライブはデータを回復できます。通常、これは自動的に行われます。唯一の例外は、ホストが以前にドライブに自動再割り当てを行わないように指示していた可能性があることですが、これはめったに行われません。
ドライブが読み取りを実行し、データを回復できない場合はどうなりますか?なし。エラーはホストに報告されますが、再割り当ては行われません。問題は、ドライブがセクターを再割り当てできる可能性があるが、新しく再割り当てされたセクターにどのデータを書き込むべきかを少しでも把握していないことです。たとえば、ゼロの束を書き込んだばかりで、セクターが再び読み取られた場合、データが有効ではなかったことを示すことなく、すべてのゼロが返されます。これは基本的にデータ破損と同じです。ドライブは、さまざまな理由(たとえば、ドライブが新しいホストに移動された場合はどうでしょうか)でエラーを追跡しているホストに頼ることができないため、データができる場合は何もしないことをお勧めします回復する必要があります。
ただし、最新のドライブでは、不良セクタを再割り当てできない場合、不良セクタの場所を保存します。再割り当てを待機している不良セクタの数は、SMARTデータで確認できます。起こるのは、再割り当てを待っている不良セクタの1つに書き込みが行われた場合、再割り当て後にドライブに書き込む有効なデータがドライブにあるため、再割り当てが行われることです。したがって、不良セクタへの書き込みがそれを再割り当てすると人々が言うとき、それは実際には物語の半分にすぎません。ドライブは、自動的に再割り当てできない不良セクタをすべて検出できるように、最初に読み取る必要があります。したがって、ドライブ全体を書き込むことができ、SMARTデータは再割り当てを待機している不良セクタはないと言いますが、必ずしもすべての不良セクタのドライブをクリアしたわけではありません。したがって、すべての不良セクターのドライブを本当に消去したい場合は、
再割り当てできない不良ブロックを処理する他の方法があります。ドライブが冗長RAID構成(RAID 0以外)の一部である場合、RAIDソフトウェアは他のドライブから不良セクタのデータを自動的に回復し、再割り当てされたセクタに書き込む必要があります。SCSIディスクには、ブロックに書き込む有効なデータがない場合でもホストが強制的に再割り当てを行うために使用できる明示的なブロックの再割り当てコマンドがありますが、その使用はかなり低レベルです。