基本信息
S.M.A.R.T.(自監測、分析、報告技術):這是現在硬碟普遍採用的數據安全技術,在硬碟工作的時候監測系統對電機、電路、磁碟、磁頭的狀態進行分析,當有異常發生的時候就會發出警告,有的還會自動降速並備份數據。
早在上個世紀九十年代,人們就意識到數據的寶貴性勝於硬碟自身價值,渴望有種技術能對硬碟故障進行預測並實現相對安全的數據保護,因此S.M.A.R.T技術應運而生。目前,大多數硬碟的平均無故障時間(MTBF)一般在30000小時以上,有些高端產品可達120萬小時。但是對於不少用戶,特別是商業用戶而言,一次普通的硬碟故障便足以造成災難性後果,所以時至今日,S.M.A.R.T技術仍為我們所用。
簡介
該技術由Compaq公司率先開發,IBM、希捷、富士通、昆騰等硬碟廠商參與修正,
並融合了Compaq公司的IntelliSafe診斷技術和IBM的PFA檢測技術特點。
1995年5月,Compaq公司向Small Form Factor(SFF)委員會提交了IntelliSafe的技術標準報告(SFF-8035i);1996年1月進行1.0版的修正(SFF-8035R2);1996年6月進行了1.3版的修正(SFF-8055),並聯合IBM等公司向SFF正式申請將IntelliSafe技術加入到ATA-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;通過BIOS檢測,能夠識別設備是否支持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.技術能夠在螢幕上顯示英文警告信息:“WARNING:IMMEDIATLY BACKUP YOUR DATA AND REPLACE YOUR HARD DISK DRIVE,A FAILURE MAY BE IMMINENT.” (警告:立刻備份你的數據同時更換硬碟驅動器,可能有錯誤出現。)
如何工作
S.M.A.R.T信息保留在硬碟的系統保留區(service area)內,這個區域一般位於硬碟0物理面的最前面幾十個物理磁軌,由廠商寫入相關內部管理程式。除了S.M.A.R.T信息表外還包括低級格式化程式、加密解密程式、自監控程式、自動修復程式等。監測軟體通過一個名為“SMART RETURN STATUS”的命令(命令代碼為:B0h)對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指令分主指令(Command)和次指令(Subcommands)。主指令主要提供設備是否支持S.M.A.R.T或忽略某一次指令特徵的信息。而次指令則提供支持S.M.A.R.T設備的檢測信息。這些指令主要由設備廠商寫入,一些專業硬碟維修軟體可以通過這些代碼進行設備的檢測。
檢測屬性
S.M.A.R.T技術的原理是通過偵測硬碟各屬性,如數據吞吐性能、馬達起動時間、
尋道錯誤率等屬性值和標準值進行比較分析,推斷硬碟的故障情況並給出提示信息,幫助用戶避免數據損失。S.M.A.R.T因此規定了專門的檢測參數,由於硬碟結構、性能和定位上的不同,除了ATA-3標準規定的參數外,廠商可以根據自己產品的特性提供不同的S.M.A.R.T檢測參數。普通用戶則可以通過常用的系統工具(如AIDA32)來查看,並通過這些參數了解硬碟的“健康”狀況。
ID檢測代碼
ID檢測代碼不是唯一的,廠商可以根據需要,使用不同的ID代碼或根據檢測參數的多少增減ID代碼的數量。例如,西數公司的產品ID檢測代碼為“04”,檢測的參數是Start/Stop Count(加電次數),而富士通公司同樣代碼的檢測參數卻為“Number of times the spindle motor is activated”(電機激活時間)。
屬性描述
(Attribute Description)
屬性描述(Attribute Description)即檢測項目名稱。可由廠商自定義增減,由於ATA標準不斷更新,有時候同一品牌的不同型號產品也會有所不同。但必須確保S.M.A.R.T規定的幾個主要檢測項目(雖然不同廠商對檢測項目都有特定的命名規則,但這些監測項目的實質其實是一樣的)。
Read Error Rate 錯誤讀取率
Start/Stop Count 啟動/停止次數(又稱加電次數)
Relocated Sector Count 重新分配扇區數
Spin up Retry Count 旋轉重試次數(即硬碟啟動重試次數)
Drive Calibration Retry Count 磁碟校準重試次數
ULTRA DMA CRC Error Rate (ULTRA DMA奇偶校驗錯誤率)
Multi-zone Error Rate 多區域錯誤率
Vendor-specific 廠商特性
需要注意的是,不同廠商、不同類型產品的屬性描述不盡相同。對用戶而言,無須深入了解它們的具體含義,只需了解屬性監測值的含義即可。
閾值
(Threshold)
又稱門限值。是由硬碟廠商指定的可靠的屬性值,通過特定公式計算而得。如果有一個屬性值低於相應的閾值,就意味著硬碟將變得不可靠,保存在硬碟里的數據也很容易丟失。可靠屬性值的組成和大小對不同硬碟來說是有差異的。這裡需要注意的是,ATA標準中只規定了一些S.M.A.R.T參數,它沒有規定具體的數值,“Threshold”的數值是廠商根據自己產品特性而確定的。因此,用廠商自己提供的檢測軟體往往會跟Windows下的檢測軟體(例如AIDA32)的檢測結果有較大出入。這裡,我們推薦以廠商軟體的檢測結果為標準,因為Windows環境下,系統要求硬碟的啟動程式比DOS下多得多,這可能導致硬碟S.M.A.R.T值比DOS環境下檢測的波動更大。以參數Raw ErrorRate(錯誤讀取率)為例:該參數的計算公式為10×log10(主機和硬碟之間所傳輸數據的扇區數)×512×8/重讀的扇區數。其中 “512×8”是把扇區數轉化為所傳輸的數據位(bits),這個值只在所傳輸的數據位處於10^10~10^12範圍時才作計算,而當Windows系統啟動後,主機和硬碟之間所傳輸的數據扇區大於或等於10^12時,此值將重新復位。這就是為什麼有些值在不同的操作環境、不同檢測程式下時波動較大的原因。
屬性值
(Attribute value)
屬性值是指硬碟出廠時預設的最大正常值,一般範圍為1~253。通常,最大的屬性值等於100(適用於IBM、昆騰、富士通)或253(適用於三星)。當然,也有例外的時候,比如由西部數據公司生產的部分型號硬碟,就用了兩個不同的屬性值,最初生產時屬性值設為200,但後來生產的硬碟屬性值又改為100。
最大出錯值
(Worst)
最大出錯值是硬碟運行中曾出現過的最大的非正常值。它是對硬碟累計運行的計算值,根據運行周期,該數值會不斷地刷新,並且會非常接近閾值。S.M.A.R.T分析和判定硬碟的狀態是否正常,就是根據這個數值和閾值的比較結果而定。新硬碟開始時有最大的屬性值,但隨著日常使用或出現錯誤,該值會不斷減小。因此,較大的屬性值意味著硬碟質量較好而且可靠性較高,而較小的屬性值則意味著故障發生的可能性增大。
實際值
(Date)
是硬碟各檢測項目運行中的實際數值,很多項目是累計值。例如:圖3中的Start/Stop Count(啟停次數),累計的實際值是436,即該硬碟從開始到現在累計加電啟停436次。
屬性狀態
(Status)
這是S.M.A.R.T針對前面的各項屬性值進行比較分析後,提供的硬碟各屬性目前的狀態,也是我們直觀判斷硬碟“健康”狀態的重要信息。根據S.M.A.R.T的規定,這種狀態一般有正常、警告和報告故障或錯誤等3種狀態。S.M.A.R.T判定出這3個狀態與S.M.A.R.T的 Pre-failure/advisory BIT(預知錯誤/發現位)參數的賦值密切相關。
當Pre-failure/advisory BIT=0,並且可靠屬性值遠大於閾值的情況下,為正常提示“OK”標誌。當Pre-failure/advisory BITt=0,並且可靠屬性值大於閾值但接近閾值臨界值時,為警告提示“!”標誌;當Pre-failure/advisory BITt=1,並且可靠屬性值小於閾值時,為報告故障或錯誤提示“!!!”標誌。
在圖2中,我們發現出現“OK”標誌的正常狀態下有“值正常”(Value is Normal)和“總是略過”(Always Passing)兩個狀態說明。它們的區別是:“值正常”表明此項S.M.A.R.T值是正常的,硬碟沒有故障;“永遠略過”則表明此項只是某參數的記錄,沒有合格與不合格的標準,如“Power on time count”,這個參數只是記錄了硬碟已經加電工作的時間,這個參數應當永遠合格,它不用來衡量硬碟的性能,因此顯示為“OK:Value is Normal”。
下面我們以ID為“04”的Start/Stop Count(加電次數)檢測參數為例,完整地來理解這7列參數的意義:從圖2中我們看到此參數規定的屬性正常值(Attribute value)為“100”,這個正常值是通過計算公式:“100-硬碟正常使用壽命期間的加電次數/1024”而給出的。而最大出錯值是硬碟運行的累計計算值。例如如果是新硬碟,則加電次數為0,因此為100-0/1024=100,最大出錯值=屬性正常值。隨著加電次數的增加,該最大出錯值不斷變化。廠商規定的閾值為20,即當硬碟的開關電次數達到81920次時(100-81920/1024=20),最大出錯值=閾值,系統就會提示用戶備份數據。因此,加電次數在81920次範圍之內,並且最大出錯值始終大於閾值20的狀態下,均為正常。圖中的加電次數(Date實際值)為107次,因此最大出錯值近似為100,狀態顯示為“OK:Value is Normal(值正常)”。需要特別注意的是:每一個參數所給出的值都是經過一些特定的計算公式而給出的。作為用戶,只要觀察“Worst”和“Threshold”值的關係,並注意狀態提示屬性狀態信息即可大致了解硬碟的健康狀況。
在非ATA平台上的實現
SCSI
由於目前硬碟領域存在ATA和SCSI兩種標準,所以不可否認,S.M.A.R.T技術是同時支持這兩個系列的產品的,只是在一些參數設定上存在一些差異,在關鍵參數上SCSI比ATA硬碟更為複雜。但在實際運作中,由於用戶和使用環境不同,S.M.A.R.T對ATA/IDE系統的干預比SCSI系統要多一些,而對SCSI故障的判定更為專業和準確些。SCSI硬碟的S.M.A.R.T技術與ATA硬碟的S.M.A.R.T技術相比更為複雜,以下僅列舉SCSI硬碟所特有參數中的一部分。
PrimaryTemp:硬碟盤體的工作溫度
Secondary Temp:PCB板周圍的工作溫度
Min and Max Temp:在一段時間內硬碟盤體的最高和最低工作溫度
Velocity Observer Count:在一段時間內伺服尋道時偏離指定磁軌的次數
12V:12V供電電壓值
5V:5V供電電壓值
MR Res:MR磁頭的電阻值
Sectors Read:在一段時間內從硬碟中讀取的扇區數
Sectors Written:在一段時間內數據寫入硬碟中的扇區數
在ATA/IDE環境下,由主機上的軟體對S.M.A.R.T“報告狀態”命令生成的、來自硬碟的報警信號進行解讀。主機對硬碟進行查詢,以檢查這一命令的狀態,如果顯示馬上要發生故障,就將告警信號送至最終用戶或系統管理員。系統管理員就安排關機時間,以備份數據和更換硬碟。主系統除對來自硬碟的“報告狀態”命令進行評估外,還可對屬性和告警報告進行評估。在SCSI環境下,S.M.A.R.T則只報告“狀況完好”或“出現故障”。由硬碟進行故障判斷,再由主機通知用戶採取措施。在SCSI標準中有一個檢測位,當硬碟確定可靠性出現問題時,檢測位就打上標記並通知最終用戶或系統管理員,採取相應措施。
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傳輸到系統或監控程式中讀取。