![从失败的 RAID 5 设置中恢复数据](https://linux22.com/image/52768/%E4%BB%8E%E5%A4%B1%E8%B4%A5%E7%9A%84%20RAID%205%20%E8%AE%BE%E7%BD%AE%E4%B8%AD%E6%81%A2%E5%A4%8D%E6%95%B0%E6%8D%AE.png)
我有一个四磁盘 RAID 5 阵列,正在发生硬盘故障。一个磁盘完全失效并smartctl
告诉我第二个磁盘出现故障。 RAID 上的所有数据都已备份,但恢复大约 1 TB 的数据并不容易,因为它是翻录的 CD 和 DVD,我必须再次翻录它们。我有一个备用磁盘,可以将其替换为损坏的驱动器,并尝试重建(如果这是正确的术语)RAID,然后将困难数据备份到另一个完全健康的新 RAID 6 设置中。我还可以将数据从现在非冗余的 RAID 直接备份到新的 RAID。
从非冗余四盘 RAID 中的磁盘上“恢复”RAID 或直接复制数据更为温和。
每个磁盘的大小为 2 TB,RAID 总大小为 6 TB。 RAID 上大约有 5 TB 的数据,我想从中获取 1 TB 的数据。
答案1
将新添加的磁盘“重建”到 RAID 阵列或访问降级的 ARRAY 在磁盘上的压力方面非常接近。这里的区别更多在于要读取的数据大小:6 GB 与 1 GB。
我建议您尽可能在备用磁盘上复制所有内容。
最坏的情况是,在完成复制之前或在 RAID 重建尝试期间,即将死亡的磁盘已死亡。
- 尝试保存文件时:您最终会保存一些“重要”数据
- 重建阵列时:你会失去一切
(那么选择就显而易见了)
答案2
首先从数组中复制数据。重建完整的 RAID 5 集无论如何都将涉及读取所有数据,因为必须计算新的奇偶校验数据。如果您只复制所需的数据,那么对故障磁盘造成的压力就会较小。
答案3
如果一个磁盘已经完全消失,那么您就没有冗余了。
如果另一个磁盘发生故障,您可以使用复制该磁盘ddrescue
,然后使用副本查看还剩下什么。
此时,您会发现无声的数据损坏;通过一些努力,您可以通过ddrescue
记录哪些区域无法读取并filefrag
确定哪些文件在这些区域中具有范围来找到受影响的文件。
如果损坏的阵列仍然正常运行,那么从损坏的阵列中复制文件可能会更简单。但这有点危险,因为这种随机访问副本对磁盘的压力比线性更大ddrescue
,而且如果磁盘完全失效,一切都会消失。
祝你好运。
PS:你不应该让事情发展到这一步。定期测试磁盘是否存在读取错误,一旦出现问题就更换磁盘。如果没有监控,即使是 RAID6 也无法为您提供太大帮助,如果您让读取错误几个月都未被检测到……