周五,在一台服务器更换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的数据都回来了。