柴少鹏的官方网站 技术在分享中进步,水平在学习中升华

检测硬盘故障

物理机群过多的话,硬盘故障是不可避免的问题,如何及时的监控物理硬盘的问题,然后出问题了应汇报出来方便硬盘及时的更换等,当着有很多种方式,定时任务脚本啊,监控工具啊等。

普通硬盘故障的检测方式:

我这里就先记录一种通过过滤/var/log/messages日志的方式来检测硬盘故障的方式。

本来打算贴下两年前写的脚本加定时任务的方式,后来想了下每个人写脚本的习惯和方式可能不一样,就简单记录下当时是怎么想的了。

egrep -i 'sd[a-z]*.*err|error*.*sd[a-z]|sd[a-z].*Hardware Error'  /var/log/messages   #通过这种方式基本上硬盘故障了能爆出来(做了RAID5,RAID10的硬盘除外),这个过滤还是比较靠谱的,基本有问题就会过滤出来。

然后就是围绕这个过滤来写脚本了,我的思路就是:

首先先判断有没有日志报错,如果有就将报错日志的时间记录下来然后写入到一个文件中去

然后下次再检查的话肯定还是会刷新到报错日志信息的,然后就再把日志报错信息取出来取出时间跟之前记录的时间做比较,如果时间一致就说明还是旧的日志,那么就不会再重复汇报,如果日期不相同,本次日期比较新就会在此上报信息。

而汇报呢,当发现要汇报的时候,会将报错日志信息写入到一个报错汇报文件中,例如写入到:warn-$ip.$date的形式。然后通过例如ftp之类的形式将报错文件汇聚到一个统一的节点目录。

然后再中心汇聚节点上面写日志分析脚本,如果有最新的warn文件就进行分析,发现确实有问题就报警给对应的联系人,如果是其他的问题就发送给对应的联系人。

大概就是这么个意思,就是日志过滤汇聚然后分析报警。当然中间的细节就根据自己的情况具体搞就行了。

SSD硬盘的检测方式:

SSD硬盘的检测还稍微有点不一样,当然也可以用上面的方式,不过可能要等彻底废的时候才会报出来,因为SSD都是有寿命吗,如果想当SSD寿命快到报废但是还没有报废呢。也就是SSD块废的时候就报警出来,提前做好准备呢?

#/usr/sbin/smartctl -A /dev/sdb   #/dev/sdb就是我的一个SSD硬盘

图片.png

#好多信息我们是不用关心的,我们要的就是这一条信息。

#/usr/sbin/smartctl -A /dev/sdb |grep Media_Wearout_Indicator|awk '{print $4}'   #那这就是过滤出来我们要的结果。

073

#如果是一个新的SSD的话它是100,然后随着使用时间越长数值会越来越小,当快到000的时候,就是寿终正寝的时候了,你可以就检测这个值,例如当值010的时候就汇总到中心节点或者通过curl命令啊mail命令啊啥的报警出来。

#当然还有很多种方式,这是一种比较简单的方式,就在这里记录一下。

作者:忙碌的柴少 分类:解决小问题 浏览:1126 评论:0
留言列表
发表评论
来宾的头像