本文主要分享下Linux服务器中硬盘发生故障后/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的错误日志,则表明此硬盘需要更换了,这时可以先禁掉这块盘所挂在目录的读写功能,在此之前你可以先把里面的数据拷贝出来: