qcow2文件的snapshot管理

qcow2是qemu虚拟机中特别常用的镜像文件格式,QCOW即Qemu Copy-On-Write写时拷贝,后面的2即为版本,因为在qcow2出现之前还有qcow格式的镜像文件。从字面上理解,qcow/qcow2的文件组织形式应该是建立在Copy-On-Write这个基本的机制上,即当某个数据块被引用多次(两次或两次以上)时,若某个实例尝试写该数据块,为了不让其他实例看到该数据块的变化,就会将该数据块拷贝一份,然后将修改生效到拷贝的数据块上。这个机制和内存的Copy-On-Write的机制是基本一致的。

qcow2镜像文件组织结构

qcow2镜像文件以固定大小的单元组成,每个单元称作cluster,每个cluster在物理磁盘中都是连续分布的,便于数据的读取和写入。cluster的大小即为虚拟机看到的虚拟磁盘基本单元大小,类似于机械硬盘的sector大小,一个cluster可能对应一个sector或者连续多个sector,取决与cluster size和sector size的比例。

虚拟磁盘的数据被拆分为一个个cluster,然后这些cluster用一个二级索引表组织起来,第一级称作L1 Table,第二级称作L2 Table,其组织形式如下所示:

其中L1 Table的大小可变,可能只占用一个cluster,也可能占用多个连续的cluster,L1 Table的大小在虚拟磁盘创建的那一刻就已经决定,并且在cluster大小相同的情况下,虚拟磁盘的大小越大,L1 Table的size也越大。每个L2 Table则固定占用一个cluster,不同的L2 Table不需要放在相邻的cluster上。L1 Table和L2 Table中每个entry的大小为64bit,因为以目前的磁盘容量来看,64bit的地址已经能够完全满足寻址需求了。

另外,由于qcow2文件支持在文件内部建立snapshot(在文件外建立snapshot即为差分文件),故需要对每个cluster的使用进行记录,即需要记录下每个cluster被引用的次数,这样当某个snapshot被删除的时候,才能够知道哪些cluster可以释放出来继续使用,哪些cluster还在被使用,主机不能主动修改。为了维持对cluster引用次数的记录

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值