说到虚拟化性能优化,有一大堆最佳做法可以做到最充分地利用你的服务器。其中,微软公司出的虚拟化平台Hyper-V也不例外。 在前面关于Hyper-V优化的指南中,我们已经讨论了理解Hyper-V应用和服务要求的重要性,以及了解如何监控虚拟机和管理CPU资源分配的重要性。在本指南中,TechTarget中国的特约虚拟化专家Anil Desai将与大家分享更多Hyper-V性能优化的方法,重点是硬件和网络微调。
Hyper-V一体化服务(Integration Services) 我们先看一个简单常用的做法:确保你使用的Hyper-V一体化服务(Integration Services)……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
说到虚拟化性能优化,有一大堆最佳做法可以做到最充分地利用你的服务器。其中,微软公司出的虚拟化平台Hyper-V也不例外。
在前面关于Hyper-V优化的指南中,我们已经讨论了理解Hyper-V应用和服务要求的重要性,以及了解如何监控虚拟机和管理CPU资源分配的重要性。在本指南中,TechTarget中国的特约虚拟化专家Anil Desai将与大家分享更多Hyper-V性能优化的方法,重点是硬件和网络微调。
Hyper-V一体化服务(Integration Services)
我们先看一个简单常用的做法:确保你使用的Hyper-V一体化服务(Integration Services)是最新版本。这个简单的程序会为支持的子操作系统(以及某些非正式支持的子操作系统)安装可用的最新驱动,从而提高虚拟机调用硬件时的性能。通常,这个工作应该是在子操作系统安装完成后所做的第一件事。请记住,一体化服务的最新版本可能是为了提升Hyper-V主要发布的性能而发布的。
利用合成网络(synthetic network)驱动
Hyper-V支持两种类型的虚拟网络驱动:模拟网络驱动和合成网络驱动。模拟驱动的兼容性最好,而合成驱动的效率更高。因为合成驱动使用了专门的VMBus以进行虚拟网卡和root/parent分区物理网卡间的通信。要检验Windows子操作系统内使用的驱动器类型,可以利用设备管理器查看。
通过修改虚拟机属性,可以更改安装的网络适配器类型。为了让更改生效,有时需要关闭虚拟机或重启虚拟机。不过,通常这样的做法还是有价值的。如果合成驱动兼容,CPU利用很可能会更低,网络反应也更快。
增加网络容量
网络性能对各种应用和服务来说是至关重要的。无论是运行一台或是几台虚拟机,主机服务器使用一个物理网卡通常就可以了。但是如果有很多台虚拟机争夺资源,而且还要执行物理网络层安全性,那就该考虑为主机服务器添加几Gb的以太网卡了。有的网卡支持端口聚合(teaming)功能,聚合功能可以执行负载平衡或自动故障解决(automatic failover)。此外,支持TCP卸载等功能的网卡还可以通过管理网络接口层从而提升性能。在root/parent分区网络适配器的驱动中,确保启用此项功能。
只要有可能,都可以使用一个方法,就是将虚拟机分别隔离到不同的虚拟交换机(Virtual switch)。考虑到虚拟机划分的安全性和性能因素,每个虚拟交换机可以连接一个不同的主机物理网卡端口。对于使用同一虚拟交换机的不同虚拟机组,还可以使用VLAN标记为其分流。
降低OS负担
在虚拟主服务器中运行一个完整版的操作系统可能有一个缺点,就是OS负担太大。利用Server Core安装选项,你可以将Hyper-V部署到精简版的Windows Server 2008。这个配置缺少标准的管理工具,不过,还是可以降低不少OS负担。此外,它还降低了服务器的安全“surface area”,减少了许多可能抢占资源的服务和进程。它的确可以算是一款精简版的Windows 操作系统,针对许多特殊任务进行了优化。你需要用远程管理工具从另一台Windows机器上管理Hyper-V。不过,其性能优势使其值得我们一试。
虚拟CPU和多处理器内核
对于Windows Server2008子操作系统,Hyper-V最多可以支持4个虚拟CPU,对于其它各种支持的操作系统,可以支持2个虚拟CPU。这引发的问题是:我们应该什么时候使用这项功能呢?很多应用和服务是以单线程的方式运行的,这就导致了一个常见的问题:当只有一个应用时,服务器上的2个CPU会被视为分别利用50%。从子操作系统和hypervisor本身来看,处理器内核间CPU调用会非常繁杂。因此,你应该只为某些虚拟机使用多虚拟CPU,这些虚拟机的应用和服务必须能够受益于多虚拟CPU。
内存问题
根据以往经验,一台虚拟机所分配的内存大小应该和同样负荷的一台物理机器的内存大小相当。不过,这并不是说你应该浪费物理内存。运行一个子操作系统和所有必要的应用和服务,如果你非常清楚需要多大内存,那你就按这个大小分配吧。此外,你还应该额外地分配少量内存用于虚拟化相关的应用(通常,额外分配64MB就足够了)。
如果可用内存空间不足,可能导致很多问题,如子操作系统内过多的内存分页。内存分页过多的问题可能会很具迷惑性,因为它起初看起来可能像是磁盘I/O性能的问题。最根本的原因通常是因为虚拟机分配的内存空间太小。在对数据中心进行全面更改之前,监控应用和服务的内存需求是很重要的。在虚拟机中进行内存需求监控极其容易。
SCSI和磁盘性能
对很多虚拟机类型而言,磁盘I/O性能通常是一个瓶颈。你可以利用虚拟集成开发环境(IDE)控制器或SCSI控制器将虚拟硬盘(VHD)附属到一台Hyper-V虚拟机。IDE控制器是默认的,因为它对很多子操作系统都支持,具有最好的兼容性。不过,SCSI控制器可以减少CPU负担,让虚拟SCS总线能够同时执行多个任务。如果你的工作是磁盘密集型的,请考虑只用虚拟SCSI控制器(如果子操作系统支持这个配置)。如果不行,就额外添加SCSI连接的VHD(最好是分开存储于主机服务器上物理轴或阵列的VHD)。
快照管理
Hyper-V的快照基础设施方便快捷,易于使用。不需要任何初始化设置,只需点击下鼠标,新快照就创建好了。不过,储存的快照过多也有个缺点。当你创建一大堆快照之后,Hyper-V就不得不执行很多读取操作。Hypervisor必须检查很多硬盘文件以找到最新数据,而且,这会增加很多物理I/O负荷。如果你有很多虚拟机,每台虚拟机有多个快照,问题就更复杂了。更多信息,请参阅我的“Hyper-V快照”指南。
解决这个问题的办法很简单:删除所有子虚拟机不再需要的快照即可。
综述
老实说,本文所述远不够完整。不过,希望本文所讨论的能帮助你提高Hyper-V主机服务器效率。尽管你要完全吸纳这些最佳做法还需要一些时间和努力,我相信它们会很快为你服务。
关于作者:Anil获得了MCSE、MCSD和MCDBA认证,同时也是微软MVP。他写作或合著了将近20本技术书籍,包括几本微软认证参考指南。
作者
Anil Desai是独立顾问。他擅长基于微软技术的评估、执行和管理的解决方案。Anil Desai处理微软的Server产品和互联网发展平台,并且管理支持上千台虚拟机的数据中心环境。Anil获得了MCSE、MCSD和MCDBA认证,同时也是微软MVP。 Anil Desai写了很多技术书籍,主要关注微软Server平台、虚拟化、活动目录、SQL Server和IT管理。最近,他写了管理Microsoft Virtual Server的指南和Microsoft Virtual Server脚本指南。他作了许多会议报道,同时也是技术杂志的撰稿人。
翻译
相关推荐
-
回顾年度9大虚拟化技术
虚拟化管理员从未放弃追寻更好虚拟化技术,以使他们的工作更快、更易于管理以及更好地优化。 我们看到,虚拟化工具在 […]
-
从Azure VM到Hyper-V:想想这些技巧
多年来,IT行业已经推动IT人员把工作负载转到云中。虽然在公有云中有一些好处,但有些工作负载更适合运行云本地数据中心中。
-
功能多样的Get-VM PowerShell cmdlet,你知道多少?
Hyper-V管理员能够使用Get-VM PowerShell cmdlet查看并调整一系列虚拟机配置信息。微软花费大量精力对PowerShell进行优化,以提升其对本地或者远程服务器的管理功能。
-
支持Linux虚拟机:新版Hyper-V来帮忙
大家都知道,Linux虚拟机无法利用Hyper-V针对Windows虚拟机提供的众多特性。幸运的是,情况已经发生变化,Hyper-V现在能够为Linux提供更多的支持。