Windows server 2012中Hyper-V对动态内存技术的改进
动态内存技术首次出现在 Windows Server 2008 R2 SP1中,可帮您更有效地利用物理内存。通过动态内存技术,Hyper-V 可将内存看作可共享资源,并在运行中的虚拟机间进行自动分配。动态内存可根据内存需求的变动情况,以及您指定的值,随时调整虚拟机可用内存数。
在旧版本 Hyper-V中,动态内存包含“启动内存”功能,该功能定义了虚拟机可用内存数量的最小值。然而 Windows 在启动阶段相比稳定运行阶段往往需要更多内存。某些虚拟机会分配过剩内存,因为老版本Hyper-V 无法在启动后从这些虚拟机回收内存。
运行闲置虚拟机所需的内存也比启动虚拟机所需的内存少。通过从闲置虚拟机回收未使用的内存,即可在一台宿主机上运行更多虚拟机。为此,您可以为内存最小值指定一个比启动内存更小的数值。然而如果在 Windows Server 2008 R2 SP1中这样做,如果宿主机物理内存不足,虚拟机将无法重启动。这个问题在包含大量闲置虚拟机的环境中更为严重,例如池化的 VDI 环境,以及负载程度较低的服务器整合环境(例如夜间时段)。
因为内存升级需要关闭虚拟机,因此所有管理员都面临一个共同挑战:随着虚拟机需求的增加,随时升级最大内存数。例如,请考虑运行 SQL Server,并配置 8GB 最大内存的虚拟机。随着数据库体积的增长,该虚拟机现在需要更多内存。在 Windows Server 2008 R2 SP1中,必须关闭虚拟机才能进行升级,这就需要预先计划好停机时间。这样的做法将影响业务生产力。
快速成长型组织的负载可能会快速增长,因此通常要向宿主机添加更多虚拟机。这些组织希望对一台宿主机服务器上可放置的虚拟机数量进行优化,以便减少昂贵的宿主机服务器数量。通过Windows Server 2012中 Hyper-V 提供的动态内存改进功能,IT 管理员可以更高效地分配虚拟机内存资源,并极大提升虚拟机的整合率。
在Windows Server 2012中,动态内存增加了一个可配置选项“最小内存”。最小内存使得 Hyper-V 能从虚拟机回收未使用的内存。这种做法可提高虚拟机的整合率,尤其是在 VDI 环境中。
为了给虚拟机提供更强壮的重启动机制,Windows Server 2012还提供了 Hyper-V 智能分页功能。虽然最小内存功能提升了虚拟机的整合率,但也带来另一个挑战。如果一台虚拟机的内存数比启动内存数少,并且该虚拟机需要重启动,Hyper-V 就要额外的内存才能重启动该虚拟机。由于宿主机内存压力或虚拟机状态的限制,Hyper-V 可能无法获得所需的额外内存。这可能会导致客户环境中偶尔遇到虚拟机重启动失败的问题。在 Windows Server 2012中,Hyper-V 智能分页功能可用于弥补最小内存和启动内存之间的差额,让虚拟机更可靠地重启动。
在 Windows Server 2012中,Hyper-V 动态内存功能方面的改善使得您可以:
- 为虚拟机配置更低的最小内存,并获得更可靠的重启动体验。
- 针对运行中的虚拟机提升最大内存数量,并降低最小内存数量。
最小内存配置下更可靠的重启动操作
与上一版动态内存技术类似,您可以为虚拟机配置最小内存,Hyper-V 会持续为运行中的虚拟机分配这个数量的内存。为了向配置的最小内存数量小于启动内存的虚拟机提供更可靠的重启动体验,Windows Server 2012的Hyper-V 使用了 Hyper-V 智能分页功能。
Hyper-V 智能分页是一种内存管理技术,可在需要更多内存才能重启动虚拟机时使用磁盘资源作为额外的临时内存。这种方法存在优势但也有不足。该技术提供了一种可靠的方法,确保可用物理内存不足时虚拟机可以继续运行。然而可能会影响虚拟机的性能,因为磁盘的访问速度要比内存访问速度慢很多。
为了将 Hyper-V 智能分页技术对性能的影响降到最低,Hyper-V 只有在遇到下列情况时才会使用该技术:
- 虚拟机正在重启动时。
- 没有可用物理内存时。
- 无法从宿主机中运行的其他虚拟机中回收内存时。
Hyper-V 智能分页功能不会在发生下列情况时使用:
- 虚拟机正在从关闭状态启动时(而不是重启动)。
- 运行中的虚拟机可能导致内存超额提交时。
- 虚拟机正在 Hyper-V 群集中进行故障转移时。
如果宿主机的内存已经被过度提交,Hyper-V 会继续依赖客户端系统内部的分页功能,因为这要比 Hyper-V 的智能分页功能更高效。通过客户端系统内部的分页,分页操作可在虚拟机内部由 Windows 内存管理器进行。对于虚拟机中内存的使用情况,Windows 内存管理器要比 Hyper-V 宿主机了解地更详细,这就意味着在选择哪些内存需要被分页时,可以比Hyper-V 获得更多参考信息。因此相比 Hyper-V 智能分页,客户端系统内部的分页功能对系统造成的负担更小。
下图演示了正在重启动的 Hyper-V 虚拟机的内存映射情况。
一台正在使用 Hyper-V 智能分页功能重启动的虚拟机
为进一步降低 Hyper-V 智能分页的影响,当虚拟机完成启动过程后,Hyper-V 会将内存从虚拟机中删除,并与客户端系统内部的动态内存组件(也被叫做“Ballooning”)进行协调,这样虚拟机就可以不再使用Hyper-V 智能分页。通过这种技术,可以临时使用 Hyper-V 智能分页,并且一般使用时间不会超过10分钟。
下图演示了在完成启动过程后,Hyper-V 从虚拟机中删除内存的操作。
虚拟机重启动完毕后,删除已分页的内存
另外还要注意有关Hyper-V 智能分页功能使用方式的下列情况:
- Hyper-V 智能分页文件只有在虚拟机真正需要时才会创建。
- 额外数量的内存被删除后,Hyper-V 智能分页文件会被删除。
- 除非需要再次重启动,并且再次遇到物理内存不足的情况,否则Hyper-V 智能分页功能将不会为同一台虚拟机使用。
运行时动态内存配置变动
Windows Server 2012 Hyper-V 使您可对运行中虚拟机的动态内存做出下列配置变动:
- 提升最大内存。
- 减少最小内存。
动态内存需要下列前提条件:
- Windows Server 2012。
- Hyper-V 服务器角色。
Windows Server 2012中 Hyper-V 动态内存的改进可帮助您获得更高整合率,同时可改善 Hyper-V 操作的可靠性。您可以在不关闭虚拟机的情况下对虚拟机的内存配置做出更多变动。如果有闲置或低负载虚拟机,例如池化 VDI 环境,Hyper-V 中作为补充的动态内存技术就可供您提升整合率,并改善重启动操作的可靠性。这种做法可降低客户成本,尤其是在包含大量闲置或低负载虚拟机的环境,例如池化 VDI 环境中。通过在运行时更改动态内存的配置,有助于提升 IT 的整体生产力,同时停机时间会有显著降低,此外还可提高响应需求变更的敏捷度。通过用这些新功能响应需求的变更,您将获得更高敏捷度。