www.hj8828.com 2

【www.hj8828.com】如何让Hyper-V发挥最佳性能?

www.hj8828.com,虚拟化管理员常常面对的问题是:有多少?为了稳固地预测你的数据中心和你的预算,你总会想知道一台物理机可以合并多少台虚拟机。答案永远是不变的:视情况而定。

原书中的第二章
是介绍了下hyper-v的管理器和检查点的使用,导入导出虚拟机,所以我跳过了不高兴写,很简单。直接进入第三部分,介绍虚拟机的三个重要组成部分:CPU,内存,硬盘的配置选项。

为新部署的微软Hyper-V环境中的主机和网络挑选合适的硬件并非易事,更不用说在生产环境中衡量和监控性能这项任务了。在本文中,我将剖析组成Hyper-V底层硬件架构的不同部件,先从处理器的配置开始说起,之后会介绍内存、存储和网络等子系统。

在物理机箱时代提出这个数当然要容易得多。当面对一个应用时,你会建议每应用一个配置,这通常比增长必要占用的能量要多。现在该空间由其它虚拟机一起共享,合适的数量依赖于机器的类型、它们的工作负载和针对RAM、存储和CPU的要求。管理复杂、多线程工作负载的日常开支也会影响到最终的数量。有了虚拟化,所有的内容都与高效利用资源有关。

Hyper-v虚拟处理器

在Hyper-v中,系统对于虚拟处理器的管理偏向”粗犷”,和同类产品VMware的ESXI相比,Hyper-v并不是将CPU的主频叠加,然后根据每一台虚拟机分配相应主频的资源;Hyper-v仅以物理CPU核心数进行资源分配,这种方式降低了逻辑架构的理解难度,但并不是说此种处理方式不可控。Hyper-v以数量为基础的计量方式可以通过资源占比的方式进行精细化的分配。

然后我们会深入介绍提升性能的方法和技巧、如何选择合适的Hyper-V版本、配置方面的常见问题,最后介绍虚拟机的性能监控以及这与物理环境监控有何不同之处。

考虑虚拟机时,从你的处理器需要开始依然是一个不错的主意。尽管很多甚至是现今在售的最基础的机型也有多个处理器核心,这并不意味着你的服务器就需要它们。你可以根据操作系统向一台虚拟机分配四个虚拟处理器,但是同步多个物理处理器核心来服务于一个多CPU虚拟机配置的工作确实能减少日常开支。整合下降,日常开支就增长。跨处理器的交流在Windows
Server 2008 R2的虚拟机中比在Windows 2000
Server中产生的问题要少。你可以裁剪虚拟化处理器的数量来只提供给虚拟机它需要的资源。

Hyper-v虚拟处理器计数方式

Hyper-v能够为虚拟机可分配的最大虚拟处理器数取决于物理服务器的两个指标:物理CPU个数,物理CPU核心数。

  • 物理CPU个数:此处指的是每一课实际安装在服务器中的物理CPU。服务器行业术语”路”即物理CPU个数。双路服务器即代表安装有两颗物料CPU。任务管理器中的插槽。
  • 物理CPU核心数:此处指的是当颗CPU的核心数,如使用Intel的超线程技术,核心数需要乘以2。任务管理器中的内核。
  • 虚拟机可分配最大虚拟处理器数:此数据指的是物理CPU个数*物理CPU核心数。此数据对应任务管理器中的逻辑处理器。无论何种情况,为单个虚拟机分配的虚拟处理器不可能超过此限制。

超线程:超线程技术是在一颗CPU同时执行多个程序而共同分享一颗CPU内的资源,理论上要像两颗CPU一样在同一时间执行两个线程,虽然采用超线程技术能同时执行两个线程,但它并不像两个真正的CPU那样,每个CPU都具有独立的资源。当两个线程都同时需要某一个资源时,其中一个要暂时停止,并让出资源,直到
这些资源闲置后才能继续。因此超线程的性能并不等于两颗CPU的性能。但不可否认,拥有超线程技术的CPU性能会优于没有超线程技术的CPU。

注意:所有建议都适用于Windows Server 2008
R2(含服务包1)中的Hyper-V。就可扩展性方面的局限而言,即将推出的Windows
Server
8中新的Hyper-V版本有了很大的改进,但是这不是本文探讨的话题。这里给出的建议只适用于最新的Windows版本。

单台服务器上可以运行的虚拟处理器数量受到实际限制。微软的Hyper-V Server
R2将在每台物理主机上支持多达512个虚拟CPU。这是个大数目,但是这并不意味着你可以不顾后果地达到该数目。不同的软件厂商对于他们的CPU要求会有不同的说法,但是最终你应该思考每个逻辑CPU上运行多少虚拟CPU,占多大比率。不像某些虚拟化平台,这不是指核心,而是核心和线程。相关的例子是大部分英特尔服务器芯片中用到的超线程HT)技术。超线程是Windows在蛤有呈全CPU核心的情况时报告8个CPU的原因。在这种情况下,你可以计算在一个时钟周期内执行两个线程的能力,因为超线程让你可以这么做。在这种情况下,你通常会加倍服务器中拥有的实际物理核心。

Hyper-v 2012 R2虚拟处理器升级特性

资源

Hyper-v 2012 R2

逻辑处理器

320

每台主机的虚拟CPU数量

2048

每台虚拟机的虚拟CPU数量

64

虚拟处理器和逻辑处理器

那么你要如何评估你的CPU需求呢?一般的建议是给单台逻辑处理器分配八台用于服务器的虚拟处理器,给每台逻辑处理器分配12台用于虚拟桌面的虚拟处理器,如Windows
7虚拟机。在运行两台六核HT处理器的Hyper-V主机和运行单台虚拟处理器的服务器级虚拟机上,你可能会限制虚拟的数量在192以内。

检测物理CPU是否支持Hyper-V

除了查询官方资料外,依然可以通过其他方法对此进行检测。针对CPU的硬件支持,只要满足以下三个条件就可以使用Hyper-v角色。

  • 支持硬件虚拟化技术,如Intel的Intel VT或AMD的AMD-V。
  • 支持数据执行保护(DEP)。
  • 64位处理器:事实上这种限制在2008R2时代还会背作为一个参数去考量,但随着技术的发展,现在基本可以默认最新的处理器都是64位了。

我接触的IT管理员对于虚拟处理器和逻辑处理器是什么,它们对于某一个物理主机上虚拟机的最大数量有何影响经常存在一种误解。这不仅与分配给虚拟机的处理器数量有关,还与每个主机的物理内存数量直接有关(下一回会介绍)。

现在的服务器处理器性能针对虚拟化有巨大的飞跃。每路上最高可达六核,还有如增长的二级和三级缓存等优化以及更快的总线,现在的服务器可以处理的问题比以前多得多。在近期的会议中,微软公布,他们的一家实验室每个服务器刀片上包括225台虚拟机,该刀片拥有128GB的内存以及两台英特尔Xeon
5600处理器,每台主机都是每路6核心。这样的密度甚至没有因为工作负载接近CPU和内存的容量,CPU利用率一般都在15%左右。

使用系统信息检查支持特性

在PowerShell中输入msinfo32

www.hj8828.com 1

拉到最底部,检查Hyper-v虚拟机监视模式扩展,Hyper-v固件中启用的虚拟化,Hyper-v数据扩展保护,这三个选项的结果是否为是。

www.hj8828.com 2

在服务器虚拟化中,Hyper-v
第二级地址转换(SLAT)并不是必须功能。此功能是否开启仅在两种情况下是必要选项:

  • 使用微软的桌面虚拟化的RemoteFX进行显卡硬件加速,USB重定向等功能时,第二级地址转换(SLAT)是必要功能。
  • 在操作系统为Windows8/8.1
    64位Professional以上版本时,用户希望在本机安装Hyper-v角色时,第二级地址转换(SLAT)是必要功能。

第二级地址转换(SLAT)广泛存在于服务器级别的Xeon
CPU上,家用机级别的CPU则只有较新的CPU支持,具体是否支持,需要查询官方的CPU支持文档。

逻辑处理器是多核处理器的一个核心,所以一个四核处理器有四个逻辑处理器。如果该四核处理器有超线程(Hyper
Threading)技术,它会显示为八个核心;这意味着,你的系统有八个逻辑处理器。尽管微软的说明文档这么介绍逻辑处理器,但是要注意:超线程并不会神奇地让处理器容量翻番。为了稳妥起见,就看核心算作逻辑处理器——如果你启用了超线程技术,其数量也不会翻番。

谈论基础服务器时这都还好,但是服务器运行一个CPU密集负载时会怎么样呢?你可以给一台虚拟机分配额外的CPU核心。举例来说,SQL
Server不只需要处理器,还需要很多内存。在这种情况下,你可能运行的内存配置限制在每台虚拟机64GB。尽管将虚拟机推向轻便、双路的硬件很普遍,但是Hyper-V确实支持在主机上多达64个的逻辑处理器,这让你急需CPU的应用可以扩展解决方案。

开启Hyper-v失败的原因

多数情况下,如果CPU本身支持Hyper-v技术,但在部署过程中总是失败,可以关注两个地方:

  • 检查是否开启Bios中的虚拟化选项为enable。一般该选项为Intel Virtual
    Technology。
  • 更新官方Bios程序至最新,碰到过开启了虚拟化,但是因为Bios版本过旧,Hyper-v角色依然无法安装。

虚拟处理器是你分配给一个个虚拟机的资源;你能分配多少个虚拟处理器,取决于访客/虚拟机操作系统。在这里,操作系统版本越新,功能就越强;所以Windows
2008/2008 R2能与四个虚拟处理器协同运行,而Windows Server
2003只能被分配一两个虚拟处理器。SUSE
Linux企业版、CentOS和红帽企业版Linux(它们都是得到支持的操作系统版本)最多可以被分配四个虚拟处理器。如果你在虚拟桌面基础架构(VDI)环境中运行客户机操作系统,Windows
7最多可以与四个虚拟处理器协同运行,Vista能看到两个虚拟处理器,Windows XP
SP3能看到两个虚拟处理器。这里有更详细的信息:。

考虑到虚拟机的更高限制时也是如此,如果你正在集群Hyper-V主机,你在一台主机上能够运行的虚拟机最大数量保持在384,但是用于集群的虚拟机总数限制在1000。将大内存用于虚拟机时也是这样,记住,Hyper-V主机可用的总内存是1TB,所以要根据具体情况规划你的虚拟机分配。

Hyper-V虚拟处理器

就因为你为某一个虚拟机分配了两个或四个虚拟处理器,并不是说你应该这么做。首先,由于跨处理器的通信,在任何多处理器系统中存在一定的开销——无论是物理处理器还是虚拟处理器。但是在较新的操作系统中开销比较低,所以Windows
2008 R2虚拟机使用四个虚拟处理器没什么问题,而Windows Server
2003可能需要进行测试,看看在你的特定环境下使用两个虚拟处理器有没有好处。其次,这完全取决于工作负载——有些应用程序是密集的多线程(想一想SQL
Server等类似应用),使用几个虚拟处理器比较好;而单线程应用程序或者只有几个线程的应用程序得到的好处并不大。

最新宣布的Windows Server
8中有了一些变化。尽管这方面还没有最终定论,但是预计Hyper-V会突然将虚拟处理器限制从4全CPU升级到16个CPU,这也让你能够给特定核心分配特定的工作负载。如果你有长期的计划,而且又有处理器密集的工作负载,你会想要考虑从现在起一年内这些会如何影响虚拟机分配。

分配原则

服务器虚拟化在企业和组织中的运营,牵扯到最多的一个问题就是:用户永远希望IT部门为其分配更多的硬件资源,而IT部门会考虑资源的集中整合分配,不愿意为其分配过量的资源。虚拟机的超量分配容易导致资源浪费,同时又可能拖慢其他位于相同硬件上的虚拟机。

假设某台硬件服务器是一台双路的服务器,拥有24颗逻辑处理器,每个用户希望申请的虚拟机是24颗虚拟处理器,那么可能只要有两个用户在全速运行,其他用户的体验就会大受影响,无法进行正常的使用了。

合理分配虚拟处理器,不建议超量分配虚拟机处理器主要是因为以下几个实施建议:

  • 并不是所有应用都需要多核处理器的支持,分配2核或16核心并无差别。例如基于Windows
    Server2003的文件共享服务器分配2个核心和分配8个核心,在使用效率上的差异微乎其微。
  • 为某台虚拟机分配较多的虚拟处理器,会使其在宏观上使用CPU资源时的排队时间更长,此时分配较少的虚拟处理器数量的虚拟机会因为排队时间更短,能够尽快的得到所需资源。
  • 当所有用户都在超量分配CPU资源时,无法进行有效的量化,在出现资源不足造成资源争夺时,无法保证最为重要的关键业务稳定运行。
  • 虚拟处理器的调整只能在虚拟机关机的状态下调整,希望当业务正式线上运行后再做灵活调整是不可取的,这种设计思路会带来服务中断。

另一个常见的误解是,为虚拟机分配一个或多个虚拟处理器与物理核心有关系。为虚拟机分配虚拟处理器其实更像为虚拟机分配一段预定的处理器时间,而虚拟机管理程序实际上把运行虚拟机的负担分摊到所有可用的处理器核心上。