XenServer

VM 快照

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

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

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

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

  • 将元数据捕获为模板。

  • 创建磁盘的 VDI 快照。

支持以下类型的 VM 快照:常规快照和带内存的快照。

常规快照

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

带内存的快照

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

可以通过管理 API、xe CLI 或 XenCenter 来生成正在运行或已挂起 VM 的内存快照。

创建 VM 快照

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

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

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

xe vm-snapshot vm=vm uuid new-name-label=vm_snapshot_name
<!--NeedCopy-->

创建包含内存数据的快照

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

xe vm-checkpoint vm=vm uuid new-name-label=name of the checkpoint
<!--NeedCopy-->

XenServer 完成创建内存快照之后,系统会显示其 UUID。

例如:

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

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

注意:

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

列出 XenServer 池的所有快照

运行 snapshot-list 命令:

xe snapshot-list
<!--NeedCopy-->

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

列出特定 VM 上的快照

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

xe vm-list
<!--NeedCopy-->

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

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

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

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

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

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

xe snapshot-list snapshot-of=vm uuid
<!--NeedCopy-->

例如:

xe snapshot-list snapshot-of=2d1d9a08-e479-2f0a-69e7-24a0e062dd35
<!--NeedCopy-->

此命令会列出当前位于该 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
<!--NeedCopy-->

将 VM 还原为其先前的状态

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

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

    xe snapshot-list
    <!--NeedCopy-->
    
  2. 记下快照的 UUID,然后运行以下命令进行还原:

    xe snapshot-revert snapshot-uuid=snapshot uuid
    <!--NeedCopy-->
    

    例如:

    xe snapshot-revert snapshot-uuid=b3c0f369-59a1-dd16-ecd4-a1211df29886
    <!--NeedCopy-->
    

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

备注:

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

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

删除快照

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

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

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

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

例如:

    xe snapshot-uninstall snapshot-uuid=1760561d-a5d1-5d5e-2be5-d0dd99a3b1ef
    The following items are about to be destroyed
    VM : 1760561d-a5d1-5d5e-2be5-d0dd99a3b1ef (Snapshot with memory)
    VDI: 11a4aa81-3c6b-4f7d-805a-b6ea02947582 (0)
    VDI: 43c33fe7-a768-4612-bf8c-c385e2c657ed (1)
    VDI: 4c33c84a-a874-42db-85b5-5e29174fa9b2 (Suspend image)
    Type 'yes' to continue
    yes
    All objects destroyed
<!--NeedCopy-->

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

xe snapshot-destroy snapshot-uuid=snapshot-uuid
<!--NeedCopy-->

例如:

xe snapshot-destroy snapshot-uuid=d7eefb03-39bc-80f8-8d73-2ca1bab7dcff
<!--NeedCopy-->

快照模板

从快照创建模板

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

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

    xe snapshot-copy new-name-label=vm-template-name \
          snapshot-uuid=uuid of the snapshot
    <!--NeedCopy-->
    

    例如:

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

    注意:

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

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

    xe template-list
    <!--NeedCopy-->
    

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

将快照导出到模板

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

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

    xe snapshot-export-to template snapshot-uuid=snapshot-uuid \
          filename=template-  filename
    <!--NeedCopy-->
    

    例如:

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

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

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

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

  • 作为一种将 VM 移动到其他主机的简单方法。

有关使用模板的详细信息,请参阅创建 VM,以及 XenCenter 文档中的管理 VM 文章。

计划快照

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

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

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

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

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

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

有关详细信息,请参阅 XenCenter 文档中的计划快照

VM 快照