我使用Rackspace的CloudBlockStorage作为他们的设备,在3个Rackspace CloudServers上使用mdadm创建了3个RAID0阵列.每个阵列都有自己的一组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后跟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:
所以我的担忧是……我是否错误地增加了第一个阵列(快照服务器),它应该得到2.5TB,但我的错误只给它2.0TB?或者我是否错误地增加了第二个阵列(镜像服务器)并且没有我认为我会获得的奇偶校验驱动器?我能做些什么,或者我应该做些什么来一致地发展这些阵列?