相关疑难解决方法(0)

我可以在 Linux 软件 raid 中“原子地”交换 raid5 驱动器吗?

我的 3 磁盘 raid5 阵列中的一个驱动器开始显示读取错误和 SMART 警告。不足以将其从阵列中踢出(因为有故障),但它会影响性能并且可能会变坏(更糟)。我显然想更换这个驱动器。

现在的问题是我是否运行这个:(sdc 是损坏的驱动器,sdd 是新的):

mdadm /dev/md0 -a /dev/sdd1 -f /dev/sdc1 -r /dev/sdc1
Run Code Online (Sandbox Code Playgroud)

Linux 是否会先将 sdc1 标记为故障,然后再从它读取,然后从 sda1 和 sdb1(阵列中的另外两个磁盘)同步 sdd1?

如果是这样,那么我很容易受到 sda1 或 sdb1 上存在不可读块(甚至是一个!)的情况的影响,这将导致重建失败。

想要做的是在将 sdc1 标记为故障之前将 sdd1 同步为 sdc1 的副本。这样我就不会遇到没有冗余的情况(尽管磁盘上的一个冗余条带很可能会导致读取错误)。

有没有办法在网上做到这一点?离线我可以:

  • 向下排列 (mdadm --stop)
  • dd sdc1 到 sdd1 (dd if=/dev/sdc1 of=/dev/sdd1)
  • 物理取出sdc
  • 使用两个旧的工作阵列和新的阵列(mdadm -A -s)
  • 重新同步

好吧,该方法的问题在于,在最后一步中,如果存在不匹配,我希望新磁盘成为被重写的磁盘,而不是奇偶校验(无论该条带上的任何磁盘)。

因此,“将 sdd1 重建为新的 sdc1,从 sda1 和 sdb1 获取数据,但如果它们失败,则复制 sdc1 上的内容”。

linux raid

2
推荐指数
2
解决办法
1404
查看次数

标签 统计

linux ×1

raid ×1