VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案
发布日期:2021-06-30 10:09:16 浏览次数:2 分类:技术文章

本文共 1099 字,大约阅读时间需要 3 分钟。

目录

前文列表

全量备份数据的获取方式

首先需要声明的是,无论是获取全量数据还是增量数据,其面向操作的对象都是虚拟磁盘,而非虚拟机。

获取 VMware 虚拟机的全量备份相对简单,通常有以下两种方式:

  • 方式一:直接使用 VixDiskLib 来备份虚拟磁盘的所有内容,这种方式的缺点在于,对于「精简置备」或「厚置备延迟置零」的虚拟磁盘而言,实际上需要备份的数据可能远小于虚拟磁盘中所含有的数据。因为虚拟磁盘中有些数据可能只是没有被擦除,非当前虚拟机所实际拥有的数据。

  • 方式二changeId='*' 的 QueryChangedDiskAreas 调用,可以获得虚拟磁盘的全量数据。「*」表示 QueryChangedDiskAreas 应该返回虚拟磁盘中实际已分配的数据块偏移量,这里解决了方式一的缺陷。但需要注意的是,QueryChangedDiskAreas 获得的是已修改数据块的偏移量,而非实际的数据,仍然需要结合 VixDiskLib 来取得实际的磁盘数据。

NOTE:对于「厚置备置零」的虚拟磁盘来说,方式二和方式一的效果是等同的。

增量备份数据的获取过程

  • Step 1:对虚拟机执行第一次快照,并获取全量数据。
  • Step 2:通过 vShpere WS API VirtualDisk.getBacking.getChangeId 来取得 Step 1 中所创建快照的虚拟磁盘的 ChangeId。
  • Step 3:对虚拟机执行第二次快照。
  • Step 4:调用 vShpere WS API QueryChangedDiskAreas,并传入从 Step 2 取得的 ChangeId、从 Step 3 创建的快照 moRef 和指定虚拟磁盘的唯一 ID 作为实参。如此就能够获得自第一次快照时间点(前端点)到第二次快照时间点(后端点)之间,该虚拟磁盘的已修改数据块的偏移量。
  • Step 5:结合 Step 4 获得的已修改数据块偏移量和 VixDiskLib 所提供的的 VixDiskLib_Read 函数就能够取得该虚拟磁盘的增量数据。
  • Step 6:逐一对虚拟机所含有的虚拟磁盘重复 Step 2,4,5,最终获得虚拟机完整的增量数据。

NOTE:从上述过程可知,在多磁盘场景中,虚拟机的一个快照数据文件中可能包含了该虚拟机所有虚拟磁盘的增量数据。所以当我们使用 VixDiskLib_ConnectEx 并 VixDiskLib_Open 一个快照之后,还需要根据不同虚拟磁盘的已修改数据块偏移量来 VixDiskLib_Read 出其中属于该虚拟磁盘的那一份增量数据。

转载地址:https://is-cloud.blog.csdn.net/article/details/78306851 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:VMware 虚拟化编程(12) — VixDiskLib Sample 程序使用
下一篇:VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月27日 21时13分25秒