固態硬碟S.M.A.R.T詳解
2023-07-05 01:56:16
寫這篇文章,是因為在測試的過程中看到了 SSD存在偶爾有性能下降的情況,經分析為S.M.A.R.T命令所導致,雖然這種情況看似不嚴重,但在某些關鍵性領域,如:數據採集,有可能會導致丟失數據包的嚴重後果,先看圖片:
S.M.A.R.T概述
S.M.A.R.T.(Self-Monitoring Analysis And Reporting Technology),意思為「自我檢測分析與報告技術」,從名字也能看出其作用是故障預警,固態硬碟可以通過監測自身的健康狀態,並將參數值反饋給監控軟體或者作業系統,事實上,大部分的參數僅僅對工程師而言有意義,對於最終用戶而言,只關注一些關鍵指標即可,如:新增壞塊統計,剩餘使用壽命,擦除次數等即可。
一些常用的測試軟體也可以獲取到SSD的S.M.A.R.T信息:
SSD主控廠商也會提供相應的工具:
經過多年HDD硬碟廠商的完善,S.M.A.R.T已經形成了一些標準,但對於SSD來說,大多數S.M.A.R.T都是自定義的,以至於每個廠商所提供的參數並不一致,但大體都會參考HDD S.M.A.R.T來設定。
SSD S.M.A.R.T信息保存在特定的區域中,由Firmware安排,有可能保存在OP區中,也有可能保存在任何FW工程師想要放置的地方,或者由單獨的表來存放。
固態硬碟的S.M.A.R.T與HDD不完全相同,網絡上常用的測試軟體提供的S.M.A.R.T都是基於HDD設置的,SSD廠商通常會自行根據Nand Flash的特性設定S.M.A.R.T。
S.M.A.R.T各項參數釋義
01 原始讀取誤碼率Raw Read Error Rate這項指標反饋了Nand Flash的初始健康狀態,數據值包含了可校正的錯誤與不可校正錯誤;
09 通電時間累計 Power-On Hours計量單位為小時,也可以以分鐘、秒為計量單位,由SSD廠商自行定義,通常情況下活動、空閒和睡眠三種狀態的時間都會被計算在內,有些SSD會通過一些電源管理功能的開啟會將睡眠時間排除在外。此參數表示硬碟通電的累計時間,新硬碟當然應該接近0,但事實上SSD廠商在測試過程中已經使用數個小時甚至數十上百個小時,只是測試完畢後重新量產,參數又會歸零。
0C 通電周期計數 Power Cycle Count通電周期計數的數據值表示了硬碟通電/斷電的次數,即電源開關次數的累計,新硬碟通常只有幾次。
固態硬碟的通斷電與HDD不同,SSD通常會做大量的P/E cycle測試,軍工、工業類SSD還需要做大量的異常通斷電測試,以防止在異常掉電的情況下丟失映射表以及規避其他因掉電導致不可靠的因素,兵哥公司通常會進行3000次到10000次的異常掉電測試,但是,測試完畢,會對SSD重新量產,Power Cycel Count會被清空,用戶看到的仍然是少量的通電次數。
B8 初始壞塊計數 Initial Bad Block Count
每個Nand Flash出廠時都會有初始壞塊,固件通過掃描每個Block的首個和最後一個page Spare Area區域的0xFF標記,如果沒有0xFF標誌,則表示為壞塊,壞塊由固件進行統一管理,列入壞塊表。
初始壞塊的數量可以從某種程度上反映SSD的初始健康狀態,初始壞塊越多,健康狀態相對來說就越差。
C3 編程失敗塊計數 Program Failure Block Count
編程失敗會將此page所在的Block列為壞塊,這類的壞塊稱為新增壞塊或者使用壞塊,壞塊會被列入壞塊管理表,每個Block都存在一定的擦寫壽命,當編程識別以及擦除失敗時,都會被列入壞塊表進行管理,對於數據安全要求很高的領域來說,一次編程失敗或者擦除失敗或者讀取失敗都可以將此塊列為壞塊。
對應下面C4,擦除失敗塊計數,同樣道理。
C4 擦除失敗塊計數 Erase Failure Block Count
解釋同C3
C5 讀取失敗塊計數 Read Failure Block Count
解釋同C3
CA flash總的bit錯誤統計 Total Count of Error bits from flash
這個統計包括了編程幹擾(Program Disturb)錯誤,讀取幹擾錯誤(Read Disturb)和擦除錯誤,可糾正和不可糾正的錯誤bit總數。
這個值看上去會非常大,尤其是ECC能力較弱的SSD,值會更大,配合CB參數,可以大概判斷此SSD的糾錯能力,值越大,說明糾錯能力越差。
CB 讀取扇區可糾正bit錯誤統計 Total Count of Read Sectors with correctable bits errors
這個統計只包括已經糾正的錯誤bit數量,用CA-CB就可以得出不可糾正的錯誤數量,CA和CB的差異越大,說明SSD的糾錯能力越弱,SSD的壽命也會更短。
CD最大PE次數Maximum PE Count
這個參數是根據Nand Flash的datasheet來設定的,事實上,nand Flash的PE次數要比datasheet規定的多,例如:給出的值是3000,等真正的計數達到3000時,剩餘壽命會顯示為0,但實際上SSD的健康狀態可能還非常好,所以,此參數只能做為最為保險使用的參考。
CE 最小擦除總數Minimum Erase Count
最大、最小和平均擦除總數描述每個Block的擦除次數,最大和最小擦除次數差別越小,說明磨損平衡算法做的越好,平均值沒有任何意義。
CF極限擦除總數Maximum Erase Count
見CE解釋
D0 平均擦除總數Avage Erase Count
見CE解釋
D1 剩餘壽命Remaining Life(%)
這個參數顯示SSD的剩餘壽命,參考CD的描述可知這個值僅僅是個參考值,並不真正代表SSD的壽命。