一次RAID5故障的恢复和经验教训
2012-03-25    刘世伟   
打印自: 安恒公司
地址: HTTP://oc3.anheng.com.cn/news/article.php?articleid=2386
一次RAID5故障的恢复和经验教训
周五,在一台服务器更换CPU后, 启动中,raid5阵列出错, 可能是运气太差的原因吧, 显示raid5的5个存储设备, 有2个离线了,其中一个硬盘启动时有异常声音,完全损坏了。
首先,不要紧张, 因为硬盘不可能完全损坏, 数据还都在盘体上, 给硬盘声音异常的硬盘更换了一个线路板后,硬盘修好了, 然后(-S)把阵列停止,重新(-A)建立,重新(-R)运行,
阵列开始recover, 到10%左右,又失败了, 还是2个分区离线, 屏幕有大量的硬盘读取错误。 看来还要先修复坏道, 建立一个脚本, 扫描所有的硬盘, 建立坏道表, 发现2个硬盘有坏道:
sdb sdc  其中sdb 2个块读取错误,  sdc 110个块读取错误,  用dd修复坏块, sdb修复一个, sdc修复40个左右, 剩余无法修复的, 用写0修复, 数据只能丢失了,在阵列recover过程中, 数据应该可以完全修复,

修复完坏快,再做一次磁盘扫描,这次,可以不用badblocks来做了, 因为我们不需要获取坏道表了,  用smartctl 对磁盘进行内部扫描诊断, 并行扫描, 2个小时全部完成。 5个硬盘已经都没有坏道。

然后开始mdadm -R /dev/md2  现在已经recover到93%了, 还有8分钟完成,应该问题不大了。

修复后, 第一件事就是把2个曾经出现过坏道的硬盘更换成新硬盘,不敢再相信它们了。


相关参考文章:
软raid修复 http://anheng.com.cn/news/html/net_admin_blog/raid5_mdadm_fail_recover.html
磁盘坏道修复 http://www.anheng.com.cn/news/html/net_admin_blog/linux_badblocks_online_fix.html


经验教训:
1.磁盘损坏, 不要紧张, 只要不是电机损坏, 都可以通过更换线路板来修复。 2块硬盘同时电机损坏的可能性不大。
2.smart里面的 1 Raw_Read_Error_Rate 寄存器并不可以完全相信。 sdb出现2个坏块,并修复, 这个寄存器的数值还是0
3.一定要进行每月2次的磁盘内部自动扫描,自动报告, 这台服务器就是只定时报告Raw_Read_Error_Rate ,而没有进行扫描。有坏道没有提前发现。
4.有必要集中管理所有的磁盘的smart诊断, 而不能只靠自动电子邮件报告,不知道nagis有没有smart的模块


后记:
周日上午12点18分, 完全修复,
文件系统          容量  已用  可用 已用%% 挂载点
/dev/md0              5.5G  1.8G  3.5G  34% /
tmpfs                 2.0G     0  2.0G   0% /lib/init/rw
udev                  1.9G  252K  1.9G   1% /dev
tmpfs                 2.0G     0  2.0G   0% /dev/shm
/dev/mapper/vg0-home  1.1T  883G   99G  90% /home

883G的数据都回来了。
责任编辑: admin