短い答え:セクタに何か新しいものを書き込んでください(長いフォーマットではゼロでも可能です)。
長い答え
最近のハードドライブは、ホストコンピュータから不良セクタを隠そうとします。ホストコンピュータは、ドライブに特定のセクタ番号の内容を返すように要求します。通常、ドライブはセクタを読み込んでホストコンピュータに返却し、すべてが正常に動作します。
ハードドライブは、読み込んだ値が有効かどうかを知っていますが、ドライブは エラー訂正コード (ECC) を使用して、読み込んだ内容が正しいかどうかを検証します。セクタの内容が無効であることが検出されると、ドライブは読み取りを再試行します。これは、単純に再読み込みを行えば、正しいセクタの内容が得られる可能性があることを期待してのことです。正しい値が得られるか、または制限時間に達するまで再試行を続けます(正式には コマンド完了時間制限、または CCTL _として知られています)。
これらのリトライの間、 ドライブはコマンドに反応しなくなったため、死んだように表示されます .
スペアセクタ
ほとんどの最新のドライブには多数の「スペア」セクタが含まれています(例: 1,024個のスペアセクタ)。ドライブがそのセクタを不良セクタと認識すると、そのセクタの使用を停止します。破損したセクタへの読み書き要求は、明らかにスペアセクタにリダイレクトされます。このように不良セクタをマークオフし、スペアセクタにデータを再割り当てすることを、再割り当てイベントと呼びます。そして、再割り当てされたセクタの総数(つまり、スペアセクタが何個使い切られたか)が Reallocated Sector Count となります。
この例では、私が所有しているハードドライブの1台で64セクタが不良であることがわかりました。つまり、ドライブのスペアセクタのうち64個が使用されたことになります。
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
この同じハードドライブでは、4回の再割り当てイベントが発生しています。これは、ドライブが不良セクタをマークし、代わりにスペアセクタを使用する場面が4回あったことを意味します。
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
データを読み込めない場合は?
セクタの再読込み、スペアを消費するこれらの行為は、すべてコンピュータの裏で行われているのは良いことです。ホストOSが故障セクタの問題に対処する必要がないということです。ドライブ自体がこれらの詳細を処理することができます。
ボーナスチャット . 昔、ハードドライブにはステッカーが貼られていました。このステッカーには、Factory Defect List(ドライブ上の既知の不良箇所のリスト)が記載されていました。
ドライブの低レベルフォーマットを実行した場合、ツールを使用して Cylinder-Head-Sector の不良箇所をすべて入力しなければなりませんでした。
SCSIドライブには IOCTL_DISK_REASSIGN_BLOCKS
というコマンドがあり、オペレーティングシステムがバッドスポットを検出した後、ドライブ上のバッドスポットを再割り当てするように指示します。IDEドライブでは、オペレーティングシステムの介入を必要とせずに、これはすべて自動的に行われます。
理想的には、ドライブは故障したセクタを認識し、データを予備セクタに移動し、元のセクタを二度と使用しません。しかし、ドライブが正常にセクタを読み込めなかった場合はどうなるでしょうか?
これがPending Sectors
です。ドライブはセクタが故障していることを検出したので、スペアにリマップする必要があります。しかし、データを正常に読み込めるようになるまでは、それはできません。ドライブはセクタに障害があり、リマップする必要があることを認識しているが、そのセクタからの読み取りが正常に行われるのを待っているため、まだそれを行うことができない場合、これを Pending Sector Count と呼びます。
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
(C5) Current Pending Sector 100 100 0 2
私のハードドライブには、ドライブが不良と認識しているが、まだ再割り当てできない******セクタが2つあります。これらの「保留中のセクタ」の1つを読み込もうとすると、ドライブは再試行(再試行、再試行、再試行)を繰り返し、最終的にはホスト・オペレーティング・システムに読み取りエラーを返します。
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 66
(C4) Reallocated Event Count 196 196 0 5
(C5) Current Pending Sector 100 100 0 0
保留中のセクタをあきらめて再割り当てされる
ドライブが最終的にセクタを再割り当てし、別の予備セクタを消費する方法は2つあります:
- 最終的に良好な読み取りが可能になる
- セクタの中身を気にしなくなる
ドライブが最終的にセクタを読み込んだ場合、セクタを再割り当てできることを認識しています。
ドライブがセクタを再割り当てできるもう一つの方法は、そのセクタの内容は無関係であること、つまりセクタに何が入っているかはもう気にしないことをドライブに知らせることです。どうすればいいのでしょうか?
セクターに何か新しいものを書き込む。
ハードドライブのセクタから読み込んだり、書き込んだりするときは、必ず全体の512バイトのセクタ1を読み書きしなければなりません。セクタの一部だけを書き込むことはできません。OSがセクタにデータを書き込むときは、全体の512バイトを指定しなければなりません。この不良セクタの代わりに新しいコンテンツを使用したいとハードドライブに伝えると、ドライブは、現在の不良セクタに何があるかさえ気にしていないことがわかります。これにより、不良セクタをスペアの1つに再割り当てすることができ、そのセクタはPending**ではなくなります。
これが、人々が がある場合、一般的なアドバイスは、ツール(Western Digital社のData LifeGuardなど)を使用してドライブにすべてのゼロを書き込むことです。
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
ドライブ上のすべてのセクタにゼロを書き込むことで、厄介な保留中のセクタの再割り当てが可能になることをドライブに伝えていることになります。ワイプ後は、すべてのCurrent Pending Sectors
がPending Sectors
になります。
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
注意: Western DigitalのData LifeGuardのような「低レベル」ツールを使用する必要は厳密にはありません。Windows にボリュームの full フォーマット(つまり Quick フォーマットではない)を実行するように指示すると、ボリューム内のすべてのセクタにゼロが書き込まれます。
OSのファイリングシステムはセクタを不良セクタとしてマークすることをサポートしています
この知識を持って、よくある混乱したシナリオを探ってみましょう。
Integrated Drive Electronics (IDE)が登場する前は、ホストOSは不良セクタを検出し、読み込みを再試行し、データを別のセクタに移動し、古いセクタを不良セクタとしてマークする役割を担っていました。
ホストオペレーティングシステムを使用してReallocated Sectors
を実行した場合、ホストオペレーティングシステムは“Pending”セクタが不良セクタであることを認識し、それ自体を不良セクタとしてマークし、二度と使用しようとしません:
>chkdsk c: /B
つまり、512バイトセクタのハードドライブを仮定すると、12KBの「Pending Sectors」、この例では12KBがOSによって「不良セクタ」としてマークされています。 Crystal Disk Information のような S.M.A.R.T. ディスクユーティリティで表示されます。
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
注 . Western Digital社のData LifeGuard v1.31(2017年8月31日現在の最新版)ユーティリティは、現在のS.M.A.R.T.の「Raw」カウンター値を正しく表示していないようです。
今、**full format* (ボリューム内のすべてのセクタにゼロを書き込む)を実行すると:
/B NTFS only: Clears the list of bad clusters on the volume and
rescans all allocated and free clusters for errors. /b includes
the functionality of /r. Use this parameter after imaging a
volume to a new hard disk drive.
つまり、chkdsk /r c:
だったセクタがすべて再割り当てされることを意味します。これでファイリングシステムはこれらのセクタを再び使用しても安全である。ファイリングシステムに、これらのセクタがもはや “不良セクタ”_ではないことを指示するには、不良セクタを再評価するオプションを実行する。
とありますが、コマンド・ドキュメントでは
または
によると https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
これは、決して読まれることのないもののために、たくさんの文章とたくさんのスクリーンショットを書いたものです。