SuSE的软Raid中一块硬盘坏掉后的修复方法

发布时间:  2014-09-20 浏览次数:  4229 下载次数:  0
问题描述
我司的很多服务器都运行SuSE操作系统,上面用软Raid实现简单的数据保护。如果服务器上一块硬盘坏掉,软Raid将会被降级,数据将会处于危险之中。本文将介绍如何修复这种问题。
告警信息
这是一个软Raid出错的例子:
处理过程
1. 首先需要了解清楚软Raid的相关信息,包括Raid中包括多少硬盘,有几块硬盘坏掉。如果同时坏掉的硬盘数超过Raid本身的保护能力,数据将可能无法修复(Raid5可以坏1块盘,Raid6可以坏2快盘)。
在SuSE的软Raid环境中,Raid信息存放在所有的成员盘中,所以你可以检查任何一个已知成员盘,都能获得完整的Raid信息。如果你之前没有任何成员盘信息,也可以轮流用下面的命令检查所有的系统磁盘。这个命令只是读取盘上的Raid信息,不会对数据造成损坏。
这个检查Raid信息的命令是:mdadm –E <disk_name>



从上面的运行结果,我们可以获得以下信息:
  • 这是个Raid5环境,Raid中共有5块盘,其中1块盘坏,4块盘状态正常。
  • 正常的4块盘是sdb/sdc/sdd/sde

2. 有了第一步获得的Raid信息,我们可以尝试把Raid先恢复起来,使上面的数据可用。命令“mdadm --assemble <MD_Name> <disks>”可以帮助我们完成这个任务。



从上面的运行结果可以看到,我们用仍然完好的盘sdb/sdc/sdd/sde使Raid重新运行起来,可以被mount,上面的数据也仍然完好。
这步并不是问题的结束,此时Raid仍然不完整,坏盘仍然没有被更换。如果此时另外一块盘再坏掉,整个Raid的数据都可能会完全丢失。因此需要尽快更换坏盘,使Raid回到正常带数据保护的状态。

3. 用新盘更换坏掉的盘。这步操作需要非常小心,确保正确的找到坏盘的位置并用新盘替换。如果这步找错了盘,可能导致数据完全丢失。请务必小心确认。

4. 现在我们假设坏盘已经被更换,新的盘符为sdf。 我们需要将新盘sdf加入raid中然后重构raid。当Raid重构完成之后,将会回到带数据保护的状态。命令“mdadm <MD_Name> -a <disk_name>"将完成这个步骤:



请看上面的例子,sdf被成功的加入Raid中。然后我们用命令”cat /proc/mdstat"检查当前Raid的重构进度。当重构完成之后,这个问题才算真正解决。

根因
磁盘坏的话,软Raid将会被降级。
建议与总结
  • 本文的整个操作过程带有一定的危险性,请在工程师指导下进行。确保你在运行每个命令的时候明确该命令的作用和后果。
  • 在用assemble命令恢复Raid之前,确保你获得了足够的Raid信息。
  • 第三步非常重要,请确保换盘动作正确而小心的完成。

END