应分层验证hyper-v集群状态:一查vmms、clussvc、winrm服务是否运行;二用get-cluster等命令确认节点与资源在线;三结合get-vm、get-clustergroup、get-vmreplication识别僵尸vm、脱机组及复制异常;四采集hyper-v性能计数器做趋势分析。
监控 hyper-v 集群状态,关键不是只看“有没有报错”,而是分层验证:底层服务是否就绪、虚拟机是否健康、复制是否同步、资源是否真实可用。powershell 是最直接、可批量、可自动化的手段。
一、确认集群基础服务运行正常
集群依赖多个核心服务协同工作,缺一不可:
-
vmms(Hyper-V 虚拟机管理服务):执行
Get-Service -Name vmms,Status 必须为 Running -
ClusSvc(故障转移群集服务):执行
Get-Service -Name ClusSvc,同样需为 Running -
WinRM(远程管理支持):执行
Test-WSMan,无异常即表示 PowerShell 远程管理通道通畅
二、检查集群节点与群集本身健康度
使用 FailoverClusters 模块命令,快速定位节点离线或仲裁异常:
-
Get-Cluster:查看集群名称、仲裁配置、当前状态(如 “Up” 或 “Partitioned”) -
Get-ClusterNode:列出所有节点,重点关注 State 列(应为 “Up”),NodeWeight 和 QuorumVote 是否启用 -
Get-ClusterResource | Where-Object {$_.State -ne 'Online'}:揪出所有未上线的资源(如 IP 地址、磁盘、网络名等)
三、掌握虚拟机实际运行与容错状态
不能只信“Running”图标——要结合高可用性配置和实时指标判断是否真可靠:
-
Get-VM | Select-Object Name, State, Uptime, CPUUsage, MemoryAssigned:筛选出长期空转(CPUUsage 持续 ≈0%、Uptime 极长但无网络/磁盘 I/O)的疑似“僵尸 VM” -
Get-ClusterGroup | Where-Object {$_.State -ne 'Online'} | Get-ClusterResource:查清哪些 VM 所在的群集组脱机,进而定位迁移失败或存储断连问题 - 对启用了复制的 VM,用
Get-VMReplication | Where-Object {$_.Health -ne 'Normal'}快速识别复制延迟、中断或警告状态
四、抓取关键性能计数器做趋势分析
单次快照不够,建议定时采集并比对基线。常用 Hyper-V 计数器前缀为 \Hyper-V*:
- CPU:
\Hyper-V Hypervisor Logical Processor(*)\% Total Run Time - 内存压力:
\Hyper-V Dynamic Memory VM(*)\Pressure - 存储延迟:
\Hyper-V Virtual Storage Device(*)\Avg. sec/Read和\Avg. sec/Write(持续 >20ms 需关注) - 网络丢包:
\Hyper-V Virtual Network Adapter(*)\Packets Outbound Errors/sec
可组合使用 Get-Counter 导出到 CSV,或配合 Task Scheduler 每5分钟记录一次,用于事后回溯。










