S.M.A.R.T.,全稱為「Self-Monitoring Analysis and Reporting Technology」,即「自我監測、分析及報告技術」,是一種自動的硬碟狀態檢測與預警系統和規範。通過在硬碟硬體內的檢測指令對硬碟的硬體如磁頭、碟片、馬達、電路的執行情況進行監控、記錄並與廠商所設定的預設安全值進行比較,若監控情況將要或已超出預設安全值的安全範圍,就可以通過主機的監控硬體或軟體自動向使用者作出警告並進行輕微的自動修復,以提前保障硬碟資料的安全。除一些出廠時間極早的硬碟外,現在大部分硬碟均配備該項技術。

功能

該技術能使硬碟更穩定的執行。作用如下:

  • 當硬碟的損壞程度還能在軟體可修復的範圍內(通常由廠商決定),軟體就會自動修理,防止資料的進一步損壞。同時報告異常值,異常程度為警告
  • 當硬碟的損壞程度已經超出軟體的修復承載範圍(通常由廠商決定),軟體則會盡最大能力防止再次寫入資料的遺失(如避開已損壞磁區),同時會報告異常值,異常程度為危險
  • BIOS自檢時,主機板會檢測硬碟的S.M.A.R.T.資訊,如果硬碟的異常程度為危險時,會提醒使用者及時備份資料(如嗡鳴聲或顯示文字)。
  • Windows 7或以上的Windows系統,如果檢測到硬碟的S.M.A.R.T.錯誤,也會彈出警告視窗,提示使用者備份資料。

歷史

最早期的硬碟監控技術起源於1992年IBM在為AS/400電腦的IBM9337硬碟陣列中的IBM 0662 SCSI2代硬碟機之中,後來該技術被命名為Predictive Failure Analysis(故障預警分析技術),它是通過在韌體中測量幾個重要的硬碟安全參數和評估他們的情況。從物理硬碟傳送到監控軟體的結果中被限定兩種結果:「硬碟安全」和「硬碟不久後會發生故障」。

不久,由個人電腦製造商Compaq和硬碟製造商SeagateQuantumConner英語Conner提出了名為IntelliSafe的類似技術。通過該技術,硬碟會測量自身的的健康指標並將參量值傳送給作業系統和使用者的監控軟體中,每個硬碟生產商有權決定哪些指標需要被監控和它們的安全閾值。

Compaq於1995年早期將該項技術方案提交到Small Form Factor委員會進行標準化,該方案得到IBMSeagateQuantumConner英語Conner PeripheralsWestern Digital所支援。由於IntelliSafe技術的靈活性,委員會接受了該方案,並正式更名S.M.A.R.T.技術,將其標準化並推廣至ATA-3行業標準中。

運作原理

該技術所需資料被存放在硬碟物理盤面最前面的磁軌中,由硬碟製作商將相關管理程式和資料該磁軌中,包括加解密程式,自監控程式,自修復程式等,主機的監控軟體可以通過「SMART RETURN STATUS」的命令讀取S.M.A.R.T.資訊,且這些資訊不允許被使用者直接修改。

檢測屬性

下面將列出一些S.M.A.R.T.的原始檢測屬性和含義。普遍為檢測值越高效能越好。即使所有製造商都必須遵守共同的規則,但由於有些檢測值在不同硬碟製造商中用不全相同的定義和計量方法而對於不同製作商來說檢測值不全是越高越好,所以下面屬性的指標只作一般參考。除外,各製造商也會根據自己需要添加一些自己專有的檢測屬性。

說明
 
表示數值越高越好
 
表示數值越低越好
重要項:粉色底 當超出安全範圍會對效能嚴重影響,甚至導致資料遺失。
ID ID十六進制值 英文名 中文譯名 最佳 說明
1 0x01 Read Error Rate 底層資料讀取錯誤率
 
記憶體從一個硬碟表面讀取資料時發生的錯誤率。原始值由於不同廠商的不同計算方法而有所不同,其十進制值往往無意義的。
2 0x02 Throughput Performance 讀寫通量效能
 
通常是硬碟讀寫效能的測量值,如果其值有變動,有可能硬碟出現了問題。
3 0x03 Spin-Up Time 碟片啟動時間
 
碟片由靜止啟動加速到穩定正常執行速度的平均所需時間。
4 0x04 Start/Stop Count 電機起停次計數
 
一個碟片啟動關閉周期的統計值,只有硬碟從完全斷電中啟動或從睡眠模式恢復,碟片主軸電機被啟動時才會記一次數。
5 0x05 Reallocated Sector Count 重定位磁區計數
 
記錄由於損壞而被對映到無失真的後備區的磁區計數。當硬碟出現損壞磁區時,可以通過將其物理空間指向到特定的無失真區域進行重對映修復,從而出現壞磁區的硬碟仍可使用。但當高過一定數值後,後磁區消耗殆盡而無法再重對映修復時,這些壞磁區就會顯現出來且無法自行修復。除外由於要要求磁頭讀取這些壞磁區時專門再移動到後備區讀寫資料,對硬碟讀寫效能也有影響。
6 0x06 Read Channel Margin 信道讀取餘量 讀取資料時信道可用的餘量,該屬性沒制定任何功用。
7 0x07 Seek Error Rate 尋道錯誤率 (該屬性是特客製化造商才有的)磁頭尋找磁軌由於機械問題而出錯機率,有多種原因可能引致出錯,如:磁頭伺服構件,盤體過熱,或損壞。於不同廠商的不同計算方法而有所不同,其十進制值往往無意義的。
8 0x08 Seek Time Performance 尋道效能
 
每次尋道時間的平均值,該值短期內迅速減少,有可能硬碟出現了問題。
9 0x09 Power-On Hours 硬碟加電時間
 
硬碟自出廠以來加電啟動的統計時間,單位為小時(或根據製造商設定為分鐘或秒),一般使用者以該值判定硬碟是否被使用過。
10 0x0a Spin Retry Count 電機起轉重試
 
S.M.A.R.T參數電機起轉重試,表明了主軸電機的啟動嘗試次數。這個屬性儲存了關於主軸電機嘗試加速到完全可操作速度的次數(在這種情況下,意味著主軸電機的第一次啟動嘗試沒有成功)。主軸電機頻繁的嘗試啟動,意味著硬碟機的壽命可能將近實際限值。
11 0x0b Recalibration Retries 磁頭校準重試
 
磁頭在一次執行失敗時嘗試校準至正常狀態的統計數,該值改變時意味著硬碟的機械部件已經出現問題了。
12 0x0c Power Cycle Count 裝置開關計數 該屬性表示硬碟電源充分開/關迴圈計數。
13 0x0d Soft Read Error Rate 軟體讀取錯誤率
 
作業系統讀取資料時的出錯率。
183 0xb7 SATA Downshift Error Count SATA降級執行計數 Western Digital 和 Samsung 特有屬性,記錄由於相容問題導致降低SATA傳輸級別執行的計數。
184 0xb8 End-to-End error 終端校驗出錯
 
HP專有S.M.A.R.T.(SMART IV)技術的一個特有屬性,記錄硬碟從碟片讀取資料到高速緩衝記憶體後再傳輸到主機時資料校驗出錯的次數。
185 0xb9 Head Stability 磁頭穩定性 Western Digital特有屬性
186 0xba Induced Op-Vibration Detection Western Digital特有屬性
187 0xbb Reported Uncorrectable Errors 報告不可糾正錯誤
 
硬體ECC無法恢復的錯誤計數。
188 0xbc Command Timeout 通訊逾時
 
由於無法連接至硬碟而終止操作的統計數,一般為0,如果遠超過0,則可能電源問題,資料線介面氧化或更嚴重的問題。
189 0xbd High Fly Writes 磁頭寫入高度
 
硬碟進行寫入時對磁頭高度進行監控以提供額外的保障。當磁頭處於不正常高度進行寫入時,寫入操作會被終止,原有資料重寫入或者將該磁區重對映到安全區域。該屬性是統計值。
190 0xbe Airflow Temperature 氣流溫度
 
Western Digital特有屬性,計量硬碟內氣流溫度,和檢測項0xc2相似。
191 0xbf G-sense Error Rate 加速度錯誤率
 
計量可能對硬碟做成損害的衝擊次數。
192 0xc0 Power-off Retract Count 電源關閉磁頭收回計數
 
計量磁頭在沒有加電時不移進硬碟的值。
193 0xc1 Load Cycle Count 磁頭釋放收回迴圈
 
計量磁頭在加電時移至停泊區和移至碟片迴圈的值。
194 0xc2 Temperature 溫度
 
如果有合適的感測器的話,這裡會顯示硬碟溫度。請注意該溫度並非直接的攝氏度或華氏度。通常來說,將原始值的最低兩位位元組轉化成十進制,即為精確的溫度值(單位:攝氏度)。例如:原始值為0x003600090023,將0x23轉換為十進制為35,則硬碟溫度為35度。[1]
195 0xc3 Hardware ECC Recovered 硬體ECC恢復 (特定原始值)
196 0xc4 Reallocation Event Count 重定位事件計數
 
記錄已重對映磁區和可能重對映磁區的事件計數。
197 0xc5 Current Pending Sector Count 等候重定的磁區計數
 
記錄了不穩定的磁區的數量。
198 0xc6 Uncorrectable Sector Count 無法校正的磁區計數
 
記錄肯定出錯的磁區數量。
199 0xc7 UltraDMA CRC Error Count UltraDMA通訊CRC錯誤
 
記錄硬碟通訊時發生的CRC錯誤。
200 0xc8 Multi-Zone Error Rate 多區域錯誤率
 
寫入一個區域時發現的錯誤的計數。
200 0xc8 Write Error Rate 寫入錯誤率
 
Fujitsu的特別屬性,寫入一個區域時發現的錯誤的計數。
201 0xc9 Soft Read Error Rate 邏輯讀取錯誤率
 
記錄脫軌錯誤。
202 0xca Data Address Mark errors 資料位址標記錯誤
 
記錄資料位址標記錯誤(或製造商特定的計數)
203 0xcb Run Out Cancel 用完取消
 
ECC錯誤計數
204 0xcc Soft ECC Correction 邏輯ECC糾正
 
記錄由軟體ECC更正的錯誤計數。
205 0xcd Thermal Asperity Rate 熱嘈率
 
記錄高溫導致的出錯記數。
206 0xce Flying Height 飛行高度 記錄磁頭的飛行高度。飛得太低會增加磁頭撞毀的機會,飛得太高增加讀寫錯誤的機會。
207 0xcf Spin High Current 主軸電機浪涌電流計數
 
記錄主軸電機運轉時浪涌電流的次數。
208 0xd0 Spin Buzz 電機啟動失敗 記錄由於電力不足而啟動主軸電機的蜂鳴聲次數。
209 0xd1 Offline Seek Performance 離線定址效能 在其內部測試硬碟的定址能力表現。
210 0xd2 (沒定性,出現在Maxtor 6B200M0 200GB 和Maxtor 2R015H1 15GB 的硬碟中)
211 0xd3 Vibration During Write 寫操作震動 記錄寫入操作的震動數。
212 0xd4 Shock During Write 寫操作衝擊 記錄寫入操作時的衝擊數。
220 0xdc Disk Shift 盤體偏移
 
記錄盤體由於衝擊或溫度導致偏離主軸的相對距離。
221 0xdd G-Sense Error Rate 加速計出錯率
 
從外部誘發的衝擊和振動產生的錯誤計數。
222 0xde Loaded Hours 資料載入時間 資料讀取時所花費的時間。(磁頭移動時間)
223 0xdf Load/Unload Retry Count 載入/解除安裝重試次數 磁頭改變位置時所需時間。
224 0xe0 Load Friction 負載摩擦
 
讀寫時由於機械摩擦做成的阻力。
225 0xe1 Load/Unload Cycle Count 載入/解除安裝迴圈計數
 
總負載周期計數。
226 0xe2 Load 'In'-time 磁頭載入耗時 磁頭載入所需總時間(不包括在停泊區的花費)。
227 0xe3 Torque Amplification Count 扭矩放大計數
 
嘗試來補償碟片的速度變化的計數。
228 0xe4 Power-Off Retract Cycle 斷電縮回周期
 
切斷電源後電磁樞自動縮回的時間計數。
230 0xe6 GMR Head Amplitude GMR磁頭振幅 磁頭振幅計數(磁頭反覆正反向運動距離)。
231 0xe7 Temperature 硬碟溫度
 
記錄硬碟溫度。
232 0xe8 Endurance Remaining 耐久性剩餘 磁碟可使用周期與設計可使用周期的百分比。
232 0xe8 Available Reserved Space 可用保留空間 Intel固態硬碟報告的可提供的預留空間占作為一支全新的固態硬碟預留空間的百分比。
233 0xe9 Power-On Hours 加電時間 處於開機狀態的小時數。
233 0xe9 Media Wearout Indicator 媒介耗損指標 Intel固態硬碟報告的NAND刷寫壽命,全新時值為100,最低值為1,其跌幅隨NAND的擦除周期增加而在0到最大額定周期範圍減少。
240 0xf0 Head Flying Hours 磁頭飛行時間 磁頭處於定位中的時間。
240 0xf0 Transfer Error Rate 傳輸錯誤率 在資料傳輸時連接被重設的次數計數。(Fujitsu特有屬性)
241 0xf1 Total LBAs Written LBA寫入總數 LBA寫入總數計數。
242 0xf2 Total LBAs Read LBA讀取總數 LBA讀取總數計數,部分S.M.A.R.T.檢測程式會把原始值顯示為負數,這是因為該原始值為48位元,而不是32位元的。
250 0xfa Read Error Retry Rate 讀取錯誤重試率
 
從磁碟讀取時的錯誤計數。
254 0xfe Free Fall Protection 自由跌落保護
 
對「自由落體事件」檢測計數。

在非ATA平台上的實現

SCSI

硬碟的傳輸埠平台主要分為ATA和SCSI兩個平台。作為一種硬碟的檢測技術,理論上都能在兩個平台上實現的,但由於兩個平台也存在巨大的不同,S.M.A.R.T.在SCSI上的實現和在ATA的實現上也有所不同。首先,作為ATA上的專有規範,S.M.A.R.T.對ATA系統的干預要比SCSI更明顯,S.M.A.R.T.對SCSI更多是起到檢測的作用,即使在檢測到磁碟有故障時,其只是報告監控端,要人為地處理故障。其次,由於SCSI平台的硬碟比ATA的更為複雜,所以其檢測屬性也比ATA的多和複雜準確,如包括對碟片和驅動電路版的溫度檢測(ATA多僅對碟片溫度檢測),對電壓的檢測等。

USB

USB標準中,USB不能用於電腦內部儲存裝置的基本匯流排(如ATA,SCSI等),其本身沒有為S.M.A.R.T.提供傳輸資料的途徑。在使用ATA硬碟,以USB為傳輸埠的行動硬碟中,即使硬碟內S.M.A.R.T.仍然運作,但沒辦法直接向系統提供S.M.A.R.T.的資料。現在新的行動硬碟的內部驅動轉換電路已經能以一些方法將硬碟內S.M.A.R.T.的資料通過USB傳輸到系統或監控程式中讀取。

參考文獻

  1. Seagate's Seek Error Rate, Raw Read Error Rate, & Hardware ECC Recovered SMART attributes. [2013-02-01]. (原始內容存檔於2013-07-07) (英語). 
  1. ^ S.M.A.R.T. basics. [2017-11-19]. (原始內容存檔於2017-09-22).