資源計量是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/
到這裏咱們完成了本章的所有實驗,經過老王的介紹相信你們對於資源計量,資源池,以及與羣集的配合會有新的思考,嚴格來講這是三個不一樣的功能,可是結合在一塊兒就能發揮出更好的效果,資源計量能夠針對於單機,主機所有,羣集,資源池虛擬機進行使用計量,資源池能夠針對虛擬資源進行彙總分析,實現冗餘和負載均衡,配合羣集,能夠實現資源計量羣集裏面的指定範圍虛擬機,經過資源池彙總羣集裏面指定範圍虛擬機的計量,但願將來這項功能能夠愈來愈實用,有更多的場景能夠用上,但願看到的朋友都能有本身的收穫