SMART属性値とは、ハードディスクの自己診断機能によって管理されている数値です。
ハードディスク内部の状態を知る手がかりとして、大変重宝します。

CrystalDiskInfo - SMART属性値

固有のIDが属性名と結びつけられており、
たとえば、累計使用時間、電源投入回数、現在の温度等も知ることができます。
なかでも特に効力を発揮するのは、ハードディスクにトラブルが発生した場合で、
SMART属性値を確認することで、論理障害か物理障害かという判断が可能になります。

SMART属性値は、ハードディスクのファームウェアによって管理されています。
従って、ハードディスクメーカーごとに属性の項目があったりなかったりしますし、
また、同じIDでもメーカーによって(というかファームウェアによって)判定基準が異なります。
というわけで、異なる製品間でSMART属性値を比較する意味はあまりありませんが、
現在使用中のハードディスクの経時変化を確認するうえでは大変有効なのです。

ここでは、ハードディスクの障害で特に問題になることが多い不良セクタについて、
該当のSMART属性値とあわせて書いていきます。

SMART属性値を確認する

ハードディスクのSMART属性値を確認するには、専用のツールを使います。
Windows標準の機能では確認できません。
SMART属性値はハードディスク内部の話なので、OSからすると絶対に取得しなければならないものではありませんので。

Windows上からSMART属性値を確認できるソフトとしては、「CrystalDiskInfo」が有名です。

ソフトウェア紹介ページ CrystalDiskInfo
ダウンロードページ ダウンロードセンター

Windowsが起動できなければ、「HDAT2」でも確認できますし、「UBCD」から起動できる「PartedMagic」でも確認できます。
Linuxなら、「smartctl」というコマンドがあります。
臨機応変に使い分けてください。

なお、ここでは日本語でわかりやすい「CrystalDiskInfo」の表示内容に合わせて説明していきます。
その他のツールでは英語表記がほとんどですが、
IDとそれの意味するところは同じなので、数字を追って理解してください。

不良セクタに関するSMART属性値

CrystalDiskInfo - SMART属性値

SMART属性値にはいろんなものがありますが、ここでは不良セクタに関するもののみ取り上げます。

05(05) 代替処理済のセクタ数
C4(196) セクタ代替処理発生回数
C5(197) 代替処理保留中のセクタ数
C6(198) 回復不可能セクタ数
※かっこ内の数値は、16進数を10進数で表したもの。

実際の数を知るために必要なのは、生の値です。
いずれも、不良セクタが一切存在しないハードディスクでは、生の値が「0」のはずです。
以下、それぞれの項目について、もうちょっと細かく見ていきます。

05(05) - 代替処理済のセクタ数

ハードディスクのファームウェアによって、代替処理された不良セクタの数。
代替処理とは、ハードディスク内に存在する不良セクタの代わりに、代替領域内の正常なセクタを割り当てること。

ハードディスク内に不良セクタが存在しても、代替領域を代わりに使うことで、
対外的には正常なデータのやりとりができます。
つまり、OSからはハードディスクに不良セクタがないように見えます。

ただし、代替処理が発生すると、論理的には連続した領域でも物理的には不連続のセクタを使うことになるので、
不良セクタが発生した箇所においてデータの読み書きが遅くなります。

C4(196) - セクタ代替処理発生回数

代替領域へデータを移すよう試みた回数。
代替処理に成功しようと失敗しようと、代替処理が行われた時点でここにカウントされます。

C5(197) - 代替処理保留中のセクタ数

ファームウェアによって認識されている不安定なセクタの数。
セクタ読み取りエラーが発生した場合に、ファームウェアによって代替処理保留セクタとして登録されます。
通称、ペンディングセクタ

セクタ代替処理は、次のアクセスがあるまで一旦保留(ペンディング)されています。
該当セクタに対して、次回の読み取りに成功すれば、再び正常なセクタとして扱われ、この数値は減少します。
逆に失敗した場合、代替処理すべきセクタとして登録され、
次回このセクタへの書き込みがあった時に代替処理されます。

C6(198) - 回復不可能セクタ数

セクタ読み書き時の訂正不可能なエラーの総計。
一般にデータの損失を伴います。

ハードディスクメーカーによって扱いが異なることが多い値なので、
参考程度に。

※参考: S.M.A.R.T. - Wikipedia(英語)

ハードディスクに保存しているのはデジタルデータですが、
その仕組みは電磁石によって磁気で記録するという、いたってアナログなものです。
従って不良セクタも、完全に読めるか完全に読めないかといった二者択一のものではなく、
読めるような読めないような、不安定な劣化の仕方をするのが普通です。
何度かリトライしたり、時間を空けることで読める場合があるので、
ファームウェアは不良セクタに対してこのような処理の仕方をしています。

結局、何が重要なのか

赤字で示してきたので察しはつくかと思いますが、
SMART属性値で特に注目すべきは、「05(05)」と「C5(197)」の生の値です。
つまり、それぞれ「代替処理済のセクタ数」「代替処理保留中のセクタ数」です。

05(05) - 代替処理済のセクタ数

もうすでにセクタ代替処理が行われているので、一見問題なさそうですが、
実際に不良セクタと判定されたからセクタ代替処理が行われたという事実から、
この数値を見逃していいわけがありません。
ちなみにこの数値は、増えることはあっても、減ることはありません
ハードディスクの代替セクタ領域にも、限りがあります。

C5(197) - 代替処理保留中のセクタ数

ファームウェアにグレーだと認識されていて、白黒判定待ちです。
ただし、限りなく黒に近いグレーです。
そもそも読み取れていれば、ペンディングセクタにはなりません。
過去に読み取り不能のセクタがあったから、ペンディングセクタが増えているわけです。
残念ながら、読み取れないセクタは、時間を空けても読めない場合がほとんどです。

「C6(198) - 回復不可能セクタ数」も重要そうですが、
この属性値はユーザーに状態を伝えるものとしてはアテになりません。
メーカーによって基準が違うというか、解釈が違う気がします。
たとえばSeagateのハードディスクでは、この数値とペンディングセクタがシンクロして増減することが多いです。
なので、個人的にはペンディングセクタの実数しか見ていません。

不良セクタのあるハードディスクへの対応

不良セクタの判定は、ハードディスクのファームウェアによって行われます。
しかし、不良セクタのあるハードディスクをどうするかという判断は、ユーザーに委ねられています。

不良セクタが存在するハードディスクは、正常な読み書きができないということですから、
すぐ交換の必要があるように思われるかもしれません。
でも実際には、必ずしもそうではありません。
「不良セクタがある」 → 「即交換」というのは、ちょっとやりすぎです。

これまでに書いてきたとおり、SMART属性値を確認することで、
ハードディスク内の不良セクタがどのように管理されているかを知ることができます。
でもこれは、不良セクタを使わないように、ハードディスクのファームウェアが管理してきた結果です。
すでにファームウェアに検出されている不良セクタは、正常なセクタと同じようには扱われません。

ユーザー側で対処が必要なのは、ファームウェア任せでは、動作に支障がある場合です。
たとえば、

  • 不良セクタが多く、しかも増え続けている
  • OSが起動しない、あるいはフリーズする
  • 自動的に「CHKDSK」が実行される
  • 動作が非常に遅い

など。
もしそうであれば、ハードディスクを交換するなり、
不良セクタを強制的に置き換えるツールを使用して、一時的にでもアクセスできるよう試みるべきです。

逆に、対処しなくてもいい(と判断した)事例を挙げてみます。

CrystalDiskInfo - SMART属性値

「C5」の生の値が「1」になっています。
実は、これには心当たりがあります。
当該ハードディスクでの作業中に落雷があり、ブレーカーが落ちたのです。

再びパソコンを起動し、ハードディスク内のファイルを確認してみたんですが、
案の定というか、サイズが0バイトの、削除できないファイルが存在していました。
状況からして、ファイルシステムに問題があるのは間違いないので、
「chkdsk」による修復を行いました。
その後、今度は必要なファイルが消えていることに気づき、
ファイル復元ソフトで失ったファイルを探すという、まぁ難儀なことをしていたわけです。

このハードディスクは、不具合が発生した直後こそ対応に追われたものの、
その後は特に何の問題もなく継続使用できています。
不良セクタの数が増えることもありませんでした。
このように、作業中に突然の電源断など、不良セクタが発生した原因に心当たりがあり、
その後不良セクタが増え続けることもない場合は、無理にハードディスクを交換する必要はありません

CrystalDiskInfo - SMART属性値

実験がてら、「HDAT2」を使って上記ハードディスクのペンディングセクタを置換してみましたが、
このようなことをする必要すらありません。
回復不可能なペンディングセクタであれば、
いずれ当該セクタへの書き込み時に、セクタ代替処理が行われるからです。

SMART属性値がすべてではない

勘違いしないでいただきたいのは、

「SMART属性値に問題がない」 ≠ 「ハードディスクに問題がない」

ということ。
SMART属性値に問題がなければハードディスクは正常動作している、とは言えません。

そもそも、SMARTですべてがわかるわけではありません。
これはあくまでも、ファームウェアから見たハードディスクの話です。
ハードディスクのファームウェアも、完璧ではありません。
ハードディスクの不具合をファームウェアがうまく拾い上げられなければ、
SMART属性値は正常でも、ハードディスクは機能不全におちいります。
逆に、健全なセクタを過剰にペンディング判定、代替処理してしまうことだってあり得ます。

また、不良セクタが検出されていなければ不良セクタはない、とも言い切れません。
ファームウェアは、常にすべてのセクタをチェックしているわけではありません。
セクタに対して読み取りを試行したタイミングではじめて「あ、ここ読めない」ってペンディング判定されるわけで、
頻繁にアクセスされることのないセクタに問題があっても、ファームウェアにはそれを検出する機会がありません。
HDAT2」とかで、ハードディスクの全領域に対してREADを実行すれば別ですが。

SMART属性値を寿命予測に使うのも、個人的には違う気がします。
実際問題、ハードディスクは突然死することも多いです。
Googleの論文(PDF)によると、10万台以上のハードディスクの調査結果で、
不良セクタに関するSMARTエラーを出さないまま故障に至ったものが56%あったそうです。

SMART属性値を過信して、すべてをうのみにしてしまうのは問題ですが、
ハードディスクに不具合が発生した場合の判断材料としては極めて有効であり、
もっぱらその目的で使うべきなんじゃないかと思っています。