smartmontools介紹
smartmontools是一款開源的磁盤控制,監視工具,可以運行在Linux,Unix,BSD,Solaris,Mac OS,OS/2,Cygwin和Windows上,同時它還可以從啟動光盤或啟動軟盤運行,支持ATA/ATAPI/SATA-3(到-8)位的硬盤和 SCSI硬盤,另外還支持磁帶設備,它的老家在smartmontools.sourceforge.net,實際上它是一個軟件包,包括了兩個實用程序:smartctl和smatd。它監控的硬盤必須具有S.M.A.R.T特性,目前所有硬盤都有這個特性,但默認情況下通常沒有開啟這個功能,有兩種方法來開啟這個特性:1)通過BIOS設置選項2)通過smartctl命令。利用它可以測試硬盤的健康狀況,並在發生故障前進行預警。
准備工作
在開始測試或監控之前,先檢查一下目標硬盤是否支持S.M.A.R.T,以root登陸(Windows以系統管理員身份登陸),運行下面的命令:
#smartctl -i -d ata /dev/sda
這里的參數-i指出顯示設備信息,-d指出設備類型,這里指定的設備類型為ata,當然,如果是SCSI硬盤,就指定scsi了,最后的/dev/sda就是設備(df命令查詢設備)了
這個命令返回:
smartctl version 5.37 'i686-pc-linux-gnu' Copyright (C) 2002-6
Bruce Allen
Home page is http://smartmontools.sourceforge.net/=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar SE (Serial ATA) family
Device Model: WDC WD800JD-00MSA1
Serial Number: WD-WMAM9S474555
Firmware Version: 10.01E01
User Capacity: 80,026,361,856 bytes
Device is: In smartctl database 'for details use: -P show'
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not
indicated
Local Time is: Thu Feb 7 13:09:37 2008 PST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled
從返回的信息中,可以看到硬盤的生產廠家,型號,序列號,容量,是否支持SMART,目前SMART開啟沒有。結果的最后兩行就是我們需要的信息,從這里可以看出,這塊硬盤是支持SMART技術的,但目前還沒有開啟它。
如果運行這個命令返回了類似“Device does not support SMART”的信息就說明目標硬盤不支持SMART,不能使用這套軟件包進行測試和監控。
對於前面的例子,我們可以使用下面的命令來開啟SMART特性:
#smartctl -s on -d ata /dev/sda
這里的參數-s就是用來開關SMART特性的,如果加上參數值on就表示開啟,如果參數值是off就表示關閉。
開始測試
其實就一條命令就完成了測試,如:
#smartctl -H -d ata /dev/sda
這里的參數-H就是指定顯示目標硬盤的健康狀態
這個命令返回如下結果:
smartctl version 5.37 'i686-pc-linux-gnu' Copyright (C) 2002-6
Bruce Allen
Home page is http://smartmontools.sourceforge.net/=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
注意最后一行的測試結果“PASSED”,表明測試通過,該硬盤目前處於健康狀態。
其它一些有用的參數
-A 顯示支持的SMART屬性,參考命令:
#smartctl -A sda
返回內容:
smartctl version 5.38 [i686-mingw32-xp-sp2] Copyright (C) 2002-8 Bruce Allen
Home page is http://smartmontools.sourceforge.net/
=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
3 Spin_Up_Time 0x0027 220 220 063 Pre-fail Always - 13621
4 Start_Stop_Count 0x0032 253 253 000 Old_age Always - 999
5 Reallocated_Sector_Ct 0x0033 253 253 063 Pre-fail Always - 0
6 Read_Channel_Margin 0x0001 253 253 100 Pre-fail Offline - 0
7 Seek_Error_Rate 0x000a 253 252 000 Old_age Always - 0
8 Seek_Time_Performance 0x0027 250 241 187 Pre-fail Always - 59017
9 Power_On_Minutes 0x0032 225 225 000 Old_age Always - 1019h+16m
10 Spin_Retry_Count 0x002b 253 252 157 Pre-fail Always - 0
11 Calibration_Retry_Count 0x002b 253 252 223 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 251 251 000 Old_age Always - 1091
192 Power-Off_Retract_Count 0x0032 253 253 000 Old_age Always - 0
193 Load_Cycle_Count 0x0032 253 253 000 Old_age Always - 0
194 Temperature_Celsius 0x0032 253 253 000 Old_age Always - 39
195 Hardware_ECC_Recovered 0x000a 253 252 000 Old_age Always - 1566
196 Reallocated_Event_Count 0x0008 253 253 000 Old_age Offline - 0
197 Current_Pending_Sector 0x0008 253 253 000 Old_age Offline - 0
198 Offline_Uncorrectable 0x0008 253 253 000 Old_age Offline - 0
199 UDMA_CRC_Error_Count 0x0008 199 199 000 Old_age Offline - 0
200 Multi_Zone_Error_Rate 0x000a 253 252 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 253 251 000 Old_age Always - 5
202 TA_Increase_Count 0x000a 253 252 000 Old_age Always - 0
203 Run_Out_Cancel 0x000b 253 252 180 Pre-fail Always - 0
204 Shock_Count_Write_Opern 0x000a 253 252 000 Old_age Always - 0
205 Shock_Rate_Write_Opern 0x000a 253 252 000 Old_age Always - 0
207 Spin_High_Current 0x002a 253 252 000 Old_age Always - 0
208 Spin_Buzz 0x002a 253 252 000 Old_age Always - 0
209 Offline_Seek_Performnce 0x0024 189 187 000 Old_age Offline - 0
99 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
100 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
101 Unknown_Attribute 0x0004 253 253 000 Old_age Offline - 0
返回結果中的各種屬性請參見http://sourceforge.net/apps/trac/smartmontools/wiki/TitleIndex. 比如,id#為194的屬性(Temperature_Celsius)表示輸出硬盤溫度,所以才會有軟件能夠監測到硬盤的溫度。我們從這里也可以直接看到硬盤當前的溫度為39°C,理想的狀態是控制在5°C左右,所以應該增加風扇了。Pre-fail就是偵測到有衰退的現象,Old-age就算正常,只是硬碟算高齡了...
-a 顯示設備所有的SMART信息。
-l error 列出硬盤錯誤日志。如果顯示沒有錯誤最好,如果顯示了大量的錯誤信息,那就該着手准備替換硬盤了。
-l selftest 列出自行測試結果。
利用smartd進行自動監控
smartd是smartmontools軟件包中的一個實用程序,可以單獨運行,也可以注冊為系統服務,Windows上的注冊命令為:
>smartd install
注冊后,打開services.msc,可看到一個名叫“SmartD Service”服務,並設置為“自動”啟動。
在非Windows平台上可通過向/etc/rc.d/init.d添加smartd腳本,其實在安裝smartmontools軟件包的時候 通常會安裝到這個位置,只需要在對應的啟動級別下做一個軟鏈接就可以了。
smartd的配置文件為smartd.conf(Windows和非Windows平台都叫這個名字,Windows平台與 smartd.exe在同一個目錄下,非Windows平台位於/etc目錄下),在這個配置文件中已經內置許多種監視方法和參數說明,值得一體的是-m 參數,可以利用它將監視報告以郵件的形式發送給指定的E-mail地址,這樣設備管理員就可以坐在電腦前就可以掌控所有硬盤設備的健康狀況了。