SMART 監控項研究以及存儲健康分級機制

圖片描述

在機械硬盤技術極爲成熟的當下,硬盤損壞對普通消費者來講彷佛愈來愈遙遠,我本身用的一臺 X200 筆記本從 2009 年買來用到如今,那塊日立硬盤一點問題都沒出過,好像都沒有理由換筆記本了嚶嚶嚶……安全

不過殘酷的現實是,對於商業應用來講,消費級硬盤的可靠性仍然是一個須要關注的問題,特別是如BlackBlaze 那樣使用消費級硬盤來搭建存儲系統的系統。服務器

UPYUN 來講,雖然咱們核心系統並未使用消費級存儲設備,但外圍系統快速增加,數量龐大的硬盤開始對運維部門精簡的人員數量形成了巨大的壓力,由於普通的「損壞-更換」的方式形成的事務堆積和時間碎片化使得人員精力分散,不堪重負。運維

因而本文的主題誕生了,在一系列調查和統計數據的支撐下,固然還要感謝萬能的 Google ,咱們最終有效的解決了這方面問題。性能

S.M.A.R.T. 信息是 UPYUN 監控硬盤的極爲重要的指標,咱們能經過它對硬盤底層的健康情況進行診斷甚至預測,從而在硬盤故障前就將其從業務系統中摘除,避免影響線上服務。測試

同時也能經過它對存儲裝置的異常緣由進行診斷,可判斷因素包括溫度、震動、機件故障、瞬間衝擊等,是運維工做中不可替代的存儲系統底層檢測方式。spa

我提取了部分線上機器共 3047 塊硬盤的 S.M.A.R.T. 的數據用於研究分析,並以這些原始數據爲基礎總結了一些能有效斷定硬盤健康程度的項目。設計

根據過濾無效數據後的 61511 條數據,咱們將一些項目做爲了系統剔除硬盤的異常判斷依據,以及預測硬盤是否須要更換的依據。code

咱們根據關鍵的硬盤監控數據將硬盤的健康情況分爲下面幾級。orm

硬盤健康級別

Good 「健康」級

該級別的硬盤很是健康,無任何風險存在,一般爲全新上線的硬盤,對於標記爲 Good 的硬盤,不會有任何問題存在,也無需留意和監控。blog

特徵界定:全部風險判斷項均爲 0 或關鍵原始數據增加狀況低於「報告」標準。

Caution 「報告」級

健康情況爲 Caution 「報告」的硬盤,在監控指標上存在必定程度的劣化,可是尚在硬盤主控的安全範圍,主控芯片可有效的處理異常並在性能上沒有任何明顯衰退跡象,它還能承擔很長時間的正常服務,可是有必要考慮它的健康情況隨時可能提高到警惕級別。

特徵界定:任一風險項知足「報告」標準。

Threatening 「警惕」級

健康情況爲 Threatening 「警惕」的硬盤,已經存在必定的性能衰退風險,由於已經開始有一些主控芯片沒法控制的狀況發生,它的性能可能也已經有些微降低,它的健康情況正在逐步脫離主控系統的控制,應當發出告警通知到運維人員並考慮儘快從業務系統中摘除該硬盤進行替換,避免它進入衰退級別時還在進行線上服務。

特徵界定:任一風險項知足「警惕」標準

處理動做:人力容許的狀況下安排更換硬盤,從警惕告警發出到進入衰退期一般有足夠的時間進行硬盤替換。若是意外進入衰退期,系統也會自動將其從業務系統中隔離。

Decline 「衰退」級

健康情況爲 Decline 「衰退」的硬盤,不該該在線上服役,原則上處於警惕級別的硬盤就應該被更換,由於「衰退」的硬盤用於線上服務時已經有很大的可能對業務系統的總體運行形成威脅,一般表現爲業務系統性能降低,數據讀寫出錯和超時等,但剛剛進入「衰退」級別的硬盤一般不會產生系統級別的錯誤,只能從性能降低角度判斷它存在性能衰退的狀況。

特徵界定:任一風險項知足「衰退」標準

處理動做:系統會自動將其從業務系統中剔除,但如因各類緣由暫時沒法更換,則應儘快在物理上將其斷開和設備的鏈接,避免硬盤狀態接近「災難」級而致使系統出現異常(例如進程卡死)。

Disaster 「災難」級

健康情況爲 Disaster 「災難」的硬盤一般不會在任何線上系統中出現。在硬盤分級機制啓用後,理論上會出現「災難」級硬盤的狀況只有劇烈衝擊或忽然掉電或電流衝擊致使的硬盤瞬間損壞以及 S.M.A.R.T. 芯片故障致使的沒法讀取。該級別的硬盤徹底沒法工做。

特徵界定:

  1. 知足多項「衰退」的特徵。
  2. 或 S.M.A.R.T. 信息沒法讀取。
  3. 存在大量系統級告警或乾脆沒法識別。

處理動做:更換它!

S.M.A.R.T. 關鍵監控項詳解

Raw_Read_Error_Rate 原始讀取錯誤率

ID:1,告警項:

「報告」:巡檢 / Patrol.
  • 閾值:單位時間內極高增加率
  • 說明:從硬盤讀取原始數據時的錯誤率。一個非零值表示磁盤表面或讀寫磁頭有問題。
  • 影響:該項數據大幅度增長一般說明硬盤年事已高,應當考慮預備從線上環境替換下來,但短時間內不會有太大問題,只是會必定程度上影響性能,而該值增加率很是大的狀況下也可能較大程度的影響硬盤性能。

因爲各廠商對該值定義不一樣,該值增長狀況和硬盤工做情況也不存在強關聯性,因此不做爲警惕和衰退等級界定要素。

Seek_Error_Rate 尋道錯誤率

ID:7,告警項:

「報告」:巡檢 / Patrol.
  • 閾值:單位時間內極高增加率
  • 說明:定位數據時的錯誤頻率
  • 影響:該項數據大幅度增長時,硬盤性能有必定影響,但還能夠正常工做,不會立馬嗝屁,但存在必定風險,該項數據和原始讀取錯誤率同時上漲的狀況下,硬盤可能發生機械性能衰退,聲音變大,震動加重,甚至產生難聽的噪聲,應當考慮儘快替換或退役。

因爲各廠商對該值定義不一樣,該值增長狀況和硬盤工做情況也不存在強關聯性,因此不做爲警惕和衰退等級界定要素。

Reallocated_Sector_Ct 重分配扇區計數

ID:5,告警項:

「警惕」:性能衰退 / Performance decline.
「衰退」:數據風險 / High Data Risk.
  • 閾值:「警惕」非 0
  • 說明:當硬盤發現一個讀/寫/驗證錯誤,它會標記扇區爲 "Reallocated" 並移動數據到一個保留區
  • 影響:硬盤情況已經惡化到不僅僅主要影響性能,甚至發生數據完整性風險的程度,它已經不用搶救了,應當當即更換或退役,這時它依然還能夠依靠主控系統的努力堅持一段時間,但風險已經增長到不可控的程度。

Unexpect_Power_Loss_Ct / Power-off Retract Count / Emergency Retract Cycle Count 異常斷電計數

ID:174 / 192,告警項:

「報告」:偵測到核心供電異常 / Core Power Interruption Detected.
  • 閾值:增長
  • 說明:檢測到該值增加應檢查設備是否存在電源故障或供電異常
  • 影響:該計數值增長一般代表設備經歷了一次異常關機,若是是單個硬盤發生該項告警,則應考慮線纜或主板故障,監控該值的意義主要是判斷設備供電故障而非異常關機,由於外部檢測系統能更快的發現異常關機。

Wear_Leveling_Count 顆粒平均擦寫次數

ID:177,告警項:

「警惕」:壽命將盡 / Disk Is Dying.
「衰退」:回天乏術 / Disk Is Dead.
  • 閾值:
    警惕級 WORST 數據(非 RAW )低於15;
    衰退級 WORST 數據(非 RAW )爲 小於等於 1 .

  • 說明:SSD 特有項,用於評估 SSD 壽命,因廠商評估標準不一樣,故不以 RAW VALUE 爲標準。

  • 影響:硬盤進入警惕級時應考慮更換它,由於該項降爲 0 和硬盤工做狀況不存在強關聯性,但即使各項指標均無異常,也不推薦在線上使用時超期服役。

通常認爲該值爲零時,已達到硬盤設計使用壽命。

Runtime_Bad_Block 運行時壞塊計數

ID:183,告警項:

「報告」:安定度降低 / Stability declining.
  • 閾值:報告級:大於 1
  • 說明:這個值表明硬盤運行時出現的壞塊數量,一般該值爲零。
  • 影響:該值和硬盤運行情況不存在強關聯,該值意味着運行時遇到壞塊,可是對於 NAND 存儲裝置來講,壞塊不像機械硬盤那麼敏感,主控能很好的處理這些問題,可是該值和硬盤可靠及穩定性相關,須要密切關注。

根據統計數據來看,線上全部 SSD 該值增加的數量很是少。具體對可靠性和性能的影響還需後續觀察,因此先置爲報告級監控項。

End-to-End_Error 端到端校驗錯誤

ID:184,告警項:

「報告」:傳輸介質異常 / Transmission Medium Fucked Up.
  • 閾值:一個非 0 值
  • 說明:主機和硬盤間的數據傳輸校驗出錯計數。
  • 影響:這個值極爲少見,我用於測試的所有 3000 多塊硬盤中無一出現該值。根據資料來看,該值增加通常狀況下是傳輸介質例如 SATA 線或者接口存在問題。可嘗試從新拔插或者更換傳輸線。

因沒有發現案例,因此該項目前是置爲報告級的。

Reported_Uncorrect 沒法恢復的錯誤

ID:187,告警等級:

衰退:偵測到數據風險 / High Data Risk.
  • 說明:該項值非零既表明硬盤已經出現較爲嚴重的問題,它表明着主控已經確認沒法以包括硬件 ECC 在內的任何手段糾正的錯誤開始出現。
  • 影響:這樣的硬盤應馬上安排替換而不該繼續使用。

COMMAND_TIMEOUT 指令超時

ID:188,告警等級:

「警惕」:性能衰退 / Performance decline.
「衰退」:嚴重性能衰退風險 / High Performance Risk.
「災難」:別鬧 / Performance is gone.
  • 閾值:
    警惕級:非 0
    衰退級:高於 10
    災難級:高於 1000000

  • 說明:該項值非零並持續增加代表硬盤響應能力降低,性能受嚴重影響。

  • 影響:須要即刻更換,但因該值剛開始上升時不會發生嚴重錯誤,從而可能難以觸發告警,它的獨立上漲將致使硬盤性能受到難以感知的影響,可是會逐步劣化成嚴重的性能降低風險。

根據經驗,通常認爲該值和 SMART187 以及 SMART183 存在關聯性,上述兩者的出現有必定可能(看讀寫頻率)致使該值持續升高。

High_Fly_Writes 磁頭在異常高度工做

ID:189,告警等級:

「報告」:磁頭異常 / Disk Fly High.
  • 閾值:大於 1 或增加
  • 說明:該項值非零時代表硬盤可能曾遭到衝擊或存在機件異常。
  • 影響:須要密切監控是否存在惡化狀況,該值持續增加可致使設備性能降低,因該值的增加意味着未完成就被停止的操做數量增加。

G-sense Error Rate 加速度傳感器告警

ID:191,告警等級:

「報告」:碰撞警報 / Physical Impact Warning.
  • 閾值:增加
  • 說明:盤體內置加速度傳感器檢測到可能對硬盤形成傷害的運行時衝擊。
  • 影響:該值比較少見,可是意味着外部環境有劇烈變更,例如服務器受到撞擊,地震等,當某個機房全部服務器都檢測到該項值上升時,請聯繫機房確認環境是否有劇變或地震發生。

Temperature_CelsiusAirflow_Temperature_Celsiu 溫度 / 氣流溫度

ID:194 或 190,告警等級:

「報告」:燒烤硬盤 / BBQ.
「警惕」:率先踏入地獄 / Drop feet first in the hell.
  • 閾值:
    報告級:52
    警惕級:62

  • 說明:硬盤工做溫度狀況。

  • 影響:若是某個機房的硬盤工做溫度廣泛太高,應當確認機房內散熱狀況是否會致使設備壽命下降。

Current_Pending_Sector 當前待映射扇區計數

ID:197,告警等級:

「報告」:安定度降低 / Stability declining.
「警惕」:性能衰退 / Performance decline.
「衰退」:數據風險 / High Data Risk.
  • 閾值:
    報告級:非 0
    警惕級:3
    衰退級:10

  • 說明:這一參數的數據表示了「不穩定」的扇區數,即「等待被映射」的扇區數量。

  • 影響:若是有扇區在讀取時出現錯誤,ID197 就會增加,若是該扇區隨後被讀寫成功,等待被映射的操做就會取消,ID197 會降低。若是下一次對該扇區的寫操做繼續發生錯誤,就會產生重映射,而後 ID5 計數增加,ID197 計數降低。若是該扇區後續無操做到達,ID197 數值也會維持不變。

所以,該項少許錯誤不會有嚴重後果,但該項值快速或大量發生變化,則應考慮是否硬盤發生了穩定性方面的問題。

Offline Uncorrectable / Uncorrectable Sector Count 屏蔽扇區計數

ID:198,告警等級:

「報告」:安定度降低 / Stability declining.
  • 閾值:
    報告級:3

  • 說明:這一項數據表明磁盤主控確認失效已經屏蔽的扇區計數。

  • 影響:理論上該值過大會致使數據風險。統計顯示絕大多數磁盤該數據爲零。但該值非零並不和磁盤性能降低或故障存在強關聯,問題磁盤的這個值通常都比較高,因此將其置爲報告級別待後續研究。

關於 S.M.A.R.T. 數據的可靠性

S.M.A.R.T. 數據在正常狀況下都是能快速響應並準確的。

在 UPYUN 的實際線上環境,遇到過部分硬盤存在 S.M.A.R.T. 信息沒法讀取的狀況。我對發生這些狀況的硬盤作了一下簡單的調查後,發現發生此類狀況的硬盤通常伴隨着性能的嚴重降低,一般原始讀取錯誤增加率約爲十幾秒百萬,或某個單項監控增加率異常高,基本上摘除之後 S.M.A.R.T. 響應速度都能必定程度上恢復。

我認爲這多是因爲硬盤主控芯片已無力處理海量的數據糾正要求,從而沒有空閒的資源響應系統對 S.M.A.R.T. 的請求致使的,而事實上這些硬盤已經存在很是嚴重的問題了。只要咱們針對其硬盤工做狀態做出合理的健康判斷並在它表現出明顯故障以前摘除,那麼就基本上不會發生 S.M.A.R.T. 監控失效狀況了。


注: 文章爲 UPYUN 攻城獅 WooDragon 原創內容,轉載需通過做者受權,同時保留署名和原文連接。
相關文章
相關標籤/搜索