最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux 环境下如何监控 KVM 虚拟机的状态
时间:2026-07-08 09:42:52 编辑:袖梨 来源:一聚教程网
virsh list --all 是查看所有虚拟机状态的最基础可靠方法,需结合宿主机资源、虚拟化层行为和客户机内部表现三层分析:先用 virsh list --all、dominfo、domstate 查状态;再通过 ps 与 top 关联 PID 和 VM 名,或用 dommemstat 查内存;接着用 perf kvm stat、numastat、vmstat 挖掘虚拟化层瓶颈;最后进客户机用 mpstat、iostat、free、pgmajfault 验证真实负载。
直接用 virsh list --all 就能看到所有虚拟机当前状态,这是最基础也最可靠的起点。但真正要掌握运行质量,不能只看“running”或“shut off”,得结合宿主机资源、虚拟化层行为和客户机内部表现三层来看。
查状态:先看清哪些在跑、哪些停了
执行以下命令获取完整清单:
- virsh list --all:列出全部虚拟机(含关机、暂停、崩溃等状态)
- virsh dominfo <vm-name>:查看单个虚拟机详细信息,包括 UUID、vCPU 数、内存分配、启动时间、是否启用 balloon driver 等
- virsh domstate <vm-name>:只输出状态字符串(如 running、paused、crashed),适合脚本调用
看资源:别只盯 top 里的 qemu-kvm 进程
单独看 top 显示的 qemu-kvm 进程,只能知道 CPU/内存占用高,但不知道是哪个虚拟机——必须把进程 PID 和虚拟机名关联起来:
- 用 ps aux | grep qemu-kvm | grep -v vhost- 查出所有 VM 对应的 PID 和名称(virsh 用 name 管理,不是 PID)
- 写个简单脚本,每秒同步 top -bn1 和 ps 输出,把 PID 映射到 VM 名,就能实时看到每个虚拟机的 CPU%、内存 RES、运行时长
- 更稳的做法是用 virsh dommemstat <vm-name> 获取实际内存使用(actual/minimum/maximum),比 ps 的 RES 更准确,尤其启用了内存气球时
挖深层:识别虚拟化层瓶颈信号
很多卡顿不是客户机里程序慢,而是 KVM 调度或 I/O 模拟出了问题:
- 装 perf 后运行 perf kvm stat live,重点看 PAUSE_INSTRUCTION 占比——偏高说明 vCPU 被频繁抢占,需检查 vCPU 数量、绑定策略或宿主机负载
- 运行 numastat -c qemu-kvm,确认 VM 内存是否集中在同一 NUMA 节点;跨节点访问会拖慢性能
- 查 vmstat 1 的 r(就绪队列)、cs(上下文切换)、wa(I/O 等待)三列:r > 物理核数、cs > 50000、wa > 20%,都指向不同层级的瓶颈
进客户机:验证真实负载来源
宿主机一切正常,但业务仍慢?必须登录客户机查:
- 用 mpstat -P ALL 1 看每个 vCPU 利用率,是否存在某核打满而其他空闲——这是调度不均或应用线程绑核不当的典型迹象
- 用 iostat -x 1 观察 %util 和 await,判断磁盘是否真饱和,还是后端存储响应延迟高
- 别依赖 htop 默认视图;建议用 free -h 看 available 内存,比 htop 的内存条更准;用 cat /proc/vmstat | grep pgmajfault 查缺页次数,持续上升说明内存紧张或 swap 激活
相关文章
- 如何登录QQ邮箱网页版 07-08
- 鄂汇办app如何重新注册二级建造师 07-08
- Soul私信功能异常如何解决 07-08
- 如何在火绒安全软件中进行右键管理菜单设置 07-08
- 智慧中小学课程教学如何删除 07-08
- 如何登录邮箱gmail 07-08