oVirt中虚拟机快照的实现原理分析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
oVirt中虚拟机快照的实现原理分析

oVirt中虚拟机快照的实现原理分析1,虚拟机快照介绍?虚拟机快照可被看作是虚拟机的在某个指定时间的视图(包括他的操作系统和所有的程序)。据此,可以还原到指定时间点的完整的状态,或者在虚拟机运行的时候做个备份。??2,Qcow2镜像介绍?2.1?Qcow2镜像文件格式?在oVirt中虚拟机快照是基于qcow2镜像文件格式实现的。?先简单介绍下qcow2(QEMU?copy?on?writing)镜像文件。?Qcow2镜像格式是qemu支持的磁盘镜像格式之一。每一个qcow2文件都是以一个固定格式的数据头开始的,其保存数据的最小单位是cluster(512bytes)。?在Qcow2镜像文件中设计2级索引,实现将访问的镜像地址映射到Cluster。?Qcow2镜像文件内容布局如下表:?qcow2?Header?uint32_t?magic;?uint32_t?version;?uint64_t?backing_file_offset;?uint32_t?backing_file_size;?uint32_t?cluster_bits;?uint64_t?size;?/*?in?bytes?*/?……?uint32_t?l1_size;?uint64_t?l1_table_offset;?数据头?魔术字?版本?Backing文件路径??如何映射一个镜像的地址到一个本地文件??L1表的大小L1表的偏移位置L1?Table......L2?TableData?ClusterL2偏移量的数组??在qcow2镜像的头部数据中,保存backing文件的路径,即对应的原始文件。???2级索引寻址的流程原理如下:?为了获取一个给定地址(64?位)的偏移位置:从文件头中的L1_table_offset?取得?L1?表的地址?用前(64-l2_bits-cluster_bits)位地址去索引?L1?表?在?L1?表中的偏移量获得?L2?表的地址??用地址中的接下来的?l2_bits?去索引?L2?表,获得一个?64?位的表项?用?L2?表中的偏移量获得?cluster?的地址?6)用地址中剩下的?cluster_bits?位去索引该?cluster,获得该数据块?如果?L1?表和?L2?表中的偏移量都是空,这块区域就尚未被镜像文件分配。2.2Qcow2镜像读写原理?基于前面文件格式的介绍,Qcow2镜像读写的原理大致如下:?1,在对Qcow2镜像访问(写)时,根据访问的地址通过二级索引进行映射。根据在索引项中判读地址所在的cluster是否有从backing文件拷贝。?1.1)?如果已拷贝,直接在该cluster中对应地址写入数据;?1.2)?如果未拷贝,则需要从backing文件将对应的数据块拷贝过来,然后再在对应地址空间写入数据,将该cluster标记为已拷贝。??2,在对Qcow2镜像访问(读)时,根据访问的地址通过二级索引进行映射。根据在索引项中判读地址所在的cluster是否有从backing文件拷贝。1.1)如果已拷贝,从cluster读取数据;?1.2)如果未拷贝,则需要从backing文件读数据。3,虚拟机快照实现原理?下面基于快照的创建、删除、回滚来介绍其实现原理。??3.1创建快照?创建快照,可通过向QEMU发送命令,命令执行的结果是将原始的镜像(original?image)变成备份镜像(backingimage),同时,生成一个overlay(又称为活动镜像,?active?image),与原始镜像相比,所有新的变化都将记录在活动镜像里,另外,还将原始镜像(即备份镜像)以只读的权限挂载。???任何格式的原始镜像(也可以是raw格式)都可以做snapshot,但生成的snapshot必须是qcow2格式的。??其流程如下:?1,?冻结虚拟机,将当前的IO刷到镜像文件。?2,?将原始的镜像文件变为备份镜像(backing),即当前的快照的映射。再生成一个overlay(qcow2格式镜像文件),该文件以backing文件为后端,只记录新的变化内容。?3,?将当前虚拟机的读写路径重定向到overlay文件。该overlay文件还叫做Active?镜像,即当前虚拟机访问的镜像。?4,?将虚拟机恢复正常。至于虚拟机是如何通过overlay文件实现数据访问的,可以参考前面提到的Qcow2镜像的实现。??3.2删除快照?删除快照流程如下:1,冻结虚拟机,将当前的IO刷到镜像文件。?2,在删除快照时,将当前overlay文件中的数据提交到backing文件中,将虚拟机的读写重定向会backing镜像文件。?3,将虚拟机恢复正常。3.3快照回滚?回滚快照流程如下:?1,冻结虚拟机,将当前的IO刷到镜像文件。?2,在回滚快照时,将当前overl

文档评论(0)

kabudou + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档