Linux 下用 smartd 监测硬盘状况

和处理器、内存比较,硬盘是服务器上最慢的子系统、是最容易出现性能瓶颈的 地方,也是最脆弱的部分。因为硬盘离处理器距离最远而且访问硬盘要涉及到一些机械操作,比如转轴、寻轨等,而机械是容易出故障的。作为 VPS 服务商和系统管理员来说,最害怕的就是硬盘出毛病,所以监测硬盘的健康状况、提前预警是件很重要的事情。我们 PC 服务器上差不多1.5年都会有硬盘坏掉,坏掉前一点征兆都没有,SUN 服务器上的情况要好得到,很多 SATA/SCSI 硬盘运行了5年都没问题,看样子品牌服务器还是贵得有理由的。VPSee 前段时间看过 Google 发表的一篇论文:Failure Trends in a Large Disk Drive Population 也证实了我们的经历,结论是所有坏掉的硬盘中只有60%可以被 S.M.A.R.T. 检测到,也就是说 S.M.A.R.T. 的测试结果只有60%是正确的,所以我们还不能完全依赖 S.M.A.R.T. 的监测结果。
目前市面上所有的硬盘都具有 S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) 特性,smartmontools 就是利用这一特性监测硬盘的软件包,包含 smartctl 和 smartd 两个程序,前者是前台命令行工具、后者是后台运行程序,smartmontools 不是 Linux 的专利,也支持 BSD, Solaris 等系统。
安装 smartmontools
在 CentOS/Fedora 下安装:
# yum install kernel-utils
在 Debian/Ubuntu 下安装:
# apt-get install smartmontools 

使用 smartmontools
在使用 smartmontools 测试之前先检查一下硬盘是否具有 SMART 特性:
# smartctl -i /dev/sda 
=== START OF INFORMATION SECTION === 
Device Model: SEAGATE ST32500NSSUN250G 0741B58YP8 
Serial Number: 5QE58YP8 
Firmware Version: 3.AZK 
User Capacity: 250,056,000,000 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: Thu Jul 22 22:39:07 2010 SAST 
SMART support is: Available - device has SMART capability. 
SMART support is: Enabled
如果上面 SMART support 是 Disabled 状态的话,需要开启 SMART 的支持:
# smartctl -s on /dev/sda 
=== START OF ENABLE/DISABLE COMMANDS SECTION === 
SMART Enabled.
检查硬盘状况,如果下面的结果不是 PASSED 的话你需要立刻警觉起来,马上备份所有数据,硬盘随时都可能出问题(不过值得注意的是就算结果是 PASSED 并不意味着硬盘100%就安全,PASS 不能代表没问题,没 PASS 代表一定有问题):
# smartctl -H /dev/sda 
=== START OF READ SMART DATA SECTION === 
SMART overall-health self-assessment test result: PASSED
做个快速自检:
# smartctl -t short /dev/sda 
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION === 
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful. Testing has begun.
Please wait 1 minutes for test to complete. 
Test will complete after Thu Jul 22 22:51:00 2010 
Use smartctl -X to abort test.
执行上面的自检命令后等待一段时间,可以通过下面命令来看进度和结果:
# smartctl -l selftest /dev/sda 
=== START OF READ SMART DATA SECTION === 
SMART Self-test log structure revision number 1 
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error 
# 1 Short offline Completed without error 00% 20949 - 
# 2 Short offline Completed without error 00% 20947 -
要做长时间自检的话(很耗时,建议放在凌晨时间段做):
# smartctl -t long /dev/sda
查看出错日志:
# smartctl -l error /dev/sda 
=== START OF READ SMART DATA SECTION === 
SMART Error Log Version: 1 No Errors Logged 

配置 smartmontools
在 CentOS/Fedora 下:
# vi /etc/smartd.conf 
# /etc/init.d/smartd restart
在 Debian/Ubuntu 下:
# vi /etc/default/smartmontools 
# vi /etc/smartd.conf 
# /etc/init.d/smartmontools restart
可以通过修改以上的 smartmontools 的配置文件来定期对硬盘做健康检查,就像给人定期体检一样,体检过了并不代表就没病(很多疾病用体检的设备都查不到),所以这也符合 Google 的硬盘报告所说的情况,所有坏掉的硬盘中只有60%可以被 S.M.A.R.T. 检测到(所有生病的人中只有60%能在体检的时候发现)。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值