一、需求梳理
在有云盘的集群,使用云盘快照缓存虚机系统盘镜像,加速云盘系统盘的虚机的启动速度
二、问题描述
目前问题是使用datavolume的smart clone创建的虚机系统盘会出现自动flatten的现象,导致虚机启动速度非常慢。
原因是smart clone本质上也是调用ceph的快照克隆功能,但csi在controller进程创建克隆的时候一般不会执行flatten,只有克隆层数超过–rbdhardmaxclonedepth和–rbdsoftmaxclonedepth才会触发flatten操作,
所以真正导致每次都会触发flatten的原因,是csi的nodeserver在stage挂载云盘的时候执行了flatten。代码如下:
这里意思是如果内核不支持deep flatten,克隆的镜像都会做flatten,除非设置skipForceFlatten变量
经过设置skipForceFlatten变量确实不会再出现flatten现象,修改如下:
三、测试启动时间对比
测试镜像大小300多M,系统盘30g
flatten耗时35s如下
不flatten耗时5s如下
四、测试批量开20台虚机压测
批量开启20台虚拟机,在每台虚拟机启动脚本加入fio测试命令
fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=20G -numjobs=1 -runtime=100 -group_reporting -filename=a.txt -name=Rand_Write_Testing > Rand_Write_Testing.txt fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=20G -numjobs=1 -runtime=100 -group_reporting -filename=a.txt -name=Rand_Read_Testing > Rand_Read_Testing.txt fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=20G -numjobs=1 -runtime=100 -group_reporting -filename=a.txt -name=Write_PPS_Testing > Write_PPS_Testing.txt fio -direct=1 -iodepth=64 -rw= read -ioengine=libaio -bs=1024k -size=20G -numjobs=1 -runtime=100 -group_reporting -filename=a.txt -name=Read_PPS_Testing > Read_PPS_Testing.txt |
|
随机写iops
|
随机读iops
|
顺序写
|
顺序读
|
---|---|---|---|---|
no flatten情况 | 2000 | 68.9k | 94MiB/s | 388MiB/s |
flatten情况 | 4000 | 69.5k | 55.5MiB/s | 272MiB/s |