VMware 虚拟化编程(13) — VMware 虚拟机的备份方案设计

  • 时间:
  • 浏览:1
  • 来源:大发快3APP下载—大发时时彩登录地址

Snapshot MoRef:快照实际上或多或少 虚拟磁盘的备份版本,通过 Snapshot MoRef .我时会 够 获取虚拟磁盘的名称和路径等信息。类事:从 Snapshot Managed Object 的 ConfigInfo 以后开始,有益于查找到快照中所有虚拟磁盘的 BackingInfo,.我有益于从哪几种 BackingInfo 中找到虚拟机所有虚拟磁盘相应的 changeId。或多或少尤其在多虚拟磁盘的场景中,怎么有效的对不同的虚拟磁盘进行标识,是有一一个非常重要的前提条件。

在保护以后不处于 Snapshot (changeId == '*'),开启 CBT 并执行增量保护所保护的数据量是「实际已使用」的数据空间。

在保护以后因此处于 Snapshot (changeId != '*'),开启 CBT 并执行全量保护所保护的数据量是「已分配」的数据空间。

掌握以下使用要点,就有益于有效的提高备份数据的传输率:

获取虚拟机的备份数据时要集齐以下关键每种:

VixMntapi:VixMntapi 库时会 够 获取虚拟磁盘中的 GuestOS 相关信息(如:操作系统类型等)。更重要的是 VixMntapi 支持将卷直接挂载到设备节点上,原本就有益于执行面向文件的备份与还原了。

在保护以后不处于 Snapshot (changeId == '*'),开启 CBT 并执行增量保护所保护的数据量是「实际已使用」的数据空间。

在保护以后因此处于 Snapshot (changeId != '*'),开启 CBT 并执行全量保护所保护的数据量是「已分配」的数据空间。

一般来说,RDM 类型的虚拟磁盘是无法进行备份的,因此物理兼容的 RDM 磁盘设备无法进行快照。备份应用应该忽略哪几种无法进行快照的独立磁盘,因此创建快照,就会抛出错误。

厚置备磁盘在 Datastore 中会直接占用其分配的所有数据空间,而精简置备磁盘只会消耗确实际使用了的数据空间,或多或少备份精简置备磁盘的波特率会调快。

Metadata:虚拟磁盘的元数据,是描述了虚拟磁盘配置信息的一系列键值对,包含了磁盘卷标、LUN、分区布局、链接个数、文件属性、RDM、锁等关键信息,在还原有一一个虚拟磁盘的以后起到了至关重要的作用。元数据信息时会 够 通过 VixDiskLib_ReadMetadataKeys 和 VixDiskLib_ReadMetadata 来获得。

在保护以后不处于 Snapshot (changeId == '*'),开启 CBT 并执行增量保护所保护的数据量是「已分配」的数据空间。

在保护以后因此处于 Snapshot (changeId != '*'),开启 CBT 并执行全量保护所保护的数据量是「已分配」的数据空间。

VixDiskLib 库函数:在对虚拟磁盘进行了有效的标识以后,.我时要使用 VixDiskLib 所提供的「接口函数集」来获取实际的虚拟磁盘数据。时要就是我将其称之为「接口函数」,是因此 VixDiskLib 向开发者透明了虚拟磁盘操作的细节。类事,调用 VixDiskLib_Open 和 VixDiskLib_Read 函数时,VixDiskLib 允许以扇区为单位(in Sector)来访问虚拟磁盘数据,或多或少传输的数据总量是扇区大小的整数倍。时会 够 看出,VixDiskLib 库函数的调用就犹如接口函数调用一般的简单直接。

创建临时快照时,时要充分考虑虚拟机备份的级别,根据不同的级别来创建不类事型的临时快照。EXAMPLE:

因此备份场景主时要读取虚拟磁盘数据,而不要再修改磁盘数据说说。调用 VixDiskLib_ConnectEx 以后时会 够 通过传入 readOnly=TRUE 来启用高性能只读访问。

还有或多或少时要注意的是,精简置备虚拟磁盘的数据空间是动态的,或多或少其很因此时要一片连续的数据空间,其在数据存储中实际的数据空间是在第一次写入数据时才被创建的(created on first write)。或多或少与使用 NBD/NBDSSL/HotAdd 的厚置备磁盘相比,精简置备磁盘在首次写入时时要额外的数据块分配性能开销,不过一旦精简置备磁盘的数据空间被创建以后,其性能就与厚置备类型相差无几了。重要的是,在虚拟机对精简置备磁盘进行随机 I/O 或写操作的同去进行备份说说,即便开启的 CBT,所备份出来的数据量也很因此会大于预期的数据量。对于有两种状态,进行虚拟磁盘碎片埋点因此会有益于减小备份的数据量。

时要注意的是,厚置备磁盘又细分为「即时清零厚置备磁盘」和「延迟清零厚置备磁盘」。对于前者的全量备份而言,与否开启 CBT 的影响不要再大,因此始终时会备份其所分配的容量。但对于后者的全量备份而言时要区别了,因此在全量备份有一一个「延迟清零厚置备磁盘」前如此开启 CBT 说说,VixDiskLib 会读取虚拟磁盘所有的扇区,并将实际如此使用到的空扇区(原本会被延迟清零的扇区)中的脏数据完整重置为 0,因此再进行备份。也或多或少 说因此「延迟清零厚置备磁盘」在进行全量备份以后如此开启 CBT 说说,其备份数据量上是与「即时清零厚置备磁盘」一样的,因此还损耗了置零的时间,使用原本的备份数据恢复出来的虚拟磁盘类型也是「即时清零厚置备磁盘」。或多或少建议在对「延迟清零厚置备磁盘」进行全量备份前开启 CBT 功能,实际上因此是增量备份的场景,无论是哪几种类型的虚拟磁盘,都应该建议开启 CBT。

VMware 虚拟化编程(1) — VMDK/VDDK/VixDiskLib/VADP 概念简析

VMware 虚拟化编程(2) — 虚拟磁盘文件类型详解

VMware 虚拟化编程(3) —VMware vSphere Web Service API 解析

VMware 虚拟化编程(4) — VDDK 安装

VMware 虚拟化编程(5) — VixDiskLib 虚拟磁盘库详解之一

VMware 虚拟化编程(6) — VixDiskLib 虚拟磁盘库详解之二

VMware 虚拟化编程(7) — VixDiskLib 虚拟磁盘库详解之三

VMware 虚拟化编程(8) — 线程池中的 VixDiskLib

VMware 虚拟化编程(9) — VMware 虚拟机的快照

VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT

VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案

VMware 虚拟化编程(12) — VixDiskLib Sample 线程池使用

VMware 官方建议备份应用线程池确定与 vCenter 服务器建立通信,而非 ESXi 主机。最主要的原因分析分析在于 vCenter 服务器为使用 vSphere WS API 的开发者提供了目标对象定位的透明性。由 vCenter 服务器负责跟踪目标虚拟机在不同 ESXi 主机之间的迁移,因此会隐式的将 SDK 操作重定向到当前运行目标虚拟机的 ESXi 主机。

因此是后者说说,则时要将 CreateSnapshot_Task 的「quiesce」和「memory」参数均设置为 TRUE,前置会使 FileSystem 处于静置状态,后者则允许在快照中包含开启电源状态下的虚拟机内存状态,以此获得有一一个「静置快照」。因此,创建出的快照会处于过渡期的系统状态,还原有两种状态下的快照数据很因此会破坏业务系统的运行时状态;

因此在 Linux 上使用 SAN 存储的场景中,时会 够 确定「direct」直接读写模式 O_DIRECT,「direct」模式会阻止或多或少线程池访问最新的虚拟磁盘数据,这原因分析分析磁盘数据的读写时要会处于任何的缓存,原本有益于外理提交写缓存前因此线程池终止所造成的信息丢失。因此备份有一一个虚拟磁盘通常时要连续的读取不同扇区中的数据,开启 Cache 机制实际上反而降低了性能。因此备份应用按照下列原则进行读写操作,有益于达到最佳的波特率:

NOTE:「quiesce」和「memory」标识有效的保证了备份虚拟机的文件系统一致性和应用一致性。

CBT 是实现增量备份的底层支撑,因此你时要进行更加有益于节省存储空间增量备份说说,通常时要在第有一一个快照创建以后开启 CBT。但实际上 CBT 也处于着或多或少使用的限制,具体请浏览 《VMware 虚拟化编程(10) — VMware 数据块修改跟踪技术 CBT》。

还有或多或少时要注意的是,在执行完备份以后,临时快照就无用了,切记将其删除。快照会影响到虚拟机的性能,以及占用存储空间。

在备份应用线程池中确定使用增强型连接函数 VixDiskLib_InitEx 和 VixDiskLib_ConnectEx,增量型连接函数支持使用高级数据传输模式 SAN 和 SCSI HotAdd

与否开启 CBT 的关键除了其自身使用上的限制之外,时要考虑备份目标虚拟机的重要性。因此备份目标虚拟机内运行的是核心业务系统,因此存储资源又比较富于,如此我会建议关闭 CBT,确定使用完整备份。

1. CBT 会占用可测量的性能资源;

2. CBT 的稳定性处于着隐患;

因此 VMware 官方建议开发者应该最小化连接或会话的数量,以降低 vSphere 的资源负载。对备份应用线程池来说,最好只创建有一一个会话,并在所有时要和 vSphere 进行交互的模块中共享该会话。这就原因分析分析因此你希望备份应用线程池支持线程池,如此你应该引入访问控制块来对连接的访问进行互斥。