mdadm:增加 RAID0 阵列的怪异之处

mdadm:增加 RAID0 阵列的怪异之处

我使用 mdadm 在 3 台 Rackspace CloudServer 上创建了 3 个 RAID0 阵列,并使用 Rackspace 的 CloudBlockStorage 作为其设备。每个阵列都有自己的一组 CBS 卷。RS-CBS 的驱动器上限为 1TB,而我需要更大的存储空间。其中一台服务器用于数据存储,第二台是该服务器的实时镜像,第三台是夜间快照。我使用以下命令在每台服务器上创建了阵列:

mdadm --create /dev/md0 --level=0 --raid-devices=3 /dev/xvdb1 /dev/xvdd1 /dev/xvde1

当需要扩展阵列时,由于这是我第一次扩展阵列,因此我从最不重要的服务器开始:快照服务器。我添加了一个新卷,经过一番调整,我得出了这个命令:

mdadm --grow /dev/md0 --raid-devices=4 --add /dev/xvdf1

根据 mdadm 手册页,它说您无法扩大 RAID0,因此 mdadm 将其转换为 RAID4,扩大它,然后转换回来。(它永远不会转换回来,但这是另一个问题)。阵列重塑,但大小永远不会改变。我的假设是新驱动器刚刚成为阵列的奇偶校验驱动器。因此,为了获得所需的空间,我添加了另一个卷:

mdadm --grow /dev/md0 --raid-devices=5 --add /dev/xvdg1

它进行了重塑并为我提供了我所希望的额外 500GB,因此我这样做resize2fs /dev/md0并且可以开始使用;2TB 的空间。

这就是怪事发生的地方。我切换到在镜像服务器上扩大阵列。从前面的步骤中得知,我需要添加两个卷才能获得所需的额外空间,因此我使用以下命令:

mdadm --grow /dev/md0 --raid-devices=5 --add /dev/xvdf1 /dev/xvdg1

它重新整形后一切看起来都很好,但当我执行resize2fs /dev/md0后跟 a时df -hal,我发现它确实增长了,并且报告了 2.5TB 的空间,而不是我预期的 2.0TB。就好像它没有创建我在第一次运行时假设的奇偶校验驱动器,而是使用了阵列的所有可用空间。

mdadm -D /dev/md0镜像服务器上重塑后的输出看起来有所不同。我看到 RAID 设备的输出如下:

    Number   Major   Minor   RaidDevice State
   0     202       17        0      active sync   /dev/xvdb1
   1     202       49        1      active sync   /dev/xvdd1
   2     202       65        2      active sync   /dev/xvde1
   5     202       97        3      active sync   /dev/xvdg1
   4     202       81        4      active sync   /dev/xvdf1
   5       0        0        5      removed

输出cat /proc/mdstat显示它确实转换为 RAID4:

    Personalities : [raid0] [raid6] [raid5] [raid4]
md0 : active raid4 xvdg1[5] xvdf1[4] xvdd1[1] xvdb1[0] xvde1[2]
      2621432320 blocks super 1.2 level 4, 512k chunk, algorithm 5 [6/5] [UUUUU_]

unused devices: <none>

所以我担心的是...我是否错误地增加了第一个阵列(快照服务器),它应该有 2.5TB,但我的错误只给了它 2.0TB?或者我是否错误地增加了第二个阵列(镜像服务器),并且没有我以为会得到的奇偶校验驱动器?我能做什么,或者我应该做什么,才能持续增加这些阵列?

答案1

我也遇到了他的问题,经过一些测试后可以建立软件 RAID 0 阵列。

我发现了一个选项,如果你仔细想想,将它包含在 grow 命令中是有意义的,这个选项是,--backup-file。如果你考虑一下如何实际地扩大 RAID 0 阵列,就像你在硬件中所做的那样,你需要将数据复制到其他地方来销毁并重新创建阵列,如果不是,我想看看在没有额外空间的情况下扩大 RAID 0 阵列的数学运算(真的)。

我发现的另一件事是我无法只将一个驱动器添加到 RAID 0 阵列,只有添加两个驱动器才有效,目前还没有尝试过更多。

因此,扩大 RAID 0 阵列的命令将是(针对您的情况):

mdadm --grow /dev/md0 --raid-devices=5 \
  --backup-file=/drive/With/Enough/Space/growth.bak --add /dev/xvdf1 /dev/xvdg1

相关内容