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地址,这样设备管理员就可以坐在电脑前就可以掌控所有硬盘设备的健康状况了。