mdraid 重新同步如何工作?

mdraid 重新同步如何工作?

我的镜像中有两个驱动器(linux sw raid/mdadm);某个驱动器不知何故在过去留下了镜像,其内容现在已经有几天了。目前,我正在使用降级镜像(缺少一个驱动器)并考虑:

  • 将更新驱动器克隆到第二个驱动器dd
  • 添加第二个驱动器并重新同步,但我不知道重新同步过程如何工作以及哪些数据将被覆盖(该镜像上有 LVM 卷)

我认为dd这是安全的方法,无论如何我对重新同步的工作原理感兴趣。

答案1

正确的做法是类似的mdadm --add /dev/md0 /dev/sdb1。使用正确的数组代替md0并使用正确的分区代替sdb1

关键是阵列正在运行。要复制哪些数据是完全明确的:当前正在运行的数据。如果启用了位图,重新同步将相当快,因为​​它只会复制已更改的内容。否则,它将复制所有内容。

如果您非常偏执,或者担心磁盘系统可能丢失写入,并且位图可能不正确,并且不介意强制进行完整复制,则可以擦除要删除的磁盘上的超级块添加使用mdadm --zero-superblock /dev/sdb1(再次使用正确的分区)。

如果阵列当前没有运行(例如,如果这是从不干净的关闭进行的组装重建),则使用存储在超级块中的更新计数字段来决定复制什么。它可能会拒绝重新添加更新计数过高的磁盘(迫使您将超级块归零),但它不会覆盖活动数据。

如果您要使用该dd方法,那么: (a) 您最终会复制超级块,并且最终会得到两个磁盘 1(超级块存储磁盘在阵列中的位置); (b) 您将获得不一致的副本,除非您在复制期间停止了阵列(或者可能处于只读模式)。 (然后,要修复 a 和 b,您需要擦除超级块并让 mdraid 复制数据,如上所述)。

简而言之,当您决定使用 mdraid(或任何其他 RAID)时,您可以对其进行冗余管理。你几乎从不想要绕过它。与 LVM 相同:如果你想移动数据,你可以使用pvmove等。你不使用dd

PS:“一个驱动器不知何故离开了镜像”不是您应该接受的事情。有日志;弄清楚为什么它离开了镜子。即使使用半新的内核,坏块也不会再丢失驱动器,因此不应发生随机驱动器丢失。检查智能状态等

答案2

如果您已将 RAID-1 配置为使用位图(请参阅手册页),那么--re-add速度会快得多,因为只需写入连接中断后写入的区域。

以任何方式(即使没有位图完全同步),您都可以比使用 dd 更轻松地通过 /sys/block/md0/md/sync_speed_* 配置同步速度

与 dd 同步还要求您在此期间将活动磁盘设为只读。所以你真的应该让 md 驱动程序来做这份工作。如果您还没有完成:添加位图。

相关内容