Windows Server 2016 Hyper-V提升虚拟机资源管理效率

日期: 2016-11-03 作者:Brien Posey翻译:张冀川 来源:TechTarget中国 英文

服务器虚拟化最棒的特性之一是降低硬件成本。并非将单台物理服务器指定给单个工作负载,而是在多个虚拟工作负载之间共享硬件资源。如果资源是被平均消耗的,那么资源共享方式非常有效。然而不成比例的资源消耗有可能会给众多工作负载带来负面影响。

使用Windows Server 2016 Hyper-V提供的功能,就不会存在这个问题了。 资源控制 理论上讲,单个虚拟机应该从不会消耗过多的硬件资源,以至于虚拟机消耗过多的资源,对运行在同一主机上的其他虚拟机造成破坏。毕竟有很多独立的hypervisor功能用于避免资源消耗失控。例如,存储QoS功能可以用于监控存储I/O使用。

类似地,动态内存使用可以用于限制一台虚……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

服务器虚拟化最棒的特性之一是降低硬件成本。并非将单台物理服务器指定给单个工作负载,而是在多个虚拟工作负载之间共享硬件资源。如果资源是被平均消耗的,那么资源共享方式非常有效。然而不成比例的资源消耗有可能会给众多工作负载带来负面影响。使用Windows Server 2016 Hyper-V提供的功能,就不会存在这个问题了。

资源控制

理论上讲,单个虚拟机应该从不会消耗过多的硬件资源,以至于虚拟机消耗过多的资源,对运行在同一主机上的其他虚拟机造成破坏。毕竟有很多独立的hypervisor功能用于避免资源消耗失控。例如,存储QoS功能可以用于监控存储I/O使用。类似地,动态内存使用可以用于限制一台虚拟机从不会消耗掉超过预先设置的内存值。

尽管hypervisor层面的控制应该能够避免虚拟机消耗太多的资源。但在一些实际应用场景中,虚拟机消耗过多的硬件资源可能会影响到其他虚拟机。例如,管理员可能忘记了启用某些可用的资源控制功能。

类似的情况是,虚拟机级别配置不合理可能会导致不合理的资源争用。例如,假定管理员希望将虚拟机上限内存值设置为4000MB,但不小心多输入了一个零,这样就会允许虚拟机消耗将近40GB的内存。

当然,疏忽或者虚拟机层面偶尔错误的资源设置不一定意味着虚拟机将具有破坏性。然而假定这样的一台虚拟机正在运行一个糟糕的应用,将该虚拟机可用的资源完全消耗掉了。更糟的是,需要考虑这样的一台虚拟机将会引发服务拒绝攻击。

主机资源保护

在研发Windows Server 2016 Hyper-V的过程中,微软开始意识到过度的资源消耗会威胁相邻的虚拟机,这样需要采取更好的保护策略以避免这类虚拟机产生破坏性。在公有云比如Azure中,这类控制必不可找。而在私有或混合云环境中,云供应商并没有对虚拟机内部运行的程序进行控制。

微软针对该问题的答案是提供了主机资源保护功能。主机资源保护被设计为避免虚拟机影响相邻虚拟机的性能。

目前,主机资源保护仅限于vCPU。如果hypervisor检测到特定虚拟机CPU调度过于频繁,将会给虚拟机分配更少的CPU资源,这样就确保了运行在该主机上的其他虚拟机继续获得充足的CPU资源。

尽管主机资源保护仅限于CPU,但考虑到微软以前引入到Hyper-V中的新功能,似乎该功能最终将会被扩展至对其他类型的硬件资源进行保护。

PowerShell cmdlets

主机资源保护默认是禁用的,但可以通过在Windows PowerShell使用Set-VMProcessorcmdlet cmdlet启用。完整的命令如下:

Set-VMProcessor -EnableHostResourceProtection $True

如果需要禁用主机资源保护,可以使用如下命令禁用该功能:

Set-VMProcessor -EnableHostResourceProtection $False

如果感觉对Set-VMProcessor cmdlet似曾相识,可能是因为在之前版本的Hyper-V中该命令就已经存在了。尽管主机资源保护功能是在Windows Server 2016 Hyper-V中才引入的,但Set-VMProcessor cmdlet一直支持对单个虚拟机的CPU资源进行限制。Set-VMProcessor可以被用于向单个虚拟机分配特定数量的虚拟处理器,也可以设置最大的CPU使用阈值,CPU预留值以及相对权重。

例如,假定管理员希望给一台名为DemoVM的虚拟机分配两个vCPU,为使事情变得有趣,我们同样假设管理员希望限制虚拟机使用50%的CPU资源,预留10%的CPU资源并将相对权重设置为100。那么应该使用如下命令:

Set-VMProcessor DemoVM -Count 2 -Reserve 10 -Maximum 50 -RelativeWeight 100

随便说一下,通过Hyper-V Manager同样可以进行上述设置。

该技术与启用Windows Server 2016 Hyper-V主机资源保护功能最主要的差异在于主机资源保护针对的是物理主机而不是虚拟机,而且不需要对CPU进行细粒度的配置。

翻译

张冀川
张冀川

TechTarget中国特约专家,任职于某国企信息中心,负责数据中心硬件基础设施及信息系统运维管理工作,对虚拟化及云计算技术有浓厚兴趣,并在工作中积极应用

相关推荐