VM 快照

XenServer 提供了一种简便的机制。借助该机制,可以在给定的时间生成 VM 存储和元数据的快照。如有必要,在生成快照时会暂时停止 I/O,以确保捕获具有自我一致性的磁盘映像。

快照操作会生成类似于模板的快照 VM。VM 快照包含所有存储信息和 VM 配置(包括已连接的 VIF),可以导出并还原这些信息和配置以进行备份。快照在所有存储类型中都受支持。但是,对于基于 LVM 的存储类型,必须满足以下要求:

  • 如果存储库是在早期版本的 XenServer 上创建的,则必须对其进行升级
  • 卷必须采用默认格式(无法生成 type=raw 卷的快照)

快照操作过程分为 2 个步骤:

  • 将元数据捕获为模板。

  • 创建磁盘的 VDI 快照。

支持三种类型的 VM 快照:常规快照、静态快照以及包含内存数据的快照

常规快照

常规快照处于持续崩溃状态,可以在所有 VM 类型(包括 Linux VM)上执行。

静止快照

静态快照利用 Windows 卷快照服务 (VSS),生成和应用程序一致的实时快照。VSS 框架帮助可识别 VSS 的应用程序(例如 Microsoft SQL Server)在生成快照前将数据刷新到磁盘并为快照做好准备。

因此,还原静止快照比较安全,但当生成静止快照时,这些快照可能会对系统性能产生更大的影响。如果负载不足,它们还可能会失败,因此生成该快照可能需要进行多次尝试。

XenServer 在下列平台上支持静态快照:

  • Windows Server 2016

  • Windows Server 2012 R2

  • Windows Server 2012

  • Windows Server 2008 R2

  • Windows Server 2008(32/64 位)

不支持 Windows 8.1、Windows 8、Windows 7、Windows 2000、Windows XP、Windows 2003 和 Windows Vista。有关静止快照的详细信息,请参阅静止快照高级说明

包含内存数据的快照

除保存 VM 内存(存储)和元数据外,包含内存数据的快照还保存 VM 状态 (RAM)。此功能在升级或修补软件时可能非常有用,但是您还可以选择还原到更改前的 VM 状态 (RAM)。还原到包含内存数据的快照无需重新启动 VM。

可以通过管理 API、xe CLI 或使用 XenCenter 来生成包含正在运行或已挂起 VM 的内存数据的屏幕快照。

创建 VM 快照

生成快照之前,,请参阅以下有关特定于任何特殊操作系统的配置和注意事项的信息:

首先确保 VM 正在运行或已挂起,以便可以捕获内存状态。选择要对其执行操作的 VM 的最简单方法是提供参数 vm=namevm=vm uuid

运行 vm-snapshotvm-snapshot-with-quiesce 命令以生成 VM 的快照。

xe vm-snapshot vm=vm uuid new-name-label=vm_snapshot_name
xe vm-snapshot-with-quiesce vm=vm uuid new-name-label=vm_snapshot_name

创建包含内存数据的快照

运行 vm-checkpoint 命令,为包含内存数据的快照指定一个描述性名称,以便以后能识别该快照:

xe vm-checkpoint vm=vm uuid new-name-label=name of the checkpoint

XenServer 创建完包含内存数据的快照之后,系统会显示其 UUID。

例如:

xe vm-checkpoint vm=2d1d9a08-e479-2f0a-69e7-24a0e062dd35 \
new-name-label=example_checkpoint_1
b3c0f369-59a1-dd16-ecd4-a1211df29886

包含内存数据的快照需要每个磁盘至少有 4 MB 的磁盘空间,以及加上 RAM 的大小,再加上约 20% 的开销。因此,具有 256 MB RAM 的检查点需要约 300 MB 的存储空间。

注意:

在创建检查点的过程中,VM 会短时暂停,在暂停期间不能使用。

列出 XenServer 池的所有快照

运行 snapshot-list 命令:

xe snapshot-list

此命令会列出 XenServer 池中的所有快照。

列出特殊 VM 的快照

通过运行 vm-list 命令获取特定 VM 的 UUID。

xe vm-list

此命令会显示所有 VM 及其 UUID 的列表。例如:

xe vm-list
uuid ( RO): 116dd310-a0ef-a830-37c8-df41521ff72d
name-label ( RW): Windows Server 2012 (1)
power-state ( RO): halted

uuid ( RO): 96fde888-2a18-c042-491a-014e22b07839
name-label ( RW): Windows 2008 R2 (1)
power-state ( RO): running

uuid ( RO): dff45c56-426a-4450-a094-d3bba0a2ba3f
name-label ( RW): Control domain on host
power-state ( RO): running

也可以通过过滤字段值上的完整 VM 列表,来指定 VM。

例如,指定 power-state=halted 将会选择电源状态字段为“halted”的所有 VM。如果有多个匹配的 VM,则必须指定选项 --multiple 才能执行该操作。可匹配字段的完整列表可以通过命令 xe vm-list params=all 获得。

查找所需的 VM,然后输入以下内容:

xe snapshot-list snapshot-of=vm uuid

例如:

xe snapshot-list snapshot-of=2d1d9a08-e479-2f0a-69e7-24a0e062dd35

此命令会列出当前位于该 VM 上的快照:

uuid ( RO): d7eefb03-39bc-80f8-8d73-2ca1bab7dcff
name-label ( RW): Regular
name-description ( RW):
snapshot_of ( RO): 2d1d9a08-e479-2f0a-69e7-24a0e062dd35
snapshot_time ( RO): 20090914T15:37:00Z

uuid ( RO): 1760561d-a5d1-5d5e-2be5-d0dd99a3b1ef
name-label ( RW): Snapshot with memory
name-description ( RW):
snapshot_of ( RO): 2d1d9a08-e479-2f0a-69e7-24a0e062dd35
snapshot_time ( RO): 20090914T15:39:45Z

将 VM 还原为其先前的状态

确保知道要还原的快照的 UUID,然后运行 snapshot-revert 命令:

  1. 运行 snapshot-list 命令以查找要还原的快照或检查点的 UUID:

    xe snapshot-list
    
  2. 记下快照的 uuid,然后运行以下命令进行还原:

    xe snapshot-revert snapshot-uuid=snapshot uuid
    

    例如:

    xe snapshot-revert snapshot-uuid=b3c0f369-59a1-dd16-ecd4-a1211df29886
    

    将 VM 还原为检查点后,VM 将被挂起。

注意:

  • 如果没有足够的磁盘空间可用于对快照进行密集置备,则在当前磁盘的状态被释放之前,无法还原到快照。如果发生此问题,请重试此操作。

  • 不可能还原到任何快照。还原操作期间不会删除现有快照和检查点。

删除快照

确保知道要删除的检查点或快照的 UUID,然后运行以下命令:

  1. 运行 snapshot-list 命令以查找要还原的快照或检查点的 UUID:

    xe snapshot-list
    
  2. 记下快照的 UUID,然后运行 snapshot-uninstall 命令将其删除:

    xe snapshot-uninstall snapshot-uuid=snapshot-uuid
    
  3. 此命令会警告您要删除的 VM 和 VDI。键入 yes 以进行确认。

例如:

xe snapshot-uninstall snapshot-uuid=1760561d-a5d1-5d5e-2be5-d0dd99a3b1ef
以下项目将被损坏
VM:1760561d-a5d1-5d5e-2be5-d0dd99a3b1ef(包含内存数据的快照)
VDI:11a4aa81-3c6b-4f7d-805a-b6ea02947582 (0)
VDI:43c33fe7-a768-4612-bf8c-c385e2c657ed (1)
VDI:4c33c84a-a874-42db-85b5-5e29174fa9b2(已挂起的映像)
键入“yes”以继续操作
yes
所有对象已损坏

如果您只希望删除检查点或快照的元数据,请运行以下命令:

xe snapshot-destroy snapshot-uuid=snapshot-uuid

例如:

xe snapshot-destroy snapshot-uuid=d7eefb03-39bc-80f8-8d73-2ca1bab7dcff

快照模板

从快照创建模板

可以从快照创建 VM 模板。但是,其内存状态将被删除。

  1. 使用命令 snapshot-copy 指定该模板的 new-name-label

    xe snapshot-copy new-name-label=vm-template-name \
    snapshot-uuid=uuid of the snapshot
    

    例如:

    xe snapshot-copy new-name-label=example_template_1
    snapshot-uuid=b3c0f369-59a1-dd16-ecd4-a1211df29886
    

    注意:

    此命令会在 SAME 池中创建一个模板对象。此模板仅存在于当前池的 XenServer 数据库中。

  2. 要验证该模板是否已创建,请运行命令 template-list

    xe template-list
    

    此命令会列出 XenServer 主机上的所有模板。

将快照导出到模板

导出 VM 快照时,VM 的完整副本(包括磁盘映像)会作为单独的文件存储到本地计算机上。此文件包含 .xva 文件扩展名。

  1. 使用命令 snapshot-export-to-template 创建模板文件:

    xe snapshot-export-to template snapshot-uuid=snapshot-uuid \
    filename=template-  filename
    

    例如:

    xe snapshot-export-to-template snapshot-uuid=b3c0f369-59a1-dd16-ecd4-a1211df29886 \
    filename=example_template_export
    

可以通过多种不同的方式使用 VM 导出/导入功能:

  • 作为一种便捷的 VM 备份工具。在发生灾难情况时,可以使用导出的 VM 文件恢复整个 VM。

  • 作为一种快速复制 VM 的方式,例如,多次使用的特殊用途服务器配置。您只需以希望的方式配置 VM,将其导出,然后再将其导入,即可创建原始 VM 的副本。

  • 作为一种将 VM 移到其他服务器的简单方法。

有关使用模板的详细信息,请参阅创建 VM 以及 XenCenter 帮助中的“管理 VM”部分。

静止快照高级说明

注意:

不要忘记在 Windows 来宾系统中安装 Xen VSS 提供程序,以便支持 VSS。此安装可以使用 XenServer Tools 随附的 install- XenProvider.cmd 脚本来完成。有关详细信息,请参阅 Windows VM

一般来说,使用 VSS 接口,VM 只能访问自身的 VDI 快照(而非 VDI 克隆)。XenServer 管理员可以将 snapmanager=true 的属性添加到 VM other-config,以允许该 VM 从其他 VM 导入 VDI 的快照。

警告:

此配置存在一个安全漏洞。请谨慎使用。通过此配置,管理员可以使用 VSS 层生成的来宾系统可传送快照 ID,将 VSS 快照连接到其他 VM 以进行备份。

VSS 静止超时:将 Microsoft VSS 静止时段设置为 10 秒钟的非可配置值。快照很有可能无法按时完成。例如,如果 XAPI 守护程序在队列中又添加了其他块任务(例如 SR 扫描),则 VSS 快照可能会超时并失败。如果发生此超时情况,请重试该操作。

注意:

连接到 VM 的 VBD 越多,达到此超时的可能性越大。Citrix 建议最多将 2 个 VBD 连接到 VM,以避免超时。但是,有一个解决方法可以解决此问题。如果 VM 的所有 VDI 位于不同的 SR 上,使用 2 个以上的 VBD 成功生成基于 VSS 的 VM 快照的可能性就会增加。

所有磁盘均连接到 VM 的 VSS 快照:用于存储在生成 VSS 快照时可用的所有数据。XAPI 管理器可生成与使用 XenServer 存储管理器 API 生成快照的 VM 相关联的所有磁盘和 VM 元数据的快照。如果 VSS 层请求仅生成一小部分磁盘的快照,则不会生成所有 VM 的快照。

vm-snapshot-with-quiesce:生成可引导的快照 VM 映像:XenServer VSS 硬件提供程序将制作可写入的快照卷,其中包括引导卷的快照。

卷的 VSS 快照托管在 Windows 来宾系统的动态磁盘中vm-snapshot-with-quiesce CLI 和 XenServer VSS 硬件提供程序不支持 Windows VM 上的动态磁盘中托管的卷的快照。

注意:

不要忘记在 Windows 来宾系统中安装 Xen VSS 提供程序,以便支持 VSS。此安装可以使用 XenServer Tools 随附的 install-XenProvider.cmd 脚本来完成。有关详细信息,请参阅 Windows VM

计划快照

计划快照功能为关键服务 VM 提供了一个简单的备份和还原实用程序。系统将自动生成定期计划快照,并用来还原相应的 VM。快照计划功能的工作原理是为池中选定的 VM 创建池范围内的快照计划。启用快照计划后,将在每小时、每天或每周的预定时间生成指定 VM 的快照。在一个池中可以启用多个计划快照,这些快照可以涵盖不同的 VM 并且包含不同的计划。一次只能将一个 VM 分配至一个快照计划。

XenCenter 提供了一系列工具来帮助您使用此功能:

  • 要定义计划快照,请使用新建快照计划向导。

  • 要启用、禁用、编辑和删除池的计划快照,请使用 VM 快照计划对话框。

  • 要编辑快照计划,请从 VM 快照计划对话框中打开其属性对话框。

  • 要将 VM 还原到计划快照,请在快照选项卡上选择快照,然后将 VM 还原到该快照。

有关计划快照的详细信息,请参阅XenCenter帮助