Windows Server 2008 R2 SP1之前的Hyper-V版本中,管理员只能固定指定虚拟机所使用的物理内存大小,当虚拟机启动时,自动将管理员分配的内存完全占用。可能会出现以下2个问题:
1、当管理员分配给虚拟机的内存大小无法满足应用的需求时,管理员需要在关闭虚拟机的情况下(Hyper-V不支持内存热插拔),对其内存占用大小重新进行调整。
2、当管理员给虚拟机分配过多的内存时,虚拟机应用在不需要使用这么多内存的情况下,将造成资源的浪费。
Windows Server 2008 R2 SP1 Hyper-V提供的内存动态管理功能,将解决遇到的内存应用瓶颈。
内存过量使用内存过量使用,允许虚拟机使用比物理主机可用的更多的内存。例如,宿主机有2GB内存,就可以在其上运行四台拥有1GB内存的虚拟机。内存能过量使用因为有比宿主机更多的虚拟内存。因此,管理员能够最大化物理计算机中运行的虚拟机数量,而不用理会物理内存的限制。
如果没有内存过量使用功能,分配给虚拟机内存的数量最多只能是和宿主机相同数量的内存。但实际上,虚拟机通常消耗的内存比其需要的少,这会浪费物理内存空间,并限制了在服务器上能运行的虚拟机数量。例如,一台8GB 内存的Hyper-V服务器,可能在服务器上部署三台虚拟机,每个分配2GB,并预留2GB给主机操作系统,虽然这台服务器有足够的CPU和磁盘资源来宿主更多虚拟机,但内存成为限制因素。Hyper-V Dynamic Memory里含有一个选项(内存缓冲区)能解决这个问题。
Hyper-V不允许内存过量使用,例如如果分配4GB内存给Hyper-V的一台虚拟机,虚拟机实际只使用2GB。启动虚拟机后,Hyper-V检查是否有4GB的物理内存可用。如果这样的话,内存就被“锁定”,因此只能用于该虚拟机。如果4GB不可用,虚拟机就不能启动,即使虚拟服务器需要的2GB内存可用也不行。
Hyper-V提供“内存缓冲区”、“内存权重”以及“内存优先级”。Hyper-V允许根据内存使用率优化虚拟机。当出现争用内存的情况,高优先权虚拟机首先获得内存。因为内存竞争会迫使虚拟机用光内存,如果虚拟机需要但又没有可用的内存。“Hyper-V管理器”显示每台虚拟机可用的内存,帮助管理员在Hyper-V上更好地管理内存分配。
启动内存启动内存,是指操作系统启动所需要的最小内存容量加上开启应用程序所需要的内存容量。启动内存值和处于“静态”模式下的内存设置相同。
例如Microsoft Exchange Server 2010至少需要4 GB的系统内存,即使用8GB来运行一个虚拟系统,而操作系统和应用程序需要的最低内存是4GB,那么启动内存设置就是4GB,因此应该把启动内存设置与操作系统和应用程序启动所需要的最低内存容量保持一致。
最大内存最大内存,是Hyper-V可以为虚拟机提供的最大内存容量,默认设置为64GB 。Hyper-V会根据实际需要的容量自动分配。
例如,应用程序会要占用全部内存。在这些情况下,把最大内存设置应该分配给应用程序和操作系统最大内存容量。另外,如果最大内存值不是64GB,内存动态管理功能不能启用。
本文转自wangshujiang51CTO博客,原文链接: http://blog.51cto.com/wangshujiang/943263,如需转载请自行联系原作者