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的关键阶段值,如果属 性表格内某个数据接近小于或达到关键阶段值,表明硬盘工作不正常 了。
包括了两个实用程序: smartctl 和 smatd 。它监控的硬盘必须具有 S.M.A.R.T 特性,目前所有硬盘都有这个特性,但默认情况下通常没 有开启这个功能,有两种方法来开启这个特性:
- 通过BIOS设置选项
- 通过smartctl命令。
利用它可以测试硬盘的健康状况,并在发生故障前进行预警。
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
