将新磁盘添加到 RAID 1 时,为什么会同步未使用的空间?

idu*_*olz 14 linux mdadm raid1 md

我最近在 Linux 上使用mdadm. 将新 HDD 添加到 RAID 1 时,数据开始在我的驱动器之间同步,这是预期的。我没想到它开始同步整个驱动器,包括未使用的空间。HDD 为 6\xc2\xa0TB,只有大约 1\xc2\xa0TB 的数据,因此花费的时间比预期要长。为什么MD要同步未使用的空间?

\n

Gra*_*ant 32

RAID 在文件系统级别以下工作 - 它不知道或关心磁盘的哪些部分被“使用”或未被“使用”,它只看到一堆块及其 RAID1 的镜像对应部分。

因此它必须同步整个磁盘以确保它们匹配。如果没有,它就不会知道哪些差异是错误,哪些差异只是文件系统认为尚未使用的部分。

您可以使用一个--assume-clean标志来mdadm告诉它不要这样做 - 但只有当您确定磁盘只包含零时才应该这样做。我认为它只适用于 RAID1,不适用于 RAID5/6。

  • 如果您查看[手册页](https://man7.org/linux/man-pages/man8/mdadm.8.html),会提到“--assume-clean”下有关用零填充的设备的部分在_一个新数组_的上下文中,其中还没有上层结构。(而且很可能,驱动器不需要完全归零,只需填充相同的数据,确保同步检查不会返回误报。) (5认同)
  • @fraxinus这是属于SSD固件的优化 - 将“写入一个充满零的块”变成“修剪” - 因为它是问题的更通用的解决方案,并且不会“导出”关于如何进行的假设磁盘适用于操作系统中并不真正关心的部分。 (3认同)