1、创建快照链基础节点,并nbd挂载到指定路径,往qcow中写文件
qemu-img create -f qcow2 snap1.qcow2 100g
qemu-nbd -c /dev/nbd0 snap1.qcow2
mkfs.xfs /dev/nbd0
mkdir snap1_dir; mount /dev/nbd0 snap1_dir
echo '111' > aaa.txt; echo '222' > bbb.txt
umount -l snap1_dir; qemu-nbd -d /dev/nbd0
2、新建节点,指向snap1,删除aaa.txt创建ccc.txt
qemu-img create -f qcow2 -b snap1.qcow2 snap2.qcow2 100g
qemu-nbd -c /dev/nbd0 snap2.qcow2
mkdir snap2_dir; mount /dev/nbd0 snap2_dir
rm -f aaa.txt; echo '333' > ccc.txt
umount -l snap1_dir; qemu-nbd -d /dev/nbd0
再次挂起snap1查看其中的文件,snap1的大小和内容不变。
经验证,节点二的修改对节点一的数据没有改动,节点1中仍然存在aaa和bbb。
总结:
qcow快照链后面节点的增删改只对当前节点中对应地址进行标记或修改,对前面节点保存的数据没有影响。且删除操作只是对地址做标记,qcow大小不会改变,新增数据是qcow大小将相应增大,即快照链总大小只会增大永远不会减小。