mdadm 如何识别哪个设备适合与其他设备同步

mdadm 如何识别哪个设备适合与其他设备同步

假设您有带有 2 个磁盘的 mdadm raid1。

然后关闭服务器,将每个磁盘拆分到不同的机器上并启动它们,因此它们会变得稍微不一致

现在关闭这两个盒子并将磁盘放回原始机器并启动它。

mdadm 如何确定这 2 个磁盘中哪一个是正确的,哪一个是“错误的”并与正确的磁盘同步?

是否有可能以某种方式指定这一点?如果您这样做,实际上会发生什么,磁盘会自动同步还是阵列会损坏?

答案1

在这种情况下,每个磁盘都会声称另一个磁盘出现故障。

结果取决于您如何准确地组装磁盘,但本质上,它将使用一个磁盘并忽略另一个磁盘;或者它可能会将另一个集合为一个单独的突袭,这会给你一个分裂的大脑。

我用循环设备做了一个实验,我首先更改了loop1,然后更改了loop2,因此loop2是更“最近”的一个,但它被忽略了:

# mdadm --assemble /dev/md42 /dev/loop1 /dev/loop2
mdadm: ignoring /dev/loop2 as it reports /dev/loop1 as failed
mdadm: /dev/md42 has been started with 1 drive (out of 2).

如果你以相反的方式执行它,它只会忽略另一个磁盘:

# mdadm --assemble /dev/md42 /dev/loop2 /dev/loop1
mdadm: ignoring /dev/loop1 as it reports /dev/loop2 as failed
mdadm: /dev/md42 has been started with 1 drive (out of 2).

这让我相信它只会坚持它首先找到的任何磁盘。因此,完全有可能在重新启动后,您突然看到 RAID 的另一面。这实在是太糟糕了。

它不会自动同步,甚至完全忽略其他磁盘:

# cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md42 : active raid1 loop1[0]
      102272 blocks super 1.2 [2/1] [U_]

您永远不想处于这种情况,因此您应该避免它(不要通过按照您所描述的方式移动磁盘来故意引发它)。诸如此类的冲突必须手动解决。

相关内容