2. 动态内存
Hyper-V服务器发布之后,进步很快,至少目前在虚拟机迁移方面已经可以和Vmware抗衡一番了。但Hyper-V在内存分配方面和Vmware还是有一些差距的,Vmware可以支持内存超售,内存热添加等技术,Hyper-V较之要逊色很多,只能为虚拟机分配固定尺寸的内存。这样就导致了我们项目中有些服务器管理员会为自己的服务器最大限度地申请内存,例如某个业务服务器正常只需要1G内存,但管理员往往会非常具有前瞻性地申请4G内存,结果当然是白白浪费了很多内存。在2008 R2 SP1推出之前,微软的应对方法是质疑Vmware超售内存技术的安全性,例如我们在Tech.ED技术大会上经常会听到有讲师对Vmware超售内存技术的质疑。当然,今年的Tech.ED上估计会听到微软讲师对动态内存的赞美声音了:)。
好了,我们来体验一下动态内存技术吧。首先如图7所示,我们在安装了SP1的服务器上安装Hyper-V角色。
图7
安装完Hyper-V角色后,我们在服务器上打开Hyper-V管理器,准备创建一台虚拟机。虚拟机使用的操作系统没有太多的要求,Hyper-V支持得来宾操作系统都可以,本例中我们为虚拟机安装的操作系统是Windows Server 2003 SP2。
图8
我们为2003虚拟机分配的内存是2G,虚拟机的其他配置我们就不一一介绍了,相信大家对那些配置并不感兴趣。
图9
虚拟机创建完毕后,在Hyper-V管理器中对新创建的虚拟机进行配置。如图10所示,我们发现动态内存配置的所在了。如果我们选择为虚拟机分配静态内存,那虚拟机的内存分配机制和以前的版本相同,虚拟机还是会得到固定的内存,注意,如果你使用默认选项,那创建虚拟机时Hyper-V会使用静态内存的。如果使用动态内存,那虚拟机内存会在下限和上限之间浮动,本例中虚拟机的内存会在256M和2G之间。
虚拟机的内存分配中还可以配置缓存区,在本例中如果虚拟机使用了分配的全部2G内存,那么Hyper-V服务器还会为虚拟机留出410M内存用于应付突发事件。这种设计机制是建立在所有虚拟机不会同时达到内存上限的基础上的,如果所有虚拟机由于某种不可思议的原因都需要最大限度地使用内存,那Hyper-V服务器就要面临内存危机了。这种情况下,哪些虚拟机可以优先得到内存就取决于虚拟机内存权重的优先级设定了,优先级高的会被优先保证内存分配。
图10
为虚拟机配置完动态内存后,在虚拟机上安装Windows Server 2003操作系统,如图11所示,我们可以发现虚拟机此时实际只占用了60M内存左右。
图11
来到Hyper-V服务器上,我们可以看到Hyper-V服务器也仅仅使用了800多M内存,这800多M内存包括了Hyper-V服务器和2003虚拟机使用内存的总和。如果不使用动态内存,仅仅是这个2003虚拟机,Hyper-V服务器就要分配出去2G内存。
总的来看,动态内存允许在一个池范围内为虚拟机灵活配置内存。增大了内存的利用率,降低了使用成本。只要被证明技术可靠,相信应用前景应该一片光明。
图12