重建暂时断开的 RAID 设备

重建暂时断开的 RAID 设备

如果我构建了一个 RAID 5 阵列(特别是 Linux 上的 MD RAID),然后其中一个驱动器由于某种原因断开连接,如果出现以下情况,是否需要从头重建该驱动器:

  1. 尚未将数据写入阵列。
  2. 一些数据已写入数组。

我所说的“删除”是指重建完整数据,而不是重建自驱动器上次上线以来的差异数据。

答案1

那要看情况。

当您将驱动器从 RAID 5 阵列断开时,一旦将驱动器重新置于在线状态,就需要重建完整的阵列。系统无法知道该驱动器是否仍具有与离线前相同的数据。

我的意思是,当驱动器离线时,其数据可能会被其他方式修改。而当驱动器重新在线时“信任”它可能会对数据一致性造成灾难。

您可以启用写意图位图或日志模式的数据一致性。有关此内容,请参阅 mdadm 的 --bitmap 和 --consistency-policy 选项。但我猜想,这绝不保证在实际移除并重新连接驱动器后不会进行完全重建。例如,如果您将热备用添加到阵列,它将在您移除驱动器后立即开始将阵列重建为热备用。

答案2

这正是写入意图位图解决的问题。创建数组时,--bitmap=internal在命令行上指定。位图记录数组的某个区域是否已被写入。根据数组的大小,例如,一个位可能是 1 GiB。

在正常操作期间,内核在写入区域之前将位设置为 1。然后,一旦它知道所有写入都已刷新到某个区域,它就会将该位清零。如果阵列中的某个驱动器发生故障,导致阵列降级,则位只会开始累积 1。它们不会被清除。

当您将驱动器重新添加到阵列中时,md 仅根据位图同步已写入的区域。

您可以使用 将位图添加到现有数组--grow --bitmap=internal

相关内容