博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案
阅读量:6998 次
发布时间:2019-06-27

本文共 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 出其中属于该虚拟磁盘的那一份增量数据。

转载地址:http://eilvl.baihongyu.com/

你可能感兴趣的文章
操作hadoop的经验积累
查看>>
微信企业号验证
查看>>
请问set JAVA_OPTS的各项參数是什么意思?
查看>>
Linux安装JDK
查看>>
C#常用控件缩写
查看>>
.NET足球赛事资料数据库平台SmartLottery开源发布——全球足球联赛应有尽有
查看>>
关于Eclipse生成和导入Patch文件.
查看>>
如何使用Photoshop(PS)将图片的底色变为透明
查看>>
IDEA实现序列号接口
查看>>
人件札记:保持高效的办公室环境
查看>>
Mysql中使用流式查询避免数据量过大导致OOM
查看>>
为什么中台是传统企业数字化转型的关键?
查看>>
中国技术开放日专场在美国旧金山隆重开幕
查看>>
从责任界定和问题预警角度 解读全栈溯源对DevOps的价值
查看>>
百度发布开源智能边缘计算平台OpenEdge
查看>>
JavaScript引擎V8 5.1遵循了更多的ECMAScript规范并支持WASM
查看>>
广度、深度、易用性,详解6大机器学习云
查看>>
雇佣和留住开发人员,打造优秀的团队
查看>>
关于5G被激烈讨论的那些争端和冲突
查看>>
Jenkins部署码云SpringBoot项目
查看>>