Hyper-V 允许从主机作系统备份虚拟机(VM),而无需在虚拟机内运行自定义备份软件。 开发人员可以根据自己的需求使用多种方法。
可以执行 VM 备份或仅数据备份:
VM 备份:此方法备份整个虚拟机,包括配置和所有数据。 如果要将整个 VM 还原到以前的状态,这非常有用。 每个虚拟机备份(完整或增量)必须复制所有关联的虚拟机配置和虚拟机状态文件,包括虚拟机配置(
.VMCX
)、虚拟机来宾状态(.VMGS
)和虚拟机运行时状态(.VMRS
)文件。 如果未复制所有这些文件,则不会完全捕获虚拟机状态。仅数据备份:此方法仅备份存储在虚拟机的虚拟硬盘上的数据。 若要还原仅数据备份,请创建新的虚拟机并将数据还原到该虚拟机。
Hyper-V VSS 编写器
Hyper-V 在所有支持 Hyper-V 的 Windows Server 版本上实现卷影复制服务(VSS)编写器。 此 VSS 编写器允许开发人员利用现有的 VSS 基础结构来备份虚拟机。 但是,它专为小型备份作而设计,其中服务器上的所有虚拟机同时备份。
基于 Hyper-V WMI 的备份
从 Windows Server 2016 开始,Hyper-V 支持通过 Hyper-V Windows Management Instrumentation (WMI) API 进行备份。 此方法仍会利用虚拟机内部的 VSS 进行备份,但不再使用主机操作系统中的 VSS, 而是使用参考点和复原更改跟踪 (RCT) 的组合,使开发人员能够以高效方式访问有关已备份虚拟机的信息。 此方法比在主机中使用 VSS 更具可伸缩性,但仅在 Windows Server 2016 及更高版本中可用。
在 Hyper-V WMI 提供程序参考中了解详细信息。
从基于 WMI 的备份读取备份的方法
使用 Hyper-V WMI 创建虚拟机备份时,可通过三种方法从备份中读取实际数据。 每种方法都有不同的优缺点。
WMI 导出
开发人员可以通过 Hyper-V WMI 接口导出备份数据(如上一示例中所示)。 Hyper-V 将更改编译为虚拟硬盘,并将该文件复制到请求的位置。 此方法易于使用,适用于所有方案,并远程工作。 但是,生成的虚拟硬盘驱动器通常会创建大量可通过网络进行传输的数据。
Win32 API
开发人员可以使用SetVirtualDiskInformation
GetVirtualDiskInformation
虚拟硬盘 Win32 API 集上的 API,QueryChangesVirtualDisk
如虚拟硬盘 Win32 参考中所述。
若要使用这些 API,Hyper-V WMI 仍需用于在关联的虚拟机上创建引用点。 然后,可以使用这些 Win32 API 对已备份虚拟机的数据进行高效访问。 Win32 API 有几项限制:
- 只能在本地访问
- 它们不支持从共享虚拟硬盘文件读取数据
- 它们返回相对于虚拟硬盘的内部结构的数据地址
远程共享虚拟磁盘协议
最后,如果开发人员需要有效地从共享虚拟硬盘文件访问备份数据信息,则需要使用远程共享虚拟磁盘协议。 远程共享虚拟磁盘协议参考中记录了此协议。