硬盘SMART检测

    为啥要做硬盘检测呢?第一,数据的重要性;第二,硬盘(数据载体)的重要性。

    近期项目中,需要知道计算节点(物理机)的硬盘健康状况,给存储等和硬盘打交道的子系统提供预警作用,学习和了解了硬盘SMART相关的知识,其实网上的资料比较多了,此文仅作为自己工作的总结。

    什么是SMART呢?SMART为Self-Monitoring Analysis and Reporting Technology,硬盘制作时,会将重要的参数放置到最前面的扇区中。硬盘工作时,会不时更新其中的内容,上层通过ioctl的特定命令就可以读取这些信息,再通过稍微的分析做出判断。

    什么是smartmontools?上述的工作已经由一个开源工具实现了,用户仅需使用即可,这个工具就是smartmontools,它包含2个实用程序,一为smartd,其作为deamon进程驻留系统中,可定制检测操作;一位smartctl,命令行工具,就像熟悉的ls,其比较重要的命令选项有:
    -i: 显示硬盘的一些信息,包含硬盘的厂商,是否支持SMART,SMART是否使能等;
    -A: 显示硬盘的重要参数信息,如5 重映射扇区等;
    -H:是否健康。--------其实咱们就这个就行了,知道自己的硬盘是否是健康即可~~~

    硬盘根据接口类型分为ATA和SCSI硬盘,SMART为ATA硬盘发展而来的,对于SCSI硬盘,因SCSI构造比较复杂,检测流程也比较复杂。

    以smartctl的-A选择来说,硬盘的健康状态,可分为3种:正常、警告和故障,对于ATA硬盘使用-A则能获取有用的硬盘参数,根据下面的准则有根有据,硬盘参数有value、threshold和type,若value远大于threshold,则为正常 ;若value小于等于threshold,但type为old_age,则为警告;若value小于等于threshold,且type为pre-fail,则为故障。

    SCSI硬盘来说,smartctl可使用-A获取到的是温度和加电次数信息,不好拿来做判断准则。使用-H则可以进行如下分析,若为OK,则为正常;若不通过,但asc(additional sense code)不为5b或b,则为警告;其他为故障。

    有个问题是:smartctl每次调用,必须输入硬盘名称,比如/dev/sda,因存在逻辑盘、磁阵盘和USB设备的可能性,但smartctl不支持这些设备,需要过滤下,使用fdisk -l是行不通的,可使用ls -l /sys/block|grep pci|grep -E '[^0-9]$'|grep -v usb。


你可能感兴趣的:(硬盘SMART检测)