如何修复拥有多于一个失效硬盘的软件 RAID5 扇区

作者:LevShamardin

当一个 RAID5 扇区内的某个硬盘失效,基本上大事已经不妙,但有时情况可以更坏,而一个 RAID5 扇区更可能有多于一个硬盘失效。在这些情形下,mdadm 不会容许你引导这个扇区。基于 RAID5 的内部数据结构,当有多于一个失效的硬盘时,便不能修复扇区内的所有数据。但在不少情况下,扇区内的大部份数据仍是可救回的,因为一般来说硬盘只会出现局部故障,而额外部份仍是可读的。这页描述引导一个拥有多于一个失效硬盘的 RAID5 扇区时所需的步骤。

郑重警告

这些指令可能会损坏你的数据致不能修复的地步。我们强烈地推荐你将失效 RAID 扇区内的所有硬盘进行复制,包括有毛病的硬盘,然后在复制本上进行修复的程序。请注意,在没有特殊仪器的情况下,单单尝试复制失效硬盘上的数据足以对硬盘构成更多损坏。后果请自负。

如何引导拥有多于一个失效硬盘的扇区

这里的指令假设在一个 RAID5 扇区内存有两个失效的硬盘,但这些指令可以扩展至甚何数量的坏硬盘。我们会假设这个 RAID 扇区由 /dev/sda1dev/sdb1/dev/sdc1/dev/sdd1/dev/sde1 这些硬盘所组成,并假定 /dev/sdc/dev/sdd 失了效。

  1. 你必须最少一个新的可用硬盘,它会用来代替其中一个失效的硬盘。
  2. 请将其中一个失效的硬盘复制到新的硬盘。你应该选择那个毁坏较少的硬盘。这个硬盘将会被称为「较好的硬盘」,而第二个有问题的硬盘会被称名「较坏的硬盘」。请以你刚复制好硬盘取代较好的硬盘。切勿利用一个有毛病的硬盘来进行以下步骤,因为一旦它失效,整个扇区又会再次被停顿。在我们的样例里,我们会将 /dev/sdc 复制到一个新的硬盘上,然后以复制品取代有问题的 /dev/sdc

  3. 查阅 RAID5 扇区的参数。在任何一个有效的硬盘上执行 mdadm -E:

    mdadm -E /dev/sdb1
    

    留意 Chunk SizeLayout

  4. 在降级模式下重建 RAID 扇区。你必须知道以下数据才能完成:
    • XXX —— 你的 RAID 扇区内的硬盘数量。
    • YYY —— 你的 RAID 扇区的数据块尺寸。这已经在上一步断定了。
    • ZZZ —— RAID 扇区的布局。这已经在上一步断定了。
    • 哪一个硬盘并不存在(也就是较坏的硬盘,在样例中是 /dev/sdd1)。

    执行如下的指令:

    mdadm --create /dev/md0 -n XXX -c YYY -l 5 -p ZZZ --assume-clean /dev/sda1 /dev/sdb1 /dev/sdc1 missing /dev/sde1 
    

    你应该根据你失去了的硬盘(即较坏的硬盘)的实际位置及 RAID 扇区的布局来调整这个指令,以 missing 这个参数来代替较坏的硬盘。

现在,既然你已将 RAID 扇区在降级模式下引导,你便可以尝试修复你的数据。你亦可以用一个新的硬盘来取代失去了的硬盘并重建这个 RAID,因为它已经不再包含失效的硬盘。重建后的 RAID 扇区上大部份数据应该没有错误;如果幸运地,所有硬盘的故障都出现在文件系统的空白位置上,你甚至可能救回全部数据。

Translation of revision 6

zh/TipsAndTricks/Repair RAID5 Volumes (last edited 2010-03-08 09:03:31 by TimothyLee)