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后跟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?或者我是否错误地增加了第二个阵列(镜像服务器)并且没有我认为我会获得的奇偶校验驱动器?我能做些什么,或者我应该做些什么来一致地发展这些阵列?
解决方法
我找到了一个选项,如果你认为在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