1. 简介
2. 检测硬盘是否支持 S.M.A.R.T
2.1 开启和关闭 S.M.A.R.T 支持
3. 测试磁盘
3.1 检查磁盘健康状态
3.2 手工对硬盘进行测试的方法
3.3 查看硬盘日志
4. Debian/Ubuntu中使用

主页: http://smartmontools.sourceforge.net

1. 简介

smartmontools 是一款开源的磁盘控制,监视工具,可以运行在 Linux,Unix,BSD,Solaris,Mac OS,OS/2,Cygwin和Windows上, 同时它还可以从启动光盘或启动软盘运行,支持 ATA/ATAPI/SATA-3(到-8)位的硬盘和 SCSI硬盘,另外还支持磁带设备。

通过控制和管理硬盘的SMART(Self Monitoring Analysis and Reporting Technology,自动检测分析及报告技术)技术来实现 的,SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘内部 电路以及盘片表面介质材料等进行监测,当SMART监测并分析出硬盘可 能出现问题时会及时向用户报警以避免计算机数据受损失。SMART技术 必须在主板支持的前提下才能发生作用,而且 SMART技术也不能保证 能预报所有可能发生的硬盘故障。SMART(SFF-8035i) 是硬盘生产商们 建立的一个工业标准,这个标准就是在硬盘上保存一个跟执行情况, 可靠程度,读找错误率等属性的表格。所有属性都有一个1byte(大小 范围 1-253)的标准化值,还包含另一个1byte的关键阶段值,如果属 性表格内某个数据接近小于或达到关键阶段值,表明硬盘工作不正常 了。

包括了两个实用程序: smartctlsmatd 。它监控的硬盘必须具有 S.M.A.R.T 特性,目前所有硬盘都有这个特性,但默认情况下通常没 有开启这个功能,有两种方法来开启这个特性:

利用它可以测试硬盘的健康状况,并在发生故障前进行预警。

2. 检测硬盘是否支持 S.M.A.R.T

[root@dev3-140 ~]# smartctl -i -d ata /dev/sda

这里的参数-i指出显示设备信息,-d指出设备类型,这里指定的设备 类型为ata,当然,如果是SCSI硬盘,就指定scsi了,最后的/dev/sda就 是设备了,我的机器上返回信息:

smartctl version 5.36 [i686-turbo-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:     ST3320620AS
Serial Number:    6QF4J9MT
Firmware Version: 3.AAK
User Capacity:    320,072,933,376 bytes
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   7
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Mon Dec 15 09:53:15 2008 CST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

2.1 开启和关闭 S.M.A.R.T 支持

最后一行的"Enabled"说明磁盘现在是开启 S.M.A.R.T 功能的。如果没有开启可以用下面命令开启:

[root@dev3-140 ~]# smartctl -s on -d ata /dev/sda

其中 -s 选项后面的 on 就是开启的意思。

3. 测试磁盘

3.1 检查磁盘健康状态

[root@dev3-140 ~]# smartctl -H -d ata /dev/sda

-H 参数显示磁盘的健康状态,我机器的结果如下:

smartctl version 5.36 [i686-turbo-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 表明测试通过,磁盘目前是健康的。如果这里显 示Failure,那么最好立刻给服务器更换硬盘。SMART只能报告磁盘已 经不再健康,但是报警后还能继续运行多久是不确定的,通常,SMART报 警参数是有预留的,磁盘报警后,不会当场坏掉,一般能坚持一段时 间,有的硬盘SMART报警后还继续跑了好几年,有的硬盘SMART报错后 几天就坏了,千万不要存在侥幸心理。执行如下命令可以看到详细的 参数:

[root@dev3-140 ~]# smartctl -A /dev/sda -d ata

3.2 手工对硬盘进行测试的方法

smartctl -t short <device>    后台检测硬盘,消耗时间短
smartctl -t long <device>      后台检测硬盘,消耗时间长
smartctl -C -t short <device> 前台检测硬盘,消耗时间短
smartctl -C -t long <device>  前台检测硬盘,消耗时间长

3.3 查看硬盘日志

使用“smartctl -l logtype <device>”可以查看硬盘的日志,日志又 分为多种类型,如selftest、error等等。

4. Debian/Ubuntu中使用

安装:

root@dev3-168:~# aptitude install smartmontools

后面摘录一个帖子:

然后要进行相关的配置,首先要编辑/etc/default/smartmontools:
把start_smartd=yes前面的注释去掉,然后在enable_smart里设置你想要检测的设备。
然后编辑/etc/smartd.conf文件:
把DEVICESCAN这一行给注释掉,然后在后面添加你想要检测的参数。
如我的监测:
/dev/sda -d scsi -s L/../../3/01 -m myemail
/dev/sdb -d scsi -s L/../../7/01 -m myemail
/dev/sdc -d scsi -s L/../../7/02 -m myemail
/dev/sda -d scsi -H -m myemail
/dev/sdb -d scsi -H -m myemail
/dev/sdc -d scsi -H -m myemail
然后重新启动服务:
sudo /etc/init.d/smartmontools restart