揭秘vsphere 7的vMotion增强功能是如何加快虚拟机迁移

揭秘vsphere 7的vMotion增强功能是如何加快虚拟机迁移

解决方案goocz2025-02-01 12:02:2527A+A-

注:本文参考自VMware官网博客,对部分内容进行翻译和改写,目的是分享更多好的知识给小伙伴们。


vSphere vMotion(这里翻译为实时迁移或在线迁移,下同) 功能使客户能够将虚拟机从源主机实时迁移到目标 ESXi 主机。vSphere 7 版本中,VMware大大改进了 vMotion 功能,主要的增强功能包括减少实时迁移期间的性能影响和减少虚拟机在结束迁移做切换到目标主机时的静止时间。这篇文章将详细介绍 vMotion 增强功能如何帮助客户轻松地将 vMotion 功能用于大型虚拟机迁移。

要了解我们在 vSphere 7 中针对 vMotion 所做的改进,必须了解 vMotion 工作流程和原理,请阅读《干货分享之vSphere vMotion(在线迁移)原理详解》。

大型虚拟机进行vMotion时遇到的挑战

vSphere 7版本支持给每台虚拟机配置为 256 个 vCPU 和 6 TB 内存。试下,如果一台配置了512GB甚至更大内存的虚拟机(正常情况下,这类虚拟机在业务正常运行时,其活动内存也会很大)要执行vMotion,管理员肯定会有所考虑,毕竟这么大型的虚拟机在进行迁移时会对业务性能造成潜在影响,以及存在切换(静止)时间太长的风险。

例如,处理大量 I/O 的大型事务数据库平台可能会在 vMotion 期间遇到性能下降,尽管确切的影响在很大程度上取决于工作负载的特征和大小。vSphere 7 中 vMotion 的增强逻辑克服了所有这些挑战,使我们能够实时迁移大型工作负载,而不会对性能或可用性产生重大影响。

内存复制前优化

根据之前分享的《干货分享之vSphere vMotion(在线迁移)原理详解》文章,我们知道在vMotion 迁移过程中,需要跟踪虚拟机的所有已更改内存页。由于是实时迁移,因此虚拟机内的客户机操作系统将在 vMotion 期间继续将数据写入内存。VMkernel 需要跟踪并重新发送在 vMotion 期间被覆盖的内存页。

vMotion 进程会在为虚拟机配置的所有 vCPU 上安装页面跟踪程序。通过这样做,vMotion 可以了解哪些内存页被覆盖。这在页面跟踪期间称为“页面触发”。我们正在将跟踪工作分发到实时迁移的虚拟机的所有 vCPU。

要安装页面跟踪程序并处理页面触发,vCPU 会短暂停止。它只有几微秒,但停止所有 vCPU 会中断工作负载。纵向扩展虚拟机的计算资源会增加 vMotion 操作的影响。停止用于跟踪工作的 vCPU 后,所有内存页表条目 (PTE) 都设置为只读,并刷新转换后备缓冲区 (TLB) 以避免 TLB 命中并强制页表遍历,以便 vMotion 进程完全了解已覆盖的内存页。此处描述的方法称为“基于停止的页面跟踪安装”。

我们如何在 vSphere 7 中做到这一点

最大的影响来自必须停止所有 vCPU 以进行页面跟踪。如果我们可以安装页面跟踪器而无需停止所有 vCPU 会怎样?在 vSphere 7 中,我们引入了“松散页面跟踪安装”。页面跟踪的方法基本保持不变,但我们现在只声明一个 vCPU 来执行所有跟踪工作,而不是使用所有 vCPU。有权访问虚拟机的所有其他 vCPU 将继续运行工作负载,而不会中断。

页面跟踪器将安装在已声明的 vCPU 上,并将所有 PTE 设置为只读。TLB 特定于 vCPU,因此每个 vCPU 仍需要刷新其 TLB。但这发生在不同的时间,以尽量减少影响。总体而言,此方法的效率要高得多,因为只有一个 vCPU 用于页面跟踪。

页表粒度

因此,我们降低了追踪成本,但如果我们可以使其更有效呢?我们优化了将内存设置为只读的方式,这意味着这部分需要完成的工作更少。更少的工作量意味着更高的效率。在 vSphere 7 之前将内存设置为只读的方式是 4KB 页面粒度。所有单独的 4KB 页面都需要设置为只读访问。

从 vSphere 7 开始,虚拟机监视器 (VMM) 进程将以更大的粒度(1GB 页面)设置只读标志。如果发生页面触发(内存页面被覆盖),则 1GB PTE 将分解为 2MB 和 4KB 页面。VMware 工程师已经发现,在 vMotion 过程中,虚拟机通常不会触及其所有内存。vMotion 期间的内存工作集大小通常仅为 10-30%。如果在 vMotion 期间使用更多内存,则成本效益将降低。

切换阶段增强功能

到目前为止,我们讨论的所有增强功能都是在内存预复制阶段完成的,在该阶段进行跟踪。达到内存收敛(意味着几乎所有内存都将复制到目标主机)后,vMotion 即可切换到目标 ESXi 主机。在最后一个阶段,将挂起源 ESXi 主机上的虚拟机,并将检查点数据发送到目标主机。请记住,我们希望切换时间(震晕时间)为 1 秒或更短。对于大型 VM,这已成为一项挑战,因为工作负载大小会随着时间的推移而增加。

在切换阶段,我们发送检查点数据和内存位图。内存位图用于跟踪 VM 的所有内存。它知道哪些页面被覆盖,但仍需要传输到目标 ESXi 主机。当 vMotion 传输最后的内存页时,目标主机上的虚拟机将开始打开电源。但它可能仍然需要剩下的最后一页进行传输。为了在目标上标识这些页面,我们使用从源传输的位图。如果客户过度使用内存,则会在可选的交换位图中跟踪换出的页面。

内存位图稀疏。它包含 VM 正在使用的所有内存页的最后一个内存页和信息。具有 1GB 内存的 VM 的内存位图大小为 32KB。传输 32KB 只需几毫秒:没问题!

vSphere 7 是如何做到的

对于运行 6TB 内存(将来可能更多)的 VM,位图已经达到 192MB。为了保持不到 1 秒的切换时间,我们需要更小的位图,因为发送超过 192MB 可能需要长达一秒或更长时间。如果我们可以压缩位图,并且只发送您真正需要的信息,那会怎样?

在此阶段,我们已经复制了大部分内存页,因此只需要发送最后剩余的内存页。使用压缩内存位图,vMotion 能够在几毫秒内发送大型虚拟机的位图,从而大幅缩短眩晕时间。

性能改进

vSphere 7 中对 vMotion 的这些增强功能允许实时迁移工作负载,在 vMotion 期间几乎没有性能下降。下图是一个测试示例,向您展示了 vSphere 7 中的潜在性能提升。测试平台是运行HammerDB工作负载的大型虚拟机(72 vCPU / 512GB)。我们以 1 秒的粒度监控时间线上的提交/秒。

与 vSphere 7.6 相比,我们在 vSphere 7 的此测试中注意到的几个关键要点是:

  • 在页面跟踪阶段,我们不再遇到性能影响。
  • 眩晕时间保持在 1 秒以内,而不是需要几秒钟。
  • 整体实时迁移时间缩短了近 20 秒。

您的里程可能因 vMotion 网络配置和虚拟机大小而异,但这是一个示例性测试,用于显示这些 vMotion 改进的潜在好处。

结语

vMotion 与 vSphere 7 相比所做的改进是巨大的,大大降低了为 vMotion 支付的成本。您无需执行任何操作即可享受新的和改进的 vMotion 逻辑,只需将系统升级到 vSphere 7。

点击这里复制本文地址 以上内容由goocz整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

果子教程网 © All Rights Reserved.  蜀ICP备2024111239号-5