文章目錄
- 一、前言
- 1、SMART技術介紹
- 2、SMART功能作用
- 3、SMART運行原理
- 二、部署實踐
- 1、SMART軟件安裝
- 2、SMART操作命令
- 2.1、狀態查詢
- 2.2、健康測試
- 3、SMART信息解讀
- 三、異常預測
一、前言
Wikipedia: Self-Monitoring,_Analysis_and_Reporting_Technology
1、SMART技術介紹
S.M.A.R.T,即Self-Monitoring Analysis and Report Technology(自我檢測、分析及報告技術),是一種自動的硬盤狀態檢測與預警系統規范。
通過在硬盤硬件內的檢測指令對硬盤部件(如磁頭、盤片、馬達、電路等)運行情況進行監控,記錄并于硬盤廠商設定預期安全值進行比對,若監控情況將要或已超過預設安全值的范圍,則通過主機的監控硬件或軟件自動向用戶作出警告,并進行輕微的自動修復,以保障硬盤數據安全,目前大部分硬盤均配備該項技術。
2、SMART功能作用
該項技術可以讓硬盤更穩定運行,主要表現在以下幾個方面:
- 當硬盤的損壞程度還在軟件的可修復的范圍(通常由廠商決定),軟件就會自動修復,防止數據的進一步損壞,同時報告異常值,異常程度為警告
- 當硬盤的損壞程度已經超出軟件的可修復的范圍(通常由廠商決定),軟件則會盡最大能力防止再次寫入數據的丟失(如避開已損壞扇區),同時會報告異常值,異常程度為危險
- BIOS自檢時,主板會檢測硬盤的S.M.A.R.T.信息,如果硬盤的異常程度為危險時,會提醒用戶及時備份數據(如嗡鳴聲或上報告警信息)
3、SMART運行原理
該技術所需數據被存放在硬盤物理盤面最前面的磁道中,由硬盤廠商將相關管理程序和數據寫入該磁道中,包括加解密程序,自監控程序,自修復程序等,主機的監控軟件可以通過“SMART RETURN STATUS”的命令讀取S.M.A.R.T.信息,且這些信息不允許被用戶直接修改。
二、部署實踐
官網地址:smartmontools
1、SMART軟件安裝
下載頁面:Download
Smartmontools(S.M.A.R.T. Monitoring Tools)是一組實用程序,包括smartctl和smartd兩部分,用于控制和監控S.M.A.R.T信息,適用于大部分ATA、SCSI和NVMe硬盤
Smartmontools可以顯示由S.M.A.R.T監測到的硬盤問題,通知即將可能會發生的故障,提示用戶及時備份數據
-
Windows系統
官網下載已編譯好的exe程序,直接執行安裝即可 -
Linux系統
使用在線源直接安裝即可
# CentOS
yum install smartmontools -y
# Ubuntu
apt-get install smartmontools -y
2、SMART操作命令
2.1、狀態查詢
smartctl -a <device-path>
:獲取硬盤所有SMART信息smartctl -i <device-path>
:獲取硬盤標識信息smartctl -x <device-path>
:獲取硬盤所有信息smartctl -A <device-path>
:獲取硬盤SMART廠家預設屬性及數值smartctl -H <device-path>
:獲取硬盤健康狀態
注:PASSED
表示硬盤健康狀態良好
2.2、健康測試
smartctl -t short <device-path>
:后臺檢測硬盤,消耗時間短smartctl -t long <device-path>
:后臺檢測硬盤,消耗時間長smartctl -C -t short <device-path>
:前臺檢測硬盤,消耗時間短smartctl -C -t long <device-path>
:前臺檢測硬盤,消耗時間長
3、SMART信息解讀
Known ATA S.M.A.R.T. attributes
硬盤SMART檢測參數詳解[轉]
[root@node152 ~]# smartctl -a /dev/sdp
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_VALUE1 Raw_Read_Error_Rate 0x000f 077 064 044 Pre-fail Always - 510016003 Spin_Up_Time 0x0003 092 091 000 Pre-fail Always - 04 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 4085 Reallocated_Sector_Ct 0x0033 100 100 010 Pre-fail Always - 07 Seek_Error_Rate 0x000f 093 060 045 Pre-fail Always - 19093628589 Power_On_Hours 0x0032 051 051 000 Old_age Always - 4322210 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 012 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 404
184 End-to-End_Error 0x0032 100 100 099 Old_age Always - 0
187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0
188 Command_Timeout 0x0032 100 098 000 Old_age Always - 13 13 13
189 High_Fly_Writes 0x003a 100 100 000 Old_age Always - 0
190 Airflow_Temperature_Cel 0x0022 061 047 040 Old_age Always - 39 (Min/Max 35/42)
191 G-Sense_Error_Rate 0x0032 066 066 000 Old_age Always - 68816
192 Power-Off_Retract_Count 0x0032 100 100 000 Old_age Always - 1429
193 Load_Cycle_Count 0x0032 083 083 000 Old_age Always - 35840
194 Temperature_Celsius 0x0022 039 053 000 Old_age Always - 39 (0 19 0 0 0)
195 Hardware_ECC_Recovered 0x001a 077 001 000 Old_age Always - 51001600
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 - 10
240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 39924h+21m+27.906s
241 Total_LBAs_Written 0x0000 100 253 000 Old_age Offline - 586625564824
242 Total_LBAs_Read 0x0000 100 253 000 Old_age Offline - 251070645683
-
1 Raw_Read_Error_Rate
該值為廠商指定的原始值,從硬盤讀取數據時發生的硬件讀取錯誤率相關的數據,原始值對于不同廠商有不同的結構,且通常沒有十進制數的意義;對于某些驅動器,這個數字可能會在正常操作期間增加,而不一定意味著錯誤; -
3 Spin_Up_Time
該值表示為主軸平均旋轉時間(從0轉速到完全運轉耗費時長,單位為毫秒) -
4 Start_Stop_Count
該值表示為主軸啟動/停止的次數(啟停計數),即硬盤主軸電機啟動/停止次數累計,系統一些功能如硬盤休眠功能等會使得硬盤啟動/停止次數大大增加 -
※ 5 Reallocated_Sector_Ct
參數值通常應為0
該值表示為重映射扇區的次數,原始值表示已經找到并重新映射的壞扇區的計數,因此,屬性值越高,驅動器必須重新分配的扇區就越多。這個值主要用來衡量驅動器的預期壽命; 如果一個驅動器有任何重新分配,那么它在最近幾個月內失敗的可能性就會大大增加 -
7 Seek_Error_Rate
該值為廠商指定的原始值,表示為磁頭尋道誤差率。如果機械定位系統出現部分故障,就會產生尋找誤差。這種故障可能是由于許多因素造成的,如伺服系統的損壞,或硬盤的熱擴展。原始值對于不同的供應商具有不同的結構,并且通常沒有十進制數的意義。對于某些驅動器,這個數字可能會在正常操作期間增加,而不一定意味著錯誤 -
9 Power_On_Hours
該值表示為開機狀態下的小時數,默認情況下,通常硬盤總預期壽命為5年(7x24小時不間斷運行,即運行總小時數可達43800 h) -
10 Spin_Retry_Count
該值表示為旋轉嘗試啟動的重試次數,記錄了主軸電機啟動后在規定時間內未達到額定轉速而再次啟動的次數,該屬性值的增加是硬盤機械子系統出現問題的標志 -
12 Power_Cycle_Count
該值表示為通電周期次數,即硬盤電源開關次數累計,通常硬盤通電/斷電只會在主機開機/關機時才會發生,主機經歷一次開關機次數才會加1 -
※ 187 Reported_Uncorrect
參數值通常應為0,當出現不為0數值時,則需要考慮備份硬盤數據
該值表示為無法使用硬件ECC恢復的錯誤次數 -
※ 188 Command_Timeout
參數值通常應為0
該值表示為因硬盤超時而終止的操作次數 -
189 High_Fly_Writes
該值表示為因磁頭寫入高度出現偏差的次數,硬盤廠商實現了一個磁頭寫入高度傳感器,通過檢測磁頭何時飛出其工作范圍,來為寫操作提供額外的保護;如果磁頭的寫入高度出現偏差,則停止寫入進程,并將信息
重新寫入或換一個位置寫入 -
190 Airflow_Temperature_Cel
該值表示為硬盤內部盤片表面的氣流溫度 -
191 G-Sense_Error_Rate
該值表示為硬盤受到外部沖擊、振動導致出錯的頻度 -
192 Power-Off_Retract_Count
該值表示為硬盤意外斷電的次數,通常主機正常關機時會給硬盤一個通知,當出現意外斷電時,硬盤在未收到關機通知突然失電,此時磁頭自動復位,迅速離開盤片 -
193 Load_Cycle_Count
該值表示為硬盤磁頭加載/卸載次數 -
194 Temperature_Celsius
該值表示為硬盤當前溫度,通常建議運行溫度不要超過45°(最高溫度不超過60°),避免溫度過高引起機械變形,導致尋道及讀寫錯誤率上升,降低硬盤性能 -
195 Hardware_ECC_Recovered
不同廠商具有特定的數據架構,該數據量大小不能直接說明問題
該值表示為硬盤通過ECC技術校正錯誤的次數,ECC(即Error Correcting Code)技術可以容忍錯誤,將錯誤自動修正,使得讀寫操作持續進行,不因錯誤而中斷 -
※ 197 Current_Pending_Sector
參考:How to Fix Current Pending Sector Count Warning
參數值通常應為0,當出現非0情況且參數值在不斷增加時,需考慮及時備份數據,避免文件系統損壞,硬盤變為RAW格式
該值表示為硬盤當前尚未重映射的不穩定扇區數量,當不能從扇區寫入或讀取數據時,這些扇區會被標記為壞扇區,并重新映射分配寫入到硬盤備用扇區
當壞扇區被重映射時,5 Reallocated_Sector_Ct
(重映射扇區次數)參數值也會增加,當硬盤沒有空閑扇區可以重映射時,197 Current_Pending_Sector
(當前尚未重映射的不穩定扇區數量)參數值也會增加 -
※ 198 Offline_Uncorrectable
參考: What Does Uncorrectable Sector Count Mean & How to Fix It
參數值通常應為0,當出現非0情況且參數值在不斷增加時,表明讀寫硬盤扇區時存在許多不可糾正的錯誤,該錯誤可能損壞或造成硬盤永久性故障,導致數據丟失
該值表示為讀寫扇區發生不可糾正錯誤的總數 -
199 UDMA_CRC_Error_Count
參考:How to Fix UDMA CRC Error Count? Here Are 5 Solutions!
當參數值不為0且在不斷增加時,表明硬盤控制器->數據線->硬盤接口鏈路存在問題,數據線損壞或者接口接觸不良都可能會導致出現此問題(數值不再繼續增加表示問題已解決)
該值表示為硬盤Ultra DMA CRC錯誤次數,表明主機和硬盤之間數據傳輸存在問題,UDMA (Ultra DMA)是超直接存儲器訪問(Ultra Direct Memory Access)的縮寫,它是一種硬盤驅動器技術,允許硬盤驅動器直接與內存通信,而不依賴于CPU;CRC代表循環內存校驗(Cyclic Memory Check),這是一個校驗和,可以檢測數據是否損壞 -
240 Head_Flying_Hours
該參數值表示為硬盤定位磁頭期間所花費的時間 -
241 Total_LBAs_Written
該參數值表示為硬盤LBA寫入總數 -
242 Total_LBAs_Read
該參數值表示為硬盤LBA讀取總數
三、異常預測
基于隨機森林算法進行硬盤故障預測
Making Sense of SSD SMART Stats
backblaze是一家領先的云存儲服務提供商,為企業、開發人員、IT專業人員和個人構建應用程序、托管內容、管理媒體、備份和存檔數據提供了基礎
自2013年以來,backblaze每季度會發布其數據中心硬盤的統計數據和相關分析(具體可參考Hard Drive Data and Stats)
backblaze根據其數據中心硬盤監控數據,分析HDD故障和SMART屬性之間的關聯性(具體可參考What SMART Stats Tell Us About Hard Drives),
發現SMART 5、187、188、197、198與HDD故障的相關率最高,SMART屬性相關說明如下
SMART編號 | SMART名稱 | 相關說明 |
---|---|---|
SMART 5 | Reallocated Sectors Count | 重映射扇區次數(當出現壞扇區時,會觸發重新映射分配寫入備用扇區) |
SMART 187 | Reported Uncorrectable Errors | 無法使用硬件ECC恢復的錯誤次數 |
SMART 188 | Command Timeout | 因硬盤超時而終止的操作次數 |
SMART 197 | Current Pending Sector Count | 當前尚未重映射的不穩定扇區數量 |
SMART 198 | Uncorrectable Sector Count | 讀寫扇區發生不可糾正錯誤的總數 |
正常情況下,這5個SMART屬性值應為0,當出現全部非0情況,對應硬盤出現故障的概率會很大