Home

技術系のメモと日々の雑感

smartctl の出力についてまとめてみた

HDD が壊れやすいパーツだというのは分かっているから、データのバックアップはマメに取るようにしている。
でも、そもそも壊れる前兆を知ることができたら、もっと色々と準備しておけるはずだ。
ある日、ふとそんなことを考えて、前から気になっていた S.M.A.R.T について調べてみることにした。
CentOS では標準で smartctl コマンドが使えるから、家にある HDD を片っ端から -a オプションでチェックして、出力された内容をまとめた上で、ざっくりと説明を付けてみた。
自分用のメモなので結構適当だし、間違いもあると思うから、くれぐれも鵜呑みにしないように・・・。
※このエントリはブラウザの幅を広げて見るのがオススメ


1.デバイスの情報(-i オプション)

Model Family:     Seagate Barracuda ATA IV family
Device Model:     ST340016A
Serial Number:    *********
Firmware Version: 3.19
User Capacity:    40,020,664,320 bytes
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   5
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Sun Mar  2 23:31:15 2008 JST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

ここは見たまんま。
「ATA Version」と「ATA Standard」はこの HDD が対応している ATA 規格を表しているみたい。
「SMART support is」が Disabled になっていても、実際には BIOS で無効になっているだけということがある。
あと、古い HDD で「SMART support is」に「Ambiguous(あいまいな)」と表示されて、以降の情報が表示されなかったことがあったけど、この場合でも個別に -c や -A オプションで情報を取得することはできた。
smartmontools のデータベースに登録されている機種は「-P showall」で参照できる。

2.ヘルステストの結果(-H オプション)

SMART overall-health self-assessment test result: PASSED

この結果はヘルステスト(オンライン)とオフラインで収集したデータを総合して判断するらしい。
PASSED 以外を見ることはほとんどないと思う。

3.デバイスが実装している SMART の機能(-c オプション) ※適当に整形してある

General SMART Values:

Offline data collection status:  (0x82)
  Offline data collection activity was completed without error.
  Auto Offline Data Collection: Enabled.
  (前回の)オフラインデータ収集は正常に終了
  自動オフラインデータ収集有効


Self-test execution status:(   0)
  The previous self-test routine completed without error or no self-test has ever been run.
  前回のセルフテストは正常に終了または現在までに1度も実行していない

Total time to complete Offline data Collection:( 422) seconds.
  オフラインデータ収集を実行した時間の合計(秒)

Offline data collection capabilities:(0x1b)
  SMART execute Offline immediate.
  Auto Offline data collection on/off support.
  Suspend Offline collection upon new command.
  Offline surface scan supported.
  Self-test supported.
  No Conveyance Self-test supported.
  No Selective Self-test supported.
  オフラインデータ収集の即時実行が可能
  自動オフラインデータ収集の有効/無効を切り替え可能
  処理中に新しいコマンドを発行して動作を変更可能
  ディスクの界面走査可能
  セルフテストをサポート
  Conveyance(伝送?)テストは未サポート
  Selective(機能選択?)テストは未サポート


SMART capabilities:(0x0003)
  Saves SMART data before entering power-saving mode.
  Supports SMART auto save timer.
  省電力モードに入る前に SMART のデータをセーブ
  自動セーブのタイマー機能をサポート


Error logging capability:(0x01)
  Error logging supported.
  No General Purpose Logging support.
  エラーログの機能あり
  汎用のログの機能は未サポート(?)


Short self-test routine recommended polling time:(   1) minutes.
  Short セルフテストの実行に必要な時間(分)

Extended self-test routine recommended polling time:(  31) minutes.
  Extended セルフテストの実行に必要な時間(分)

自動オフラインデータ収集の有効/無効は「--offlineauto=on/off」で切り替えることができる。
有効にした場合、4時間ごとにデータが収集される。
セルフテストを実行している間は「Self-test execution status」が「Self-test routine in progress...」といった表示に変わる。

4.ベンダー固有の属性情報(-A オプション)

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE     UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   072   070   034    Pre-fail Always       -       23768603
  3 Spin_Up_Time            0x0003   073   073   000    Pre-fail Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age  Always       -       12
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail Always       -       0
  7 Seek_Error_Rate         0x000f   100   253   030    Pre-fail Always       -       944896
  9 Power_On_Hours          0x0032   100   100   000    Old_age  Always       -       5
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age  Always       -       13
194 Temperature_Celsius     0x0022   020   048   000    Old_age  Always       -       20
195 Hardware_ECC_Recovered  0x001a   072   070   000    Old_age  Always       -       23768603
197 Current_Pending_Sector  0x0012   100   100   000    Old_age  Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age  Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age  Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age  Offline      -       0
202 TA_Increase_Count       0x0032   100   253   000    Old_age  Always       -       0

カラムは左からそれぞれ次のような意味になる。

ID#             属性 ID
ATTRIBUTE_NAME  属性名
FLAG            ?
VALUE           現在の属性値(ファームウェアが 1〜254 に最適化した値)
WORST           現在までで最も低い属性値
THRESH          しきい値(VALUE がこれを下回るとエラー)
TYPE            標準の製品寿命に達した(Old_age)/エラー発生間近(Pre-fail)
UPDATED         データの更新が常に可能(Always)/オフラインのみ(Offline)
WHEN_FAILED     エラーが発生した場合「FAILING_NOW」と表示
RAW_VALUE       最適化される前の値/ベンダー固有でフォーマットは規定されていない

FLAG については、ソースを見た限りでは下位1ビット目(0x0001)が TYPE、下位2ビット目(0x0002)が UPDATED の元になる値のようだ。
あと、3ビット目より上は情報が見付からなかった。
TYPE が Pre-fail になっていると何となく気持ち悪いが、smartctl の manpage にも書かれている通り、その属性の VALUE が THRESH を下回ってなければ問題ないらしい。
また、THRESH の値もベンダーが決めているので、VALUE がこれを下回ったからと言ってすぐに故障するわけではない。
各属性の意味については以下のページに詳細な説明がある。
http://ja.wikipedia.org/wiki/S.M.A.R.T
参照したいくつかのドキュメントで特に重要とされていたのは次の属性。

  1 Raw_Read_Error_Rate       データ読み込み時に発生したエラーの割合
  5 Reallocated_Sector_Ct     データを予備エリアに移動した不良セクタ数
196 Reallocation Event Count  セクタの代替処理が発生した回数
197 Current_Pending_Sector    現在異常があって代替処理を待つセクタ数
198 Offline_Uncorrectable     オフラインテストで発見された回復不可能なセクタ数


5.エラーログ(-l error オプション)

SMART Error Log Version: 1
ATA Error Count: 10 (device log contains only the most recent five errors)
    CR = Command Register [HEX]
    FR = Features Register [HEX]
    SC = Sector Count Register [HEX]
    SN = Sector Number Register [HEX]
    CL = Cylinder Low Register [HEX]
    CH = Cylinder High Register [HEX]
    DH = Device/Head Register [HEX]
    DC = Device Command Register [HEX]
    ER = Error register [HEX]
    ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 10 occurred at disk power-on lifetime: 7760 hours (323 days + 8 hours)
  When the command that caused the error occurred,
  the device was active or idle.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  01 51 01 10 e0 fe af

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  fe a2 01 10 e0 fe ef 02      04:04:35.500  [VENDOR SPECIFIC]
  fe a2 01 0f e0 fe ef 02      04:04:35.500  [VENDOR SPECIFIC]
  fe a2 01 0e e0 fe ef 02      04:04:35.500  [VENDOR SPECIFIC]
  fe a2 01 0d e0 fe ef 02      04:04:35.500  [VENDOR SPECIFIC]
  fe a2 01 0c e0 fe ef 02      04:04:35.400  [VENDOR SPECIFIC]

検出されたエラーがあれば最新の5つ分が表示される。(上の例は1つだけ抜粋)
内容はまったく分からないが・・・。
まぁ、こういうログが出ていたら要注意ってことで。
現在までにエラーが発生していなければ「No Errors Logged」と表示される。

6.セルフテストの結果(-l selftest オプション)

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Interrupted (host reset)      80%      9682         -
# 2  Short offline       Completed without error       00%      7760         -

カラムは左からそれぞれ次のような意味になる。

Num                 ログ番号
Test_Description    テスト種別
Status              テストのステータス
Remaining           テスト完了までの残り
LifeTime(hours)     HDD の電源が ON の間でテストを実行したタイミング
LBA_of_first_error  最初のエラーの10進表記の Logical Block Address(?)

上の例の1番のログは Extended(long) テスト中にリブートしてしまって処理が中止されたものだ。
なお、新しいログが先頭に表示される。

この記事に対するトラックバック

この記事のトラックバックURL

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/26(火) 05:30:48

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/16(土) 02:51:04

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/15(金) 04:58:12

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/12(火) 07:40:03

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/11(月) 19:01:08

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/07(木) 01:38:12

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 19:23:42

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/06(水) 10:07:14

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 22:54:32

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 11:17:54

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/05(火) 02:49:10

-

管理人の承認後に表示されます

  • From: |
  • 2013/11/02(土) 18:02:16

-

管理人の承認後に表示されます

  • From: |
  • 2013/10/31(木) 22:20:09

-

管理人の承認後に表示されます

  • From: |
  • 2013/10/24(木) 16:32:26

-

管理人の承認後に表示されます

  • From: |
  • 2013/10/24(木) 10:16:55

-

管理人の承認後に表示されます

  • From: |
  • 2013/08/19(月) 20:24:59

-

管理人の承認後に表示されます

  • From: |
  • 2013/07/10(水) 02:28:45

-

管理人の承認後に表示されます

  • From: |
  • 2013/04/16(火) 04:19:40

-

管理人の承認後に表示されます

  • From: |
  • 2012/06/12(火) 13:02:52

-

管理人の承認後に表示されます

  • From: |
  • 2011/12/02(金) 05:54:23

-

管理人の承認後に表示されます

  • From: |
  • 2011/06/16(木) 11:10:11

この記事に対するコメント

この記事にコメントする

管理者にだけ表示を許可する