本文主要分享下服务器中硬盘发生故障后/var/log/messages 和/var/log/mcelog中会出现的具体日志以及对应的修复方法,随着案例的不断增多和丰富,最后我会归纳形成自动化脚本。

当然其中会有很多硬盘有物理坏道,需要更换,这种就需要硬盘供应商去更换了,此处不在本文讨论范围。


服务器型号:

HP SE1170s

硬盘型号:

MB2000EAZNL


故障1:

Jul 17 00:46:34 xxxxxxxxxxxxxx kernel: [8384801.159283] EXT4-fs (sdl1): warning: mounting fs with errors, running e2fsck is recommended

Jul 17 00:50:00 xxxxxxxxxxxxxx kernel: [8385006.016500] sd 6:0:6:0: [sdl] Sense Key : Medium Error [current] 

Jul 17 00:50:00 xxxxxxxxxxxxxx kernel: [8385006.016508] sd 6:0:6:0: [sdl] Add. Sense: Unrecovered read error

Jul 17 00:50:00 xxxxxxxxxxxxxx kernel: [8385006.016524] Buffer I/O error on device sdl1, logical block 1415594116

Jul 17 00:50:00 xxxxxxxxxxxxxx kernel: [8385006.095561] Buffer I/O error on device sdl1, logical block 1415594117


故障解决:

#e2fsck /dev/sdl1

若坏的block无法修复,则需要用fdisk格式化硬盘:

#fdisk /dev/sdl

#d

#n

#p

#Enter

#Enter

#w

用ext4文件系统格式化磁盘:

#mkfs.ext4 /dev/sdl1

把格式化好的硬盘mount回来:

#mount -L /hadoop07 /hadoop/7 -t ext4 -o defaults,noatime,nodiratime,noauto

若几天后发现/var/log/messages里面有最新的/dev/sdl的错误日志,则表明此硬盘需要更换了,这时可以先禁掉这块盘所挂在目录的读写功能,在此之前你可以先把里面的数据拷贝出来:

#chmod 0 /hadoop07