關於 smartctl 使用,請參考 https://benjr.tw/95984
測試環境為 CentOS 7 x86_64
這邊討論如何透過 smartctl 去檢視硬碟的 S.M.A.R.T. attributes,可以透過下面兩個參數來檢視.
-
-a, –all
-a 對於 ATA 硬碟參數等同 , ‘-H -i -c -A -l error -l selftest -l selective’
-a 對於 SCSI 硬碟參數等同 , ‘-H -i -A -l error -l selftest’ -
-A, –attributes
顯示硬碟製造商所提供的特定 SMART 屬性 (Attributes),屬性的編號從 1 到 253,關於這些屬性的名稱和 ID 請參考 https://en.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology#ATA_S.M.A.R.T._attributes
因為 S.M.A.R.T. attributes 是由硬碟製造商所提供的,所以比較早的硬碟可能就沒有任何資料.
[root@localhost ~]# smartctl -A /dev/sdb smartctl 6.6 2017-11-05 r4594 [x86_64-linux-3.10.0-514.el7.x86_64] (local build) Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === Current Drive Temperature: 36 C Drive Trip Temperature: 85 C Manufactured in week 35 of year 2008 Specified cycle count over device lifetime: 50000 Accumulated start-stop cycles: 412 Elements in grown defect list: 0 Vendor (Seagate) cache information Blocks sent to initiator = 1070701389807616
[root@localhost ~]# smartctl -A /dev/sdb smartctl 6.2 2013-07-26 r3841 [x86_64-linux-3.10.0-514.el7.x86_64] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 100 100 050 Pre-fail Always - 13 5 Reallocated_Sector_Ct 0x0032 100 100 001 Old_age Always - 0 9 Power_On_Hours 0x0032 100 100 001 Old_age Always - 1586 12 Power_Cycle_Count 0x0032 100 100 001 Old_age Always - 554 170 Unknown_Attribute 0x0033 100 100 010 Pre-fail Always - 44 171 Unknown_Attribute 0x0032 100 100 001 Old_age Always - 0 172 Unknown_Attribute 0x0032 100 100 001 Old_age Always - 0 173 Unknown_Attribute 0x0033 100 100 000 Pre-fail Always - 39 174 Unknown_Attribute 0x0032 100 100 001 Old_age Always - 466 184 End-to-End_Error 0x0033 100 100 050 Pre-fail Always - 0 187 Reported_Uncorrect 0x0032 100 100 001 Old_age Always - 0 188 Command_Timeout 0x0032 100 100 001 Old_age Always - 1 194 Temperature_Celsius 0x0022 078 065 000 Old_age Always - 22 (Min/Max 14/35) 195 Hardware_ECC_Recovered 0x003a 100 100 001 Old_age Always - 1908 197 Current_Pending_Sector 0x0032 100 100 001 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 100 100 001 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 100 100 001 Old_age Always - 0 202 Unknown_SSD_Attribute 0x0018 100 100 001 Old_age Offline - 0 206 Unknown_SSD_Attribute 0x000e 100 100 001 Old_age Always - 0 247 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 928166108 248 Unknown_Attribute 0x0032 100 100 000 Old_age Always - 21320209
主要看 Raw (RAW VALUE) , VALUE (Normalized) 與 THRESH (Threshold value) .
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 12 Power_Cycle_Count 0x0032 100 100 001 Old_age Always - 554
- 以 Attribute 12 (Power Cycle Count) 為例, 其中的 RAW_VALUE (554) 就代表這台系統重開機的次數為 554 次.
- 每個廠商使用自己的算法將此 Raw (RAW VALUE) 值轉換為 VALUE (Normalized) 範圍從 1 至 254.
- 當 VALUE (Normalized, 大部份起始值設定成為 100 ,1 表示為 worst case) 當 小於或等於 THRESH (Threshold value , 範圍從 0 到 255 ) 則表示 硬碟故障即將發生.
其他項目說明.
- ID# & ATTRIBUTE_NAME
屬性 編號與名稱從 1 到 253,關於這些屬性的名稱和 ID 請參考 https://en.wikipedia.org/wiki/S.M.A.R.T.#ATA_S.M.A.R.T._attributes 裡面有幾項屬性是被列為嚴重( Critical )問題,需要特別檢視的.- 05 (0x05) – Reallocated Sectors Count
- 10 (0x0A) – Spin Retry Count
- 184 (0xB8) – End-to-End error / IOEDC
- 187 (0xBB) – Reported Uncorrectable Errors
- 188 (0xBC) – Command Timeout
- 196 (0xC4) – Reallocation Event Count
- 197 (0xC5) – Current Pending Sector Count
- 198 (0xC6) – (Offline) Uncorrectable Sector Count
- 201 (0xC9) – Soft Read Error Rate or TA Counter Detected
- FLAG
? - VALUE
範圍從 0 到 255,起始值大部分設定成為 100.- 0, 254, 以及 255 為保留使用.
- 253 表示為 “Not Used Yet”
- 1 表示為 worst case.
- WORST
有記錄以來的最低值. - THRESH
VALUE 大部分起始值設定成為 100,1 表示為 worst case,通常達到 THRESH (Threshold) 就代表故障 (Failure) 了! - TYPE
- Pre-failure – 當 WORST(有記錄以來的最低值) 低於 THRESH (Threshold) ,系統會顯示該顆硬碟有可能故障.
- Old age – 顯示該硬碟已經超出使用期限或是耗損次數,不過還是要看 VALUE (Normalized) 是否小於或等於 THRESH (Threshold value) 才代表硬碟故障即將發生.
- UPDATED
資料更新時間- Always – 表示隨時都會更新資料.
- Offline – 只有在離線測試執行時才會更新資料,關於 smartctl 測試請參考 https://benjr.tw/96015 .
- WHEN_FAILED
通常是沒有數值的,如果不是空白,則表示總共運行的小時數(同 attribute 9 Power_On_Hours). - RAW_VALUE
屬性的原始數值.
那 NVME 的儲存裝置,是不是也可以透過 smartctl 來檢視資料呢!雖然在 smartctl 官網有提到 https://www.smartmontools.org/wiki/NVMe_Support 但透過 smartctl 看 nvme 所得到的資訊卻很不多,官網也建議使用 nvme 指令 (由 nvme-cli 套件提供) ,請參考 https://benjr.tw/98887 .
[root@localhost ~]# smartctl -A /dev/nvme0 smartctl 6.6 2017-11-05 r4594 [x86_64-linux-3.10.0-514.el7.x86_64] (local build) Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org === START OF SMART DATA SECTION === Read NVMe SMART/Health Information failed: NVMe Status 0x04