动态内存配置以及及时备份是您在Hyper-V上运行Linux时相当重要的功能。这两项功能需要Hyper-V主机与客户端操作系统间密切的协同处理方能达成的功能。而现在微软已经将这两项功能带至Hyper-V与Linux之中。
Linux动态内存配置
动态内存配置是一项在 Hyper-V 中可选择使用的技术之一,如果您启用此技术,Hyper-V 将会按照 Guest OS 所需要的内存大小,自动的保留或释放物理内存。 当动态内存开启时,能够聚集事实上还没被 Guest OS 用到的内存空间。 这使得内存能够更妥善的被利用,能够提高单台 Host OS 上运行的虚拟机数量,提高整体虚拟机的密度,能够让硬件有更高的利用率以及减少每个虚拟机所需要的花费。动态内存配置技术在 Windows 以及 Linux 客户端操作系统都能够使用,甚至可以在单一 Hyper-V 主机上使用这两种操作系统的混合配置。
动态内存配置是在多种混合环境,尽可能发挥内存使用率的技术。 Hyper-V 将会减少对于内存使用较少的客户端操作系统,并将其指定给使用较多内存的客户端操作系统使用。 而 Hyper-V 会自行做内存的配置与调整和不需要管理人员去进行调整等工作。
如果目前客户端操作系统内存需求已达稳定的程度,这时动态内存所能带来的好处就不会表现得太明显。 如果您的配置情况是可以稳定掌握的,那我们将会建议您关闭此项技术。另外,有些客户端操作系统上的程序会尝试着把所有划分给他使用的内存都拿去自行规划管理,而绕过操作系统。像如果有这种程序自行规划内存配置时,则动态内存建议不进行启用,因为这类的程序可能会与 Hyper-V 所提供的技术会有所冲突。 最普遍的例子就像是大型可扩展的数据库以及一些 Java 应用服务器等。
在 Hyper-V 中动态内存的技术支持大部分的 Linux 发行版,但目前尚未于 FreeBSD 上支持。 这一部分可以持续关注在 TechNet 上的 LIS/BIS 技术表格,查看哪些发行版已经支动态内存技术。
动态内存技术是如何工作的?
动态内存技术使用两种技术达成,而彼此两者为独立的方式:做 ”Hot-Add” 以及 ”Ballooning”。 为了要了解这两种技术,首先我们先来看到 Hyper-V 允许您在虚拟机中设置三个动态内存配置的参数:
◆起始内存-最一开始虚拟机启用时应该配置的内存大小。
◆最大内存限度-在这个虚拟机中能够从动态内存术配置到的最大内存大小。
◆最小内存限度-最小内存是动态内存配置时,最少需要给此虚拟机最低限度的内存大小。
通常起始内存会介于最大内存限度与最小内存限度之间。
而前面提到 ”Hot-add” 技术是当虚拟机对内存用量需求增加时,则会逐渐地将该虚拟机的可用内存逐渐提升到最大内存限度。 而这种方式只会逐渐提升虚拟机中可用的内存限度,但并没有办法做到 ”Hot-remove”,也就是说这个方式只能增加内存而无法收回不使用的内存。
而在内存自虚拟机中回收已配置的大小是使用 ”Ballooning” 技术。 这是由 LIS 内动态内存驱动程序来向客户端操作系统宣称这些内存必须要留给 LIS,因此在 Linux 客户端操作系统上并没有办法使用到这些内存。 接着LIS内存驱动程序会将这些由 LIS 占用的内存还给 Hyper-V,让 Hyper-V 能够配置给其他虚拟机使用。 这个操作并不会导致原本的 Linux 客户端操作系统的总内存容量减少,反而是其 Linux 客户端操作系统认为内存应该是被用来当作某些程序的缓冲区域。 因此 Ballooning 技术不会将其 Linux 客户端操作系统所看到实际可以用的内存空间减少至小于最小内存限度所设定的值以下。
Ballooning 技术亦可将可用内存配置回虚拟机当中,当 Hyper-V 决定要归还界用的内存时,LIS 内将会归还先前宣称需要使用的内存空间回 Linux 客户端操作系统。 当虚拟机内存需求提升且 Ballooned 的内存皆已归还,这时 Hyper-V 将会使用 Hot-add 配置更多的内存给需要的虚拟机中。
动态内存配置范例
让我们来看看动态内存的配置流程,我们用下列的示例来解释这三个步骤:
◆一台虚拟机开启,其内存大小将会依照起始内存所设定的内存大小做配置。
◆虚拟机对内存的需求增加,于是 Hyper-V 通过 Hot-add 技术增加该虚拟机的内存。
◆虚拟机对对内存的需求减少,于是 Hyper-V 通过 Ballooning 技术释放空闲内存。
而上面这三个步骤的过程我们用几种方式来观察:
◆从一个概要的内存配置图来显示目前内存配置状况。
◆通过 Hyper-V 管理员内的内存页面查看内存状况。
◆在 Linux 下使用 free –m 命令查询内存状况。
前面两个方式为从虚拟机观察内存消耗状况,而第三种方式为从客户端操作系统内部观察内存使用状况。