Linux mdadm RAID5 数据恢复,其中一个驱动器发生故障,另一个驱动器发生故障

Linux mdadm RAID5 数据恢复,其中一个驱动器发生故障,另一个驱动器发生故障

不可思议的是,在两周之内,同一个 Raid5 阵列中的两个驱动器都出现了故障。这意味着阵列已经坏了。是的,热备件不会偷懒更换故障驱动器,我知道。但让我们先不谈这个。

数据有部分备份,但并不重要,所以我对此并不特别恐慌。无论如何,我还是想尽力挽救。

这是使用 mdadm 设置的 4 设备软件 RAID5。驱动器如下:

/dev/sde - device 0, healthy 
/dev/sdf - device 1, first failure, hard failure, totally dead
/dev/sdg - device 2, second failure, badblocks reports a few bad sectors
/dev/sdc - device 3, healthy

我想你明白我的意思了。鉴于 sdg 只有少数坏扇区,我想相信大多数数据都是可以挽救的。当我用

mdadm --create /dev/md0 --assume-clean --level=5 --raid-devices=4 /dev/sde missing /dev/sdg /dev/sdc

我没有收到任何投诉,设备在降级模式下组装和启动都很好。当我尝试安装它时,问题就出现了。我一运行

mount -t ext4 /dev/md0 /mnt/raid

此时会检测到坏块,/dev/sdg 会从阵列中退出,并且只有 /dev/sde 和 /dev/sdc 仍可运行,因此 raid 会处于非活动状态并且挂载会失败。

有没有办法防止 mdadm 在检测到坏块时立即使驱动器故障?我可以设置一些调试标志吗?有什么办法吗?我意识到一些数据会损坏,一些读取会失败。

我猜我问的问题是不可能的,尽管我看不出它需要的理论原因。RAID 设备可以像驱动器本身一样报告 I/O 错误。但我认为,如果避免 dd 在普通硬盘驱动器的坏块上失败的唯一方法是使用不同的程序 dd_rescue,我认为 mdadm 最终也会如此,只是我怀疑是否存在“mdadm_rescue”这样的东西。

尽管如此,我还是会问,如果我错了,请告诉我,或者您可以想出一种方法来提取一些数据,而不会导致驱动器立即崩溃。

答案1

尝试将故障驱动器的磁盘转储到运行正常的驱动器,然后将运行正常的驱动器添加到阵列。

相关内容