一种自动检测硬盘异常的方法

文档序号:8922488阅读:537来源:国知局
一种自动检测硬盘异常的方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体地说是一种自动检测硬盘异常的方法。
【背景技术】
[0002]一般的,随着服务器的不断发展和壮大,服务器供应商已经开拓各个领域服务器的应用,比如互联网、金融…等。客户的应用较之过去,变得复杂多样。硬盘作为服务器关键部件之一,曾经不止一次的出现硬盘掉盘的问题,严重影响客户的数据存储应用,这是客户难以接受的严重质量问题。
[0003]随着服务器行业的不断的发展,Rack作为互联网发展整体解决方案的趋势已经更加明显;同时随着rack节点数的增加,硬盘本身容量的增加,存储子系统也有了前所未有的壮大,这样对于硬盘、控制器兼容性、背板、线缆这一条链路的兼容性和稳定性就变得尤为重要。
[0004]作为服务器产品提供商,如何能满足用户多样化的需求,确保各种应用环境的稳定、可靠是现阶段必须面临和考虑的问题。因此对于硬盘在服务器上使用,必须进行全面的功能性、稳定性及性能等的测试和验证,从而确保该产品的质量。

【发明内容】

[0005]本发明的技术任务是解决现有技术的不足,提供一种自动检测硬盘异常的方法。
[0006]本发明的技术方案是按以下方式实现的,该自动检测硬盘异常的方法,该方法的步骤是:
在服务器上准备测试环境,搭建测试平台,安装操作系统,安装测试工具,配置测试参数,开始测试,监控测试过程,条件选择:
如果监视测试过程失败,则查看报错信息并记录硬盘SN码,做出后续处理,结束测试; 如果监视测试过程无任何异常,则查看测试结果,结束测试。
[0007]在服务器上准备测试环境,搭建测试平台,安装Linux或者CentOS操作系统,安装测试工具,将测试工具拷贝到测试机,先后运行check, sh程序、hd.sh程序,根据实际需要运行重启的次数修改reboot, sh,并将其放在root/, bashrc,配置测试参数,开始测试,监控测试过程,条件选择:
如果监视测试过程失败,则查看报错信息并记录硬盘SN码,做出后续处理,结束测试; 如果监视测试过程无任何异常,则查看测试结果,结束测试。
[0008]开始测试之前,编写测试脚本,测试之前先将硬盘相关信息读出并自动记录到文本中,每次重新启动服务器都会重新运行该测试脚本,检测硬盘所有信息并与之前记录信息作比较,若有异常就会自动报错,进入条件选择。
[0009]测试脚本设置重启次数,也可以根据提示自动停止测试,当有问题出现时,设置红色提示,并自动停止测试。
[0010]本发明与现有技术相比所产生的有益效果是: 该自动检测硬盘异常的方法是结合Linux下smartctl命令对硬盘信息和健康状态的检测,并融入到服务器的重启测试中,通过长时间的重启测试及每次的硬盘检测测试,达到存储子系统稳定性测试目的,同时也能够兼顾硬盘可靠性和稳定性测试。
[0011]该自动检测硬盘异常的方法操作简单,自动化程度高,实用性较强,能够节省人力,有效确保了服务器的稳定性和可靠性,是验证产品质量的非常有效的方法。
【附图说明】
[0012]附图1是本发明的流程示意图。
【具体实施方式】
[0013]下面结合附图对本发明的一种自动检测硬盘异常的方法作以下详细说明。
[0014]如附图所示,本发明的自动检测硬盘异常的方法,该方法的步骤是:
在服务器上准备测试环境,搭建测试平台,安装操作系统,安装测试工具,配置测试参数,开始测试,监控测试过程,条件选择:
如果监视测试过程失败,则查看报错信息并记录硬盘SN码,做出后续处理,结束测试; 如果监视测试过程无任何异常,则查看测试结果,结束测试。
[0015]在服务器上准备测试环境,搭建测试平台,安装Linux或者CentOS操作系统,安装测试工具,将测试工具拷贝到测试机,先后运行check, sh程序、hd.sh程序,根据实际需要运行重启的次数修改reboot, sh,并将其放在root/, bashrc,配置测试参数,开始测试,监控测试过程,条件选择:
如果监视测试过程失败,则查看报错信息并记录硬盘SN码,做出后续处理,结束测试; 如果监视测试过程无任何异常,则查看测试结果,结束测试。
[0016]开始测试之前,编写测试脚本,测试之前先将硬盘相关信息读出并自动记录到文本中,每次重新启动服务器都会重新运行该测试脚本,检测硬盘所有信息并与之前记录信息作比较,若有异常就会自动报错,进入条件选择。
[0017]测试脚本设置重启次数,也可以根据提示自动停止测试,当有问题出现时,设置红色提示,并自动停止测试。
[0018]该自动检测硬盘异常的方法是结合Linux下smartctl命令对硬盘信息和健康状态的检测,并融入到服务器的重启测试中,通过长时间的重启测试及每次的硬盘检测测试,达到存储子系统稳定性测试目的,同时也能够兼顾硬盘可靠性和稳定性测试。
[0019]硬盘SN码是SerialNumber的缩写,有时也叫SerialNo,也就是产品序列号。
[0020]测试程序的脚本,主要是为了检测硬盘的健康状态以及存储子系统的稳定性和可靠性,以达到提高子系统稳定性和确保产品质量的目的。
[0021]S.M.A.R.T.是英文 Self — Monitoring Analysis and Reporting Technology(自动检测分析及报告技术)的简写。它能对硬盘的磁头单元、硬盘温度、盘片表面介质材料、马达及其驱动系统、硬盘内部电路等进行监测,及时分析并预报硬盘可能发生的问题。
[0022]利用Linux下smartctl命令可以查看硬盘型号、Firmware版本、容量大小、健康状态等的功能,编写测试脚本:测试前先将硬盘相关信息读出并自动记录到某个文本中,每次重新启动服务器都会重新运行该脚本,检测硬盘所有信息并与之前记录信息作比较,若有异常就会自动报错。根据报错信息就可以找到是哪一块硬盘有问题,是什么样的问题,然后再做进一步的分析和验证。此脚本可以设置重启次数,也可以根据提示自动停止测试,当有问题出现时,有红色提示,并自动停止测试。
[0023]测试程序如下:
I)、reboot, sh 脚本代码: console='/usr/bin/tty'
#.bashrc
#User specific aliases and funct1nsalias rm=i rm ~i
alias cp=i cp ~ialias mv=’mv ~i
#Source global definit1nsif [ -f /etc/bashrc ]; then./etc/bashrc
fi
#source /opt/intel/composer_xe_2013/bin/compilervars.sh intel64
#source /opt/intel/mkl/bin/intel64/mklvars_intel64.sh
#source /opt/intel/impi/4.1.1.036/bin64/mpivars.sh
case $console in
/dev/ttyl | /dev/pts[0-100])
if [ -f /tmp/rcishu ];then
rcishu='cat /tmp/rcishu'
else
/bin/touch rcishurcishu=0fi
if [ $rcishu -1t 50 ];then
sh /opt/scripts/hd.sh
sh /opt/scripts/hd.sh >> /tmp/hdtest.txt read _t 5 -p 〃Press y Break Reboot 〃 aa if [ "${aar = ? ] I I [ "${aar = "Y" ] ; then echo Breaked Reboot Cycle!!!! else
rcishu=$ (($rcishu+l)) echo 〃$ {rcishu}〃> /tmp/rcishu echo reboot $rcishu /sbin/reboot fifi
esac
3)、check, sh脚本代码:
#!/bin/sh
rm /tmp/paizh1.txt _rf/sbin/service ipmi restart > /dev/nullf He-/proc/cpuinfo
num='grep "physical id" $file |sort |uniq |awk , {print $4}, |wc -1'corenum='grep ^cpu cores" $file |sort |uniq | awk,{print $4},| sed -nr,H;${x; s/\n/ /g;p},'
clock='grep name $file |awk -F CPU ’ {print $2}’ |sed _e ’s/ 0 //g’ _e ’s///g -e ,s/GHz//g, Iawk _F@ , {print $2}, |sort |uniq|sed -nr , H;${x; s八n/ /g;p},'
model='grep name $file |awk -F CPU ’ {print $2}’ |sed _e ’s/ 0 //g _e ’s///g Iawk -F@ , {print $1}, |sort |uniq |sed -nr , H;${x; s八n/ /g;p}, |tr [a~z][A-Z]'
cache= grep 〃cache size〃 $file | sort | uniq | awk,{print $4},| sed -nr,H;${x; s/\n/ /g;p},'
let cache=cache/1024cache=$cache〃M〃
stepping='grep stepping /proc/cpuinfo |uniq |sed,s/ //g \ awk -F:,{print$2}’ Ised -nr ’ H;${x; s/\n/ /g;p},'
{
echo //cpu_number=//$num////echo 〃cpu—core=\〃$corenum\〃〃echo //cpu_type=//$model////echo 〃cpu—cache=\〃$cache\〃〃echo 〃cpu—clock=\〃$clock\〃〃echo "cpu—Stepping=VSsteppingV"
} >/tmp/cpu.txtfor i in {a..1}do
if [ -b /dev/sd$i ];then
/usr/sbin/smartctl -a /dev/sd$i >hdinf0.$$
model='grep Model hdinf0.$$ |sed,s/: */:/g,|awk -F:,{print $2}fw='grep Firmware hdinf0.$$ |sed ’s/::/g \awk -F: ’ {print $2}serial='grep Serial hdinf0.$$ |sed ’s/::/g \awk -F: ’ {print $2}cap=' grep User hdinf0.$$ | sed,s/::/g \ sed,s/,//g,| awk -F:,{printf ("%dG\n",$2/1000/1000/1000)}’ 'smart='grep 〃SMART support is: Enabled" hdinf0.$$'smartlog= grep 〃No Errors Logged" hdinf0.$$fi
done
{
echo 〃hdmodel=\〃$model\〃〃
echo //hdfw=//$fw////
echo 〃serial=\〃$serial\〃〃
echo //hdcap=//$cap////
echo 〃smart=\〃$smart\〃〃
echo 〃smartlog=\〃$smartlog\〃〃
} >/tmp/hd.txt
sysmem='grep MemTotal /proc/meminfo |awk ’ {print $2}sysmem='echo "scale=2;$sysmem/1024/1024"|bc'to talmem=//$ sysmem^
{
meminfo= /usr/sbin/dmidecode |grep -A16 "Memory Device$〃 | sed _e ’/./{H;$!d;}, \
-e J X;/Memory Device\n/!d;,\
-e,s/: /:/g \
-e ’s/〈/{/g,\
-e ’s/>/}/g’ \
-
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1