资源计量是Hyper-V 2012时新增的功能,严格来讲它应该是Hyper-V的功能,可是为何要和WSFC在一块儿说,由于老王发现资源计量和资源池能够和群集相整合,所以特意分享给你们
shell
资源计量是Hyper-V 2012开始原生自带的虚拟化资源使用收集技术,默认处于关闭状态,开启后能够帮助咱们收集各个虚拟机的CPU,内存,硬盘,网络消耗windows
Hyper-V资源计量典型的应用场景
网络
1.宿主机上面的托管了不少虚拟机,这些虚拟机可能被不一样的部门所使用,管理员须要确保每一个虚拟机使用符合的资源,不要影响到其余虚拟机,一方面能够经过资源计量监视,一方面能够经过QOS策略限制调整负载均衡
2.提供数据和接口,供计费系统调度,能够是Chargeback 或 Showback,在没有SCOM和SCSM的状况下也可以实现简单的计费管理ide
Hyper-V资源计量的技术特色性能
1.无图形化界面,能够经过powershell或API调用管理spa
2.使用全新的调用方式,相比之前使用性能计数器轮询的方式更节省资源
.net
3.能够被用于统计单个虚拟机或资源池3d
4.资源计量将会跟随虚拟机,不论虚拟机被迁移到那个主机,计量数据存储在虚拟机配置XML文件日志
5.支持对于虚拟机或资源池执行reset从新计量
6.对于性能消耗低,仅在输出报告时会有一些磁盘和CPU活动
7.不是虚拟化监控解决方案,只会收集有限的参数用于计量,监控仍需配合WMI性能计数器与事件日志使用,如但愿执行更深刻的虚拟化监控,建议使用SCVMM,SCOM
Hyper-V资源计量能够收集的数据
1.平均 CPU 使用率,在必定时间内以兆赫为单位进行测量。
2. 平均物理内存使用量,以兆字节为单位进行测量。
3. 最小内存使用量(物理内存的最低数量)。
4. 最大内存使用量(物理内存的最高数量)。
5. 分配给虚拟机的最大磁盘空间容量。
6. 针对虚拟网络适配器的传入网络总流量,以兆字节为单位进行测量。
7. 针对虚拟网络适配器的传出网络总流量,以兆字节为单位进行测量。
其中须要注意的地方
最小内存使用量仅记录VM开机状态的数据
平均内存使用量记录VM开机以及VM关机的数据,以提供虚拟机在计费周期内使用内存的准确视图
CPU使用量使用转换后的MHZ计量 ,不使用%,微软认为若是报告百分比,虚拟机移动到具备不一样处理能力的主机将失去意义
磁盘计量总值将显示当前分配的容量,而非当前实际使用,所以对于动态磁盘,会显示分配的磁盘最大数值
磁盘计量总值部分会包括快照大小
磁盘计量不包括直通磁盘,DAS磁盘,ISCSI,虚拟光纤通道磁盘
网络计量经过在虚拟机网络适配器上设置ACL进行计量,ACL包括方向,IP,动做,开启资源计量后动做为计量
Hyper-V资源计量自带Command
启用/禁用资源计量
Get-VMResourceMetering
Disable-VMResourceMetering
配置用于计量的VM资源
Set-VMProcessor
Set-VMHardDiskDrive
Set-VMMemory
Set -VMNetworkAdapter
Add-VMNetworkAdapterAcl
Remove-VMNetworkAdapterAcl
建立/删除资源池
New-VMResourcePool
Set-VMResourcePool
Remove-VMResourcePool
测量VM和池
Measure-VM
Measure-VMResourcePool
Reset-VMResourceMetering
以上为你们简单介绍了下Hyper-V资源计量的功能,帮助你们复习或了解下这个概念,关于Hyper-V资源计量个人好朋友徐庭写了很好的单机实践博客,这方面老王再也不重复,咱们将主要实践后面资源计量,资源池与群集的整合
接下来咱们再看下Hyper-V资源池的概念,此资源池非彼资源池,在目前微软的企业级生态圈中hyper-v资源池的概念主要被用于集合收集资源计量,或资源的冗余与负载均衡,针对于资源的冗余与负载均衡主要体现于虚拟交换机
根资源池
默认状况下在hyper-v中,全部资源都属于一个根资源池,图形界面没法看到,如单首创建资源池,根资源池则会显示出来。
根资源池默认处于禁用状态,即不会发挥做用
当咱们针对于虚拟机启用资源计量时,根资源池被启用
根资源池是默认的集合,全部主机托管的虚拟机资源都在里面,用于汇总显示资源计量数据
资源池
建立资源池后能够经过资源计量汇总显示某个资源池的总体使用状况
用户自定义建立的池将会以根资源池的子集存在,但能够有独立的配置
提供虚拟交换机资源池的冗余及负载均衡,实现虚拟机接入资源池,而非单个虚拟交换机,单个虚拟交换机故障,不会影响虚拟机通讯
虚拟交换机资源池能够实现跨主机,若是不一样主机资源池名称一致,则能够执行迁移
默认状况下虚拟机属于根资源池,若是须要加入自定义资源池需关机后加入
同一主机不一样资源类型资源池名称能够一致
针对于VHD资源池能够经过在不一样主机建立不一样路径,但相同名称的VHD资源池,以实现虚拟机迁移过去自动更新存储路径
资源计量,资源池,与WSFC的整合
基础打好后接下来该来到咱们的主戏了,若是这两项功能和群集在一块儿会怎么样?
事实上老王相信若是企业部署了多台虚拟化主机,则必定会考虑部署高可用群集,以实现业务连续性,避免单机故障影响上面的虚拟机,那么若是这时候若是咱们须要资源计量应该如何去使用,刚好,群集虚拟机配置文件是存放共享区域,而咱们虚拟机资源计量的数据也是存在虚拟机配置文件,所以对于一个群集的虚拟机,咱们仅须要在群集层面开启资源计量,不论虚拟机迁移到任何一个节点,都不会影响到资源计量,针对于资源计量的层面也从单机上升至整个群集
实验环境介绍
AD&北京ISCSI
Lan:10.0.0.2 255.0.0.0
ISCSI:30.0.0.2 255.0.0.0
12HV01
MGMT: 10.0.0.50 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.50 255.0.0.0
Heart:18.0.0.50 255.0.0.0
12HV02
MGMT: 10.0.0.51 255.0.0.0 DNS 10.0.0.100
ISCSI:30.0.0.51 255.0.0.0
Heart:18.0.0.51 255.0.0.0
当前群集承载虚拟机三台,虚拟机处于关机状态,本文使用12R2群集为例,该功能在16上面并没有变化
实验1.演示群集下开启管理资源计量
群集自己并无提供资源计量的功能,老王这里找到一个经过Powershell function实现的方法,下载地址以下
ClusterResourcePoolFunctions.PS1
打开以后能够在ISE中看到function的实现,加载function后才可使用ClusterResourcePool命令
#获取群集计量状态
Get-ClusterResourcePool -Cluster hvcluster
#开启群集虚拟机资源计量
这里咱们能够经过VMFilter配合命令来控制资源计量,例如咱们能够针对于虚拟机以国家,部门,用途命名,开启资源计量仅针对一个命名范围内开启
Enable-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
#开启虚拟机
Start-VM -ComputerName 12HV01 -Name OGIT-SPDB
#获取群集资源池计量状态,能够看到当前部分已经为True,全部资源属于根存储池,由根资源池负责汇总数据
#获取群集资源计量报告
Measure-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
这里咱们一样能够利用VMFilter命令仅获取群集某一个逻辑范围内的计量数据,能够看到这里只有SPDB的数据,由于开启资源计量后其它虚拟机还没开机过一次,一旦其它虚拟机开机后也会产生数据
若是咱们在命令后面加上format-list参数,则能够显示出资源计量所收集的全部数据,能够看到,因为咱们使用了function,所以会显示出群集全部节点开启资源计量虚拟机的数据
实验2.演示群集下建立资源池,以配合资源计量使用
#建立群集资源池
New-ClusterResourcePool -Cluster hvcluster -ResourcePool OGITPOOL
#获取虚拟机所属资源池状态
Get-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT* | Format-Table
#设置虚拟机资源池为新建立群集资源池,需在虚拟机关机状态下执行
Set-ClusterResourcePoolVM -Cluster hvcluster -ResourcePool OGITPOOL -VMFilter OGIT*
#再次获取群集虚拟机资源池状态
Get-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT* | Format-Table
#开启资源池内范围内虚拟机
Start-VM -ComputerName (Get-ClusterNode -Cluster hvcluster).name -Name OGIT*
#获取群集资源池资源计量报告,如今咱们能够经过资源池来汇总显示群集里面必定范围内虚拟机的计量数据,若是群集各节点中有不少虚拟机,如今咱们能够经过这种方式汇总出来咱们须要的计量数据
Measure-ClusterResourcePool -Cluster hvcluster -poolname -OGITPOOL
实验3. 重置虚拟机,资源池资源计量数据
#关闭资源池范围内虚拟机,事实上若是不关机也能够执行重置操做,可是在线重置以后数据会马上增长,若是为了从新初始化数据,建议仍是关机执行操做
Stop-VM -ComputerName (Get-ClusterNode -Cluster hvcluster).name -Name OGIT*
#获取群集资源池计量报告
measure-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
#重置单台虚拟机计量数据
Reset-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT-SPDB
#重置整个群集资源池计量数据,重置完成后再次开机时虚拟机将从新计量
Reset-ClusterResourcePool -Cluster hvcluster -ResourcePool OGITPOOL
实验4.关闭群集虚拟机资源计量,群集资源池
#将虚拟机从自定义资源池移除,返回根资源池(需在虚拟机关机状态下执行)
Set-ClusterResourcePoolVM -Cluster hvcluster -ResourcePool "Primordial" -VMFilter OGIT*
#关闭群集虚拟机资源计量
Disable-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*
#删除自定义资源池(需确保资源池下无内容后执行)
Remove-ClusterResourcePool -Cluster hvcluster -ResourcePool OGITPOOL
#获取群集虚拟机计量开启状态
Get-ClusterResourcePool -Cluster hvcluster
#获取虚拟机资源池状态
Get-ClusterResourcePoolVM -Cluster hvcluster -VMFilter OGIT*| Format-Table * -AutoSize
参考连接:http://www.hypervrockstar.com/dd_resource-metering/
到这里咱们完成了本章的所有实验,经过老王的介绍相信你们对于资源计量,资源池,以及与群集的配合会有新的思考,严格来讲这是三个不一样的功能,可是结合在一块儿就能发挥出更好的效果,资源计量能够针对于单机,主机所有,群集,资源池虚拟机进行使用计量,资源池能够针对虚拟资源进行汇总分析,实现冗余和负载均衡,配合群集,能够实现资源计量群集里面的指定范围虚拟机,经过资源池汇总群集里面指定范围虚拟机的计量,但愿将来这项功能能够愈来愈实用,有更多的场景能够用上,但愿看到的朋友都能有本身的收获