这些天一直都在测试XenServer和DELL EqualLogic PS6000存储。PS6000做好配置之后,整体的磁盘空间是4T,一开始就只做了2个卷,每个卷是2T的空间。

  这次是做EqualLogic的压力测试,测试其在高压力下的IOPS及其它的一些性能指标。对于EqualLogic来说,每个卷(iSCSI)只能提供给XenServer的一个Pool或者是单机连接使用。

  所以,当增加测试机器的时候,两个卷就显得不足了,方法是腾出空间,新建卷。EqualLogic提供一个很好的实现功能:Thin provisioned volume。

  这个功能的原理:每个卷虽然分配了2T的空间,但并不是2T的空间都用满了,回收的是未使用的空间。

  而对于文件系统(Linux),使用磁盘空间是靠inode进行索引的,只要新建一系列的索引对这些剩余的空间进行索引,那么就可以使用这些空间了,但原来的索引不变,所以,在原有的卷里,是看不到磁盘空间的缩减的,用多少就取多少,直到用完为止。

  这次做的压力测试是在XenServer上的vm直接用dd命令进行打压的(dd if=/dev/zero of=/tmp/test bs=64k count=999999999)。这样同时对存储进行写操作,利用DELL HQ(存储的监控软件)进行监控,得到性能参数。

  问题来了,我同时用了大概60个vm同时进行做dd命令,就一直不管,等着看性能报告图,可谁料,第二天一到公司,就发现XenCenter连不上XenServer了,ping XenServer的IP能通,通过ssh也能连接上,发现有这么一个文件(/root/dead.letter),这是平时没有的,查看一下:

  提示没有磁盘空间可写了,查看一下存储的状态,其中连接的卷是处于offline的,而且提示不能空间不能自动增长了。这才醒悟,原来是vm不停的写数据,没空间可写了,还导致了卷处于offline状态。

  还有卷的空间可以释放,释放之后,恢复正常。

  看来,在非不得以的情况下,不要使用自动回收空间,因为你不知道你的磁盘空间什么时候被写满,特别是在生产环境。