原理
测试数据
三个块大小分别为10G,30G,50G
测试脚本
#!/bin/bash
for size in 10240 30720 51200
do
echo "****************************************************"
echo "test rbd ${size}M ...."
rbd create yxjtest${size} --size ${size} --image-format 2
for i in 1 #set snap and clone number,if set 5,change it as " for i in 1 2 3 4 5"
do
begintime=$[$(date +%s%N)/1000000]
echo "begin time:${begintime}ms"
#echo " create snap snap${size}-$i... "
rbd snap create rbd/yxjtest${size}@snap${size}-$i
#echo " set protect for ..."
rbd snap protect rbd/yxjtest${size}@snap${size}-$i
#echo "create a clone for snap ..."
rbd clone rbd/yxjtest${size}@snap${size}-$i rbd/child${size}-$i
rbd info --image child${size}-$i
#flatten an rbd
rbd flatten rbd/child${size}-$i
rbd info --image child${size}-$i
endtime=$[$(date +%s%N)/1000000]
echo "end time:${endtime}ms"
let handletimes=$endtime-$begintime
echo "handle times:${handletimes}ms"
done
rbd snap ls rbd/yxjtest$size
echo " ----------- "
echo "clean beginng ..."
for ii in 1 #set snap and clone number,if set 5,change it as " for i in 1 2 3 4 5"
do
rbd snap unprotect rbd/yxjtest$size@snap${size}-${ii}
rbd snap rm rbd/yxjtest$size@snap${size}-${ii}
rbd rm child${size}-$ii
done
rbd snap purge rbd/yxjtest$size
rbd rm yxjtest$size
echo "clean finish ...."
echo "****************************************************"
echo -e
done
测试结果
测试10G的RBD,拍平时间为22.512秒
测试30G的RBD,拍平时间为61.793秒
测试50G的RBD,测试时间为95.764秒