SMARTの構造
SMARTの情報をWMIで取得するには、
\root\WMIにあるMSStorageDriver_FailurePredictData、MSStorageDriver_FailurePredictThresholdsのVendorSpecificにアクセスします。
値自体は簡単に取得できるのですが、各々の値の意味は解説しているページが見つからなかったため、
いろいろな情報をもとに推測しました。(仕様書を読めば分かるのかもしれませんが)
構造については、UsefullCode.netにあるソースを参考にさせていただきました。
また正しい値が取れているかどうかは、HDD Healthと日本語化キットで確認しました。ありがとうございました。
スクリプトでmyPCのHDDの情報を取得すると以下のようになります。(先頭が0の行は省略しています)
SMART_dump.vbs(※)
FailurePredictData
16 0
1 11 0 100 100 0 0 0 0 0 0 0
2 5 0 100 100 0 0 0 0 0 0 0
3 39 0 100 100 223 7 0 0 0 0 0
4 50 0 100 100 230 1 0 0 0 0 0
5 51 0 100 100 0 0 0 0 0 0 0
7 11 0 100 100 0 0 0 0 0 0 0
8 5 0 100 100 0 0 0 0 0 0 0
9 50 0 99 99 37 2 0 0 0 0 0
10 51 0 109 100 0 0 0 0 0 0 0
12 50 0 100 100 147 1 0 0 0 0 0
192 50 0 100 100 17 0 0 0 0 0 0
193 50 0 99 99 207 43 0 0 0 0 0
194 34 0 100 100 36 0 17 0 53 0 0
196 50 0 100 100 0 0 0 0 0 0 0
197 50 0 100 100 0 0 0 0 0 0 0
198 48 0 100 100 0 0 0 0 0 0 0
199 50 0 200 200 0 0 0 0 0 0 0
220 2 0 100 100 156 32 0 0 0 0 0
222 50 0 99 99 202 1 0 0 0 0 0
223 50 0 100 100 0 0 0 0 0 0 0
224 34 0 100 100 0 0 0 0 0 0 0
226 38 0 100 100 72 1 0 0 0 0 0
240 1 0 100 100 0 0 0 0 0 0 0
FailurePredictThresholds
16 0
1 50 0 0 0 0 0 0 0 0 0 0
2 50 0 0 0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
5 50 0 0 0 0 0 0 0 0 0 0
7 50 0 0 0 0 0 0 0 0 0 0
8 50 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 0 0
10 30 0 0 0 0 0 0 0 0 0 0
12 0 0 0 0 0 0 0 0 0 0 0
192 0 0 0 0 0 0 0 0 0 0 0
193 0 0 0 0 0 0 0 0 0 0 0
194 0 0 0 0 0 0 0 0 0 0 0
196 0 0 0 0 0 0 0 0 0 0 0
197 0 0 0 0 0 0 0 0 0 0 0
198 0 0 0 0 0 0 0 0 0 0 0
199 0 0 0 0 0 0 0 0 0 0 0
220 0 0 0 0 0 0 0 0 0 0 0
222 0 0 0 0 0 0 0 0 0 0 0
223 0 0 0 0 0 0 0 0 0 0 0
224 0 0 0 0 0 0 0 0 0 0 0
226 0 0 0 0 0 0 0 0 0 0 0
240 1 0 0 0 0 0 0 0 0 0 0
頭の
FailurePredictDataについては1行1項目になっています。
この場合は、現在値100で、過去最小値100です。
どの項目も値が大きいほど良く、小さくなると悪くなります。閾値より小さくなると故障になる可能性が高くなります(すぐに壊れるというわけではないです)。また、HDDのメーカーによって項目数も異なり、閾値も違うようです。
また、HDDの温度(ID=194)については、生の値にさらに意味があるようです。
この場合は、現在の温度が36℃で下限17℃/上限53℃です。
温度については英語版のWikipediaには190の場合もあると記述されています。
Western DigitalのHDDは194と同じ値、SeagateのHDDは(100-temp)℃が入ります。
FailurePredictDataも1行1項目になっています。
項目がどのような意味を持つかは、WikipediaのS.M.A.R.Tの項目で解説されています。
太字で書かれている項目と温度があればよいと思います。(Wikipediaより抜粋)
項目IDと現在値、過去最小値、閾値を抜き出すスクリプトを次に作成します。
※
表記上の問題で画面上のテキストをそのままコピー&ペーストしづらいと思いますので、ファイルを用意しました。
ただし、使用しているシステムの都合上、画像かPDFしかアップロードできないため、プログラムをPDFファイルでおいてあります。
PDFのテキスト部分をテキストエディタなどにコピーしてからお使いください。
\root\WMIにあるMSStorageDriver_FailurePredictData、MSStorageDriver_FailurePredictThresholdsのVendorSpecificにアクセスします。
値自体は簡単に取得できるのですが、各々の値の意味は解説しているページが見つからなかったため、
いろいろな情報をもとに推測しました。(仕様書を読めば分かるのかもしれませんが)
構造については、UsefullCode.netにあるソースを参考にさせていただきました。
また正しい値が取れているかどうかは、HDD Healthと日本語化キットで確認しました。ありがとうございました。
スクリプトでmyPCのHDDの情報を取得すると以下のようになります。(先頭が0の行は省略しています)
SMART_dump.vbs(※)
FailurePredictData
16 0
1 11 0 100 100 0 0 0 0 0 0 0
2 5 0 100 100 0 0 0 0 0 0 0
3 39 0 100 100 223 7 0 0 0 0 0
4 50 0 100 100 230 1 0 0 0 0 0
5 51 0 100 100 0 0 0 0 0 0 0
7 11 0 100 100 0 0 0 0 0 0 0
8 5 0 100 100 0 0 0 0 0 0 0
9 50 0 99 99 37 2 0 0 0 0 0
10 51 0 109 100 0 0 0 0 0 0 0
12 50 0 100 100 147 1 0 0 0 0 0
192 50 0 100 100 17 0 0 0 0 0 0
193 50 0 99 99 207 43 0 0 0 0 0
194 34 0 100 100 36 0 17 0 53 0 0
196 50 0 100 100 0 0 0 0 0 0 0
197 50 0 100 100 0 0 0 0 0 0 0
198 48 0 100 100 0 0 0 0 0 0 0
199 50 0 200 200 0 0 0 0 0 0 0
220 2 0 100 100 156 32 0 0 0 0 0
222 50 0 99 99 202 1 0 0 0 0 0
223 50 0 100 100 0 0 0 0 0 0 0
224 34 0 100 100 0 0 0 0 0 0 0
226 38 0 100 100 72 1 0 0 0 0 0
240 1 0 100 100 0 0 0 0 0 0 0
FailurePredictThresholds
16 0
1 50 0 0 0 0 0 0 0 0 0 0
2 50 0 0 0 0 0 0 0 0 0 0
3 1 0 0 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0 0 0 0
5 50 0 0 0 0 0 0 0 0 0 0
7 50 0 0 0 0 0 0 0 0 0 0
8 50 0 0 0 0 0 0 0 0 0 0
9 0 0 0 0 0 0 0 0 0 0 0
10 30 0 0 0 0 0 0 0 0 0 0
12 0 0 0 0 0 0 0 0 0 0 0
192 0 0 0 0 0 0 0 0 0 0 0
193 0 0 0 0 0 0 0 0 0 0 0
194 0 0 0 0 0 0 0 0 0 0 0
196 0 0 0 0 0 0 0 0 0 0 0
197 0 0 0 0 0 0 0 0 0 0 0
198 0 0 0 0 0 0 0 0 0 0 0
199 0 0 0 0 0 0 0 0 0 0 0
220 0 0 0 0 0 0 0 0 0 0 0
222 0 0 0 0 0 0 0 0 0 0 0
223 0 0 0 0 0 0 0 0 0 0 0
224 0 0 0 0 0 0 0 0 0 0 0
226 0 0 0 0 0 0 0 0 0 0 0
240 1 0 0 0 0 0 0 0 0 0 0
頭の
16 0は意味がよく分かっていませんが、今回は必要ないので無視しています。
FailurePredictDataについては1行1項目になっています。
| bAttrID | wStatusFlags | bAttrValue | bWorstValue | bRawValue[6] | bReserved |
|---|---|---|---|---|---|
| 項目ID | ステータスフラグ | 現在値 | 過去最小値 | 生の値x6 | リザーブ |
| 1 | 11 0 | 100 | 100 | 0 0 0 0 0 0 | 0 |
どの項目も値が大きいほど良く、小さくなると悪くなります。閾値より小さくなると故障になる可能性が高くなります(すぐに壊れるというわけではないです)。また、HDDのメーカーによって項目数も異なり、閾値も違うようです。
また、HDDの温度(ID=194)については、生の値にさらに意味があるようです。
| 項目ID | ステータスフラグ | 現在値 | 過去最小値 | 摂氏 | 動作下限値 | 動作上限値 | リザーブ | |||
|---|---|---|---|---|---|---|---|---|---|---|
| 194 | 34 0 | 100 | 100 | 36 | 0 | 17 | 0 | 53 | 0 | 0 |
温度については英語版のWikipediaには190の場合もあると記述されています。
Western DigitalのHDDは194と同じ値、SeagateのHDDは(100-temp)℃が入ります。
FailurePredictDataも1行1項目になっています。
| 項目ID | 閾値 | 生の値x6 | リザーブ | |||
|---|---|---|---|---|---|---|
| 1 | 50 | 0 | 0 | 0 | 0 0 0 0 0 0 | 0 |
項目がどのような意味を持つかは、WikipediaのS.M.A.R.Tの項目で解説されています。
太字で書かれている項目と温度があればよいと思います。(Wikipediaより抜粋)
| 項目ID | 項目名 | 意味 |
|---|---|---|
| 01 | Raw Read Error Rate | ハードディスクからデータを読み込む時に発生したエラーの割合を表す。 |
| 05 | Reallocated Sectors Count | 代替処置(データを特別に予約した予備エリアに移動する)を施された不良セクタの数。 |
| C4(196) | Reallocation Event Count | セクタの代替処理が発生した回数。仮に処理に失敗しても回数に加算される。 |
| C5(197) | Current Pending Sector Count | 現在異常があり、代替処理を待つセクタの総数。もし後で読み込みに成功したセクタがあれば、この値は減少する。 |
| C6(198) | Off-Line Scan Uncorrectable Sector Count | オフラインスキャン時に発見された、回復不可能なセクタの総数。この値が増加する場合は、磁気ディスクの表面に明確な問題がある。 |
| DC(220) | Disk Shift | ディスク(プラッタ)が衝撃などにより当初の固定位置よりズレた距離。 |
| C2(194) | Temperature | ハードディスクの現在の温度。一般的に動作が保障されている最高温度は55℃である。 |
項目IDと現在値、過去最小値、閾値を抜き出すスクリプトを次に作成します。
※
表記上の問題で画面上のテキストをそのままコピー&ペーストしづらいと思いますので、ファイルを用意しました。
ただし、使用しているシステムの都合上、画像かPDFしかアップロードできないため、プログラムをPDFファイルでおいてあります。
PDFのテキスト部分をテキストエディタなどにコピーしてからお使いください。
2007年12月13日(木) 15:54:34 Modified by slt33333
添付ファイル一覧(全1件)
dbc19f73.pdf (24.99KB)
Uploaded by slt33333 2007年12月13日(木) 15:51:01
Uploaded by slt33333 2007年12月13日(木) 15:51:01
