服务器虚拟化产品(如Hyper-V)允许单台物理服务器托管多个服务器镜像,旨在减少组织的硬件成本,基于这个前提,在宿主服务器上能托管的虚拟机越多,你的硬件成本就越低,当然,提高宿主服务器的虚拟机密度也会增加服务器的负荷,关键是要给虚拟机分配合适的资源,以最大化硬件投资,又要让虚拟机的性能可接受,下面的技巧将帮助你在Hyper-V环境中最大化硬件资源利用率,同时获得较好的虚拟机性能。
1、明智地选择客户机操作系统
Hyper-V可以托管多种操作系统(我甚至在Hyper-V上运行过Windows NT),但有些操作系统能更好地使用硬件资源,一般来说,如果可能,你最好在客户机上尝试运行Windows Server 2008或Windows Server 2008 R2,这些操作系统专门为Hyper-V做了优化。
如果你不能使用Windows Server 2008或Windows Server 2008 R2,建议使用支持集成服务的Windows操作系统,集成服务是一系列允许客户机与父分区使用Hyper-V VMBus的驱动,VMBus可以极大地改善客户机的性能,Windows 2000,2003,XP,Vista和Windows 7都不同程度地支持集成服务,但Windows NT,Windows 9x或非Windows操作系统都不支持集成服务。
2、仔细规划你的磁盘配置
在虚拟服务器环境中,存储池通常会成为性能瓶颈,如果可能,你应该好好组织一下你的虚拟机,最好让每个虚拟机驻留在独立的磁盘、LUN或阵列上,那样就不会有多个虚拟机竞争相同的磁盘I/O资源了。
不幸的是,给每个虚拟机分配一个独立的物理存储成本上是不可接受的,最好的办法是合理组织你的虚拟机,却不磁盘I/O资源得到有效的使用,例如,如果你有两个虚拟的SQL服务器,它们会产生大量的磁盘I/O,你应该避免他俩共享使用相同的存储,如果硬件配置不能满足你为他俩独立分配物理存储,可以考虑将其中一个转移到其它宿主服务器,最好是那些I/O资源空闲较大的服务器。
3、避免创建快照
虚拟机快照可以保留虚拟机某个时刻的状态,在安装补丁或修改配置之前,创建虚拟机快照是惯用做法,那样,如果某个补丁会引发冲突,你可以快速地从快照恢复虚拟机到之前的状态,不用执行完全的备份恢复。
虽然快照好处多多,但应该尽量少用,有两个原因,首先,如果你创建的是数据库服务器快照,你必须执行回滚,这样数据库往往会招到破坏,其次,创建快照会影响虚拟机的性能,实际上,创建快照就是创建第二个虚拟驱动器(.AVHD),从那以后,所有写操作都发生在新驱动器上,但读操作时跨两个驱动器的,这样会影响虚拟机的性能,快照越频繁,虚拟机的性能越低,因此,应尽可能少执行快照,只有在需要时才创建。
4、如果可能,虚拟机应使用单NUMA节点资源
如果你在NUMA(非通用内存架构)平台上运行Hyper-V,你应该配置Hyper-V只使用首选NUMA节点的资源,虽然Hyper-V可以配置虚拟机使用多个NUMA节点的资源,但性能会急剧下降,如果虚拟机只使用单一NUMA节点的资源,Hyper-V的性能会更好。
5、有效使用网卡
大多数宿主服务器没有足够的网卡,不能给每个虚拟机分配一个独立的网卡,你应该合理分配网络资源,确保它们得到有效的使用,如果可能,尽量给每个网络流量较大的虚拟机分配独立的网卡,如Exchange和SQL服务器,如果其它虚拟机产生的流量不大(如域控制器或DHCP服务器),你可以在这些虚拟机之间共享一块网卡。
英文原文:Five tips for optimizing Hyper-V 作者:Brien Posey