13.2. 使用命令行界面创建虚拟机快照


要将虚拟机(VM)的状态保存到快照中,您可以使用 virsh snapshot-create-as 命令。

先决条件

  • 您的主机使用 RHEL 9.4 或更高版本。
  • 虚拟机使用基于文件的存储。要检查是否是这种情况,请使用以下命令,并确保对于 disk 设备,其 disk type 显示为 file

    # virsh dumpxml <vm-name> | grep "disk type"
        <disk type='file' device='disk'>
        <disk type='file' device='cdrom'>
  • 如果要创建一个包含正在运行的虚拟机内存的虚拟机快照,您必须有足够的磁盘空间来存储虚拟机的内存。

    • 保存虚拟机的内存的最少推荐空间等于虚拟机分配的 RAM。例如,保存具有 32 GB RAM 的虚拟机内存需要最多 32 GB 的磁盘空间。
    • 如果虚拟机 I/O 负载过重,则可能需要大量额外的磁盘空间。
    • 如果虚拟机已分配了 VFIO passthrough 设备,则可能需要额外的磁盘空间。
    • 如果快照是在不暂停虚拟机的情况下创建的,则可能需要额外的磁盘空间。

      警告

      红帽建议不保存在非常高的工作负载下运行的或使用 VFIO passthrough 设备的虚拟机的内存。保存此类虚拟机的内存可能会填满主机磁盘,并降低系统性能。相反,请考虑为此类虚拟机创建没有内存的快照。

      另外,请注意,并非所有 VFIO 设备都能够创建具有内存的快照。目前,仅在以下情况下,使用内存创建快照才能正常工作:

      • 附加的 VFIO 设备是启用了迁移功能的 Mellanox VF。
      • 附加的 VFIO 设备是启用了迁移功能的 NVIDIA vGPU。

流程

  • 要使用所需参数创建虚拟机快照,请使用 virsh snapshot-create-as 命令。

    # virsh snapshot-create-as <vm-name> <snapshot-name> <optional-description> <additional-parameters>
    • 要创建关闭的虚拟机的快照,请使用 --disk-only 参数。例如,以下命令从关闭的 Testguest1 虚拟机的当前磁盘状态创建 Snapshot1

      # virsh snapshot-create-as Testguest1 Snapshot1 --disk-only
      Domain snapshot Snapshot1 created.
    • 要创建一个保存正在运行的虚拟机的磁盘状态而不是其内存的快照,请使用 --disk-only --quiesce 参数。例如,以下命令从正在运行的 Testguest2 虚拟机的当前磁盘状态创建 Snapshot2,描述为 clean system install

      # virsh snapshot-create-as Testguest2 Snapshot2 "clean system install" --disk-only --quiesce
      Domain snapshot Snapshot2 created.
    • 要创建一个暂停正在运行的虚拟机并保存其磁盘状态和内存的快照,请使用 --memspec 参数。例如,以下命令暂停 Testguest3 虚拟机,并从虚拟机的当前磁盘和内存状态创建 Snapshot3。VM 内存保存在 /var/lib/libvirt/images/saved_memory.img 文件中。快照完成后,虚拟机自动恢复操作。

      # virsh snapshot-create-as Testguest3 Snapshot3 --memspec /var/lib/libvirt/images/saved_memory.img
      Domain snapshot Snapshot3 created.

      在快照过程中暂停虚拟机会创建停机时间,但可能比创建正在运行的虚拟机的实时快照(使用 --live 选项)更可靠,特别是对于高负载下的虚拟机。

    • 要创建一个保存正在运行的虚拟机的磁盘状态及其实时内存的快照,请使用 --live --memspec 参数。例如,以下命令从正在运行的 Testguest4 虚拟机的当前磁盘和内存状态创建 Snapshot4,并将内存状态保存在 /var/lib/libvirt/images/saved_memory2.img 文件中。

      # virsh snapshot-create-as Testguest4 Snapshot4 --live --memspec /var/lib/libvirt/images/saved_memory2.img
      Domain snapshot Snapshot4 created.
警告

将虚拟机的内存保存到快照中会将正在运行的进程的状态保存到虚拟机的客户机操作系统中。但是,当您恢复到此类快照时,进程可能会因为各种因素而失败,如丢失网络连接或未同步的系统时间。

验证

  1. 列出与指定虚拟机关联的快照:

    # virsh snapshot-list <Testguest1>
    
     Name                    Creation Time               State
    --------------------------------------------------------------
    Snapshot1               2024-01-30 18:34:58 +0100   shutoff
  2. 验证快照是否已创建为 external

    # virsh snapshot-dumpxml <Testguest1> <Snapshot1> | grep external
    
      <disk name='vda' snapshot='external' type='file'>

    如果这个命令的输出包含 snapshot='external',则快照是外部的,因此红帽完全支持。

其它资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.