不可否认,服务器虚拟化的确有它的好处,IT管理人员可以充分利用他们的服务器硬件预算,追求计算密度最大化不再是梦想,但问题是虚拟化这个优势常常被过度使用,反而导致服务器性能和稳定性下降,那么我们该如何避免服务器资源因虚拟化被过度整合呢?答案是优化虚拟机资源配置。
发现服务器过度整合
你可能要问,我怎么知道虚拟机造成服务器过度整合了呢?问得好!一个办法是使用性能监视器发现,微软提供了大量的指标,Windows Server管理员可以使用这些指标确定服务器资源是否被过度分配了,例如,Windows管理员可以通过“内存/可用字节数”计数器确定服务器内存资源是否够用,虽然Linux上没有性能监视器,但有大量类似的工具,如vmstat、free和iostat等,Linux系统管理员可以使用这些工具得到类似的性能信息,当然在Hypervisor下监控性能的确有点棘手,特别是CPU使用情况,结果可能会出现偏差,幸运的是,有许多方法可以帮助我们确定是否过度整合了虚拟机。
不管怎样,你都希望服务器虚拟化后仍然可以提供相当于专用物理服务器的性能水平,如果你的虚拟服务器没有达到你的预期,那么你需要通过Hypervisor给虚拟机分配更多的硬件资源,如果没有更多的资源可供分配,那你肯定是过度整合了虚拟机,这时你必须采取一些纠正行为,如将虚拟机转移到其它物理服务器上。
#p#
优化资源配置,预防服务器过度整合
要防止服务器过度整合你需要做几件事,首先你要知道不是每个虚拟机都是等同的,在任何物理服务器上,没有一个快速的方法来判断虚拟机密度是否合适。例如,我曾经收到一封回应我写的资源分配计划书的电子邮件,发件人告诉我他所在的组织采取的官方策略是购买8处理器核心,16GB内存的高档服务器,每台物理服务器可以容纳7个虚拟机,虽然可以这样制定资源分配计划,但却不能绝对保证可以运行7个虚拟机,正如我所说,不是每个虚拟机都是等同的,如SQL Server服务器需要的资源就比DHCP服务器要多,因此需要给它分配更多的资源。
我们假设发件人是平均分配服务器资源的,在一台内存为16GB的服务器上,他可能会给每个虚拟机分配2GB内存(剩下的2GB内存留给宿主操作系统使用),有些虚拟机有2GB内存可能已经足够了,如DNS服务器或域控制器服务器分配2GB内存绰绰有余,但对于Exchange 2010 Server,微软的要求是至少要4GB内存(如果安装了多个服务器角色,可能需要8GB)。
我的观点是,虚拟机对资源的要求不会完全一样,你不能一视同仁,否则你就会造成有些虚拟服务器分配的资源比需要的资源要多得多,而其它虚拟服务器则饿得要死,即使宿主服务器没有过度分配资源,但虚拟机却不好受。
最后,避免服务器过度整合的一个关键是要知道每个虚拟机的硬件需求,根据它们的需求分配硬件资源,也就是说,你分配给DNS服务器的资源可能会更少(紧接前面的例子,应该低于2GB),这样才有足够的内存资源分配给Exchange或SQL Server服务器。
#p#
均匀虚拟机分配,阻止服务器过度整合
另一个避免服务器过度整合的关键是,以某种均衡的方式跨多个宿主服务器分配虚拟机,注意不是在物理服务器上平均分配虚拟机的数量,而是均衡硬件资源需求,正如前面提到的,SQL Server和Exchange Server需要的资源较多,既然如此,是不是将多个虚拟化的SQL Server服务器放在一台宿主服务器上更有意义呢?总的说来,在一台物理服务器上放一或两个SQL Server服务器会更好,剩下的服务器用来运行影响较低的虚拟机,这样你就不会因过度整合扼杀服务器的整体性能了。
虽然我介绍的这些方法已经通过实践证明是有效的,但在你的环境中可能并不总是可行的,假设你所在的组织只有几台物理服务器,但想要创建的虚拟机数量却很惊人,并且因预算限制,也不允许将虚拟机转移到其它服务器,这个时候你只能选择忍受。
象这种情况,我会努力让每个虚拟机运行得更有效率,禁用不必要的系统服务是个不错的主意,既减少了资源消耗,同时也降低了服务器的攻击面,此外,那些不会用到的应用程序应该永久清除,让每个服务器只运行该运行的服务,原则就是不多一个,也不落下一个。
我也建议运行性能监视器,确定究竟使用了多少硬件资源,你会发现通过重新合理分配部分资源会使整体性能得到提升,正如前面讲到的,如果没有足够的可用空间重新分配服务器资源,则应该考虑升级物理服务器(如果可能的话),加装内存,更换更快的CPU,添加CPU核心和存储空间,只要是能增强服务器性能的方法都应该考虑一下,通常情况下,增加内存和CPU核心就可以了。
#p#
合并冗余的虚拟机,缓解服务器资源紧张局面
有时你会发现无法升级服务器硬件,也无法重新配置虚拟机以优化它们的执行,在这些情况下,最好的方法可能是合并一些冗余的虚拟机。例如,假设你有一个虚拟DNS服务器和虚拟域控制器,它们很重要,但资源需求都不高,如果将它们合并到一起,就可以节省大量的开销,这样不仅少了一个操作系统,还少了它上面运行的应用程序,如杀毒软件,备份代理等,合并低资源需求的虚拟机可以有效减少对宿主服务器CPU资源的要求,也可以释放许多内存资源,这样就可以给其它虚拟机分配更充足的内存资源了。
小结
服务器虚拟化催生了许多新的问题,随着单台物理服务器上容纳的虚拟机数量增加,问题会变得越来越多,越来越难以解决,幸运的是,只要用对方法,找出资源分配不当的服务器,通过增加硬件,转移虚拟机,重新分配资源,合并冗余虚拟机等方式,让管理员头痛的服务器资源紧张的局面就会得到缓解。
【编辑推荐】