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

smartctl----硬盘状态监控的更多相关文章

  1. 【VC++技术杂谈003】打印技术之打印机状态监控

    在上一篇博文中我主要介绍了如何获取以及设置系统的默认打印机,本文将介绍如何对打印机状态进行实时监控,记录下所打印的文档.打印的份数以及打印时间等打印信息. 1.打印机虚脱机技术 在正式介绍如何对打印机 ...

  2. Nginx状态监控

    通过配置nginx.conf文件来实现对Nginx状态信息的监控. 1.配置nginx.conf vim /usr/local/nginx/conf/nginx.conf 再server块配置项中添加 ...

  3. Go语言程序的状态监控 via 达达

    Go语言程序的状态监控 Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息.产品上线后的调优和排查疑难杂症都得靠这些状态信息.这边总结一些我们项目里用到的状态监控手段. pprof Go自带 ...

  4. Go语言程序的状态监控

    Go是很实在的编程语言,从一开始就提供了很详细的运行状态信息.产品上线后的调优和排查疑难杂症都得靠这些状态信息.这边总结一些我们项目里用到的状态监控手段. pprof Go自带了一个pprof工具,这 ...

  5. (WinForm)文件夹状态监控,最小化到托盘,开机自启动

    原文 (WinForm)文件夹状态监控,最小化到托盘,开机自启动 . 文件夾監控(監測文件夾中的文件動態): //MSDN上的例子 public class Watcher { public stat ...

  6. 4. SQL Server数据库状态监控 - 作业状态

    原文:4. SQL Server数据库状态监控 - 作业状态 有很多地方可以设置定时任务,比如:Windows的计划任务,Linux下的crontab,各种开发工具里的timer组件.SQL Serv ...

  7. 2. SQL Server数据库状态监控 - 错误日志

    原文:2. SQL Server数据库状态监控 - 错误日志 无论是操作系统 (Unix 或者Windows),还是应用程序 (Web 服务,数据库系统等等) ,通常都有自身的日志机制,以便故障时追溯 ...

  8. 3. SQL Server数据库状态监控 - 可用空间

    原文:3. SQL Server数据库状态监控 - 可用空间 数据库用来存放数据,那么肯定需要存储空间,所以对磁盘空间的监视自然就很有必要了. 一. 磁盘可用空间 1. 操作系统命令或脚本.接口或工具 ...

  9. mysql主从同步(4)-Slave延迟状态监控

    mysql主从同步(4)-Slave延迟状态监控  转自:http://www.cnblogs.com/kevingrace/p/5685511.html 之前部署了mysql主从同步环境(Mysql ...

  10. workerman vmstat服务器状态监控服务

    转载出自 :http://www.workerman.net/workerman-vmstat workerman vmstat服务器状态监控服务 vmstat 命令可以展现服务器的CPU使用率,内存 ...

随机推荐

  1. 1、应用设置之TAB页

    转载请注明出处:http://blog.csdn.net/droyon/article/details/39891257                       应用设置的TAB页,共分6页.如图 ...

  2. java 命令行 编译 运行程序

    学习java使用IDE前最好先用用命令行的javac.java来跑一跑简单的程序,这样能够熟悉一下包管理对.class文件路径的影响. 我们先写一段简单的代码: package com.csdn.lk ...

  3. MFC 程序的运行流程

    CWinApp::InitApplication CMyWinApp::InitInstance CMyFrameWnd::CMyFrameWnd CFrameWnd::Create CWnd::Cr ...

  4. luogu3953 逛公园

    正解:SPFA+DP 将POJ3463中maxDist(Target)由minDist(Target)+1改为minDist(Target+K)即可.判断0环,需要对每个节点建立下标为maxDist- ...

  5. oc19--继承1

    // // Phone.h // day13 #import <Foundation/Foundation.h> // 被继承的这个类我们称之为父类/ 超类 @interface Phon ...

  6. php传值调用和传值调用和变量函数

    php传值调用和传值调用和变量函数 代码 <?php //传值调用,$m的值不改变 function text($i){ $i = 'Clive'; echo $i; } text(123); ...

  7. 【NOIP 2011】 计算系数

    [题目链接] https://www.luogu.org/problemnew/show/P1313 [算法] 二项式定理 [代码] #include<bits/stdc++.h> usi ...

  8. jquery事件重复绑定的几种解决方法

    防止事件重复绑定共有4种方法: bind().unbind()方法 live().die()方法 off().on()方法 one()方法 一.bind().unbind()方法 bind();绑定事 ...

  9. HUdson2092整数解

    2019-05-17 16:04:37 加油,坚持就是胜利,fightting m / i的情况,i可能等于0 #include <bits/stdc++.h> using namespa ...

  10. getElementsByName使用

    查了下手册,getElementsByName()不能提取没有name属性的标签.div标签本身没有name属性,所以不能被提取.有name标签的主要是各种input标签,所以默认情况下getElem ...