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

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

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

我們根據關鍵的硬盤監控數據將硬盤的健康狀況分為下面幾級。

硬盤健康級別

Good 「健康」級

該級別的硬盤非常健康,無任何風險存在,通常為全新上線的硬盤,對於標記為 Good 的硬盤,不會有任何問題存在,也無需留意和監控。

特徵界定:所有風險判斷項均為 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,告警項:

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

由於各廠商對該值定義不同,該值增加情況和硬盤工作狀況也不存在強關聯性,所以不作為警戒和衰退等級界定要素。

Seek_Error_Rate 尋道錯誤率

ID:7,告警項:

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

由於各廠商對該值定義不同,該值增加情況和硬盤工作狀況也不存在強關聯性,所以不作為警戒和衰退等級界定要素。

Reallocated_Sector_Ct 重分配扇區計數

ID:5,告警項:

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

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

ID:174 / 192,告警項:

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

Wear_Leveling_Count 顆粒平均擦寫次數

ID:177,告警項:

<code>「警戒」:壽命將盡 / Disk Is Dying.
「衰退」:回天乏術 / Disk Is Dead.
/<code>
  • 閾值:警戒級 WORST 數據(非 RAW )低於15;衰退級 WORST 數據(非 RAW )為 小於等於 1 .
  • 說明:SSD 特有項,用於評估 SSD 壽命,因廠商評估標準不同,故不以 RAW VALUE 為標準。
  • 影響:硬盤進入警戒級時應考慮更換它,因為該項降為 0 和硬盤工作情況不存在強關聯性,但即便各項指標均無異常,也不推薦在線上使用時超期服役。

一般認為該值為零時,已達到硬盤設計使用壽命。

Runtime_Bad_Block 運行時壞塊計數

ID:183,告警項:

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

根據統計數據來看,線上所有 SSD 該值增長的數量非常少。具體對可靠性和性能的影響還需後續觀察,所以先置為報告級監控項。

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

ID:184,告警項:

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

因沒有發現案例,所以該項目前是置為報告級的。

Reported_Uncorrect 無法恢復的錯誤

ID:187,告警等級:

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

COMMAND_TIMEOUT 指令超時

ID:188,告警等級:

<code>「警戒」:性能衰退 / Performance decline.
「衰退」:嚴重性能衰退風險 / High Performance Risk.
「災難」:別鬧 / Performance is gone.
/<code>
  • 閾值:警戒級:非 0衰退級:高於 10災難級:高於 1000000
  • 說明:該項值非零並持續增長表明硬盤響應能力下降,性能受嚴重影響。
  • 影響:需要即刻更換,但因該值剛開始上升時不會發生嚴重錯誤,從而可能難以觸發告警,它的獨立上漲將導致硬盤性能受到難以感知的影響,但是會逐步劣化成嚴重的性能下降風險。

根據經驗,一般認為該值和 SMART187 以及 SMART183 存在關聯性,上述二者的出現有一定可能(看讀寫頻率)導致該值持續升高。

High_Fly_Writes 磁頭在異常高度工作

ID:189,告警等級:

<code>「報告」:磁頭異常 / Disk Fly High.
/<code>
  • 閾值:大於 1 或增長
  • 說明:該項值非零時表明硬盤可能曾遭到衝擊或存在機件異常。
  • 影響:需要密切監控是否存在惡化情況,該值持續增長可導致設備性能下降,因該值的增長意味著未完成就被中止的操作數量增長。

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

ID:191,告警等級:

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

Temperature_Celsius 或 Airflow_Temperature_Celsiu 溫度 / 氣流溫度

ID:194 或 190,告警等級:

<code>「報告」:燒烤硬盤 / BBQ.
「警戒」:率先踏入地獄 / Drop feet first in the hell.
/<code>
  • 閾值:報告級:52警戒級:62
  • 說明:硬盤工作溫度情況。
  • 影響:如果某個機房的硬盤工作溫度普遍過高,應當確認機房內散熱情況是否會導致設備壽命降低。

Current_Pending_Sector 當前待映射扇區計數

ID:197,告警等級:

<code>「報告」:安定度下降 / Stability declining.
「警戒」:性能衰退 / Performance decline.
「衰退」:數據風險 / High Data Risk.
/<code>
  • 閾值:報告級:非 0警戒級:3衰退級:10
  • 說明:這一參數的數據表示了“不穩定”的扇區數,即“等待被映射”的扇區數量。
  • 影響:如果有扇區在讀取時出現錯誤,ID197 就會增長,如果該扇區隨後被讀寫成功,等待被映射的操作就會取消,ID197 會下降。如果下一次對該扇區的寫操作繼續發生錯誤,就會產生重映射,然後 ID5 計數增長,ID197 計數下降。如果該扇區後續無操作到達,ID197 數值也會維持不變。

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

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

ID:198,告警等級:

<code>「報告」:安定度下降 / Stability declining.
/<code>
  • 閾值:報告級:3
  • 說明:這一項數據代表磁盤主控確認失效已經屏蔽的扇區計數。
  • 影響:理論上該值過大會導致數據風險。統計顯示絕大多數磁盤該數據為零。但該值非零並不和磁盤性能下降或故障存在強關聯,問題磁盤的這個值一般都比較高,所以將其置為報告級別待後續研究。

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

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

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

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


分享到:


相關文章: