Red Hat Training

A Red Hat training course is available for RHEL 8

9.7. 使用 web 控制台实时迁移虚拟机

如果要迁移正在执行要求其持续运行任务的虚拟机(VM),您可以将该虚拟机迁移到另一个 KVM 主机上,而不需要关闭它。这也称为实时迁移。以下说明解释了如何使用 Web 控制台进行此操作。

警告

如果修改内存页面任务的速度比 KVM 可以传输页面的速度快(I/O 负载较重的任务),建议不要实时迁移虚拟机。

先决条件

  • Web 控制台 VM 插件 已安装在您的系统上
  • 源和目标主机都在运行。
  • 确保目标主机上打开了以下端口:

    • 使用 SSH 连接到目标主机需要端口 22。
    • 使用 TLS 连接到目标主机需要端口 16509。
    • 使用 TCP 连接到目标主机需要端口 16514。
    • QEMU 需要端口 49152-49215 来传输内存和磁盘迁移数据。
  • 虚拟机必须与目标主机的 CPU 功能兼容。要确保情况如此,请参阅验证虚拟机迁移的主机 CPU 兼容性
  • 虚拟机磁盘镜像位于 共享存储 上,该存储可被源主机和目标主机访问。
  • 迁移正在运行的虚拟机时,您的网络带宽必须高于虚拟机生成脏内存页面的速度。

    要在开始实时迁移前获得虚拟机的脏页面率,请在命令行界面中执行以下操作:

    1. 监控虚拟机在短时间内的脏页面生成率。

      # virsh domdirtyrate-calc vm-name 30
    2. 在监控完成后,获取其结果:

      # virsh domstats vm-name --dirtyrate
      Domain: 'vm-name'
        dirtyrate.calc_status=2
        dirtyrate.calc_start_time=200942
        dirtyrate.calc_period=30
        dirtyrate.megabytes_per_second=2

      在本例中,VM 每秒会生成 2 MB 的脏内存页面。如果您不暂停虚拟机或降低其工作负载,那么在小于或等于 2 MB/秒带宽的网络中尝试实时迁移这样的虚拟机会导致实时迁移不会进行。

      为确保实时迁移成功完成,红帽建议您的网络带宽要明显大于虚拟机的脏页面生成率。

注意

calc_period 选项的值可能因工作负载和脏页率而异。您可以使用多个 calc_period 值进行试验,以确定与您环境中脏页率一致的最合适的周期。

流程

  1. 在 web 控制台的虚拟机界面中,单击您要迁移的虚拟机的菜单按钮

    此时会出现一个下拉菜单,控制各种虚拟机操作。

    显示虚拟机运行时可用选项的虚拟机主页面。
  2. 点击 Migrate

    此时将显示将虚拟机迁移到另一主机的对话框。

    将虚拟机迁移到另一主机的对话框,其中包含用于输入目标主机的 URI 和设置迁移持续时间的字段。
  3. 输入目标主机的 URI。
  4. 配置迁移的持续时间:

    • Permanent - 如果您要永久迁移虚拟机,请勿选中该框。永久迁移会从源主机上完全删除虚拟机配置。
    • Temporary - 临时迁移会将虚拟机的副本迁移到目标主机。虚拟机关闭时,此副本将从目标主机中删除。原始虚拟机会保留在源主机上。
  5. 点击 Migrate

    您的虚拟机被迁移到目标主机上。

验证

要验证虚拟机是否已成功迁移并正常工作:

  • 确认虚拟机是否在目标主机上可用虚拟机的列表中。
  • 启动迁移的虚拟机,并观察其是否启动。