首页/云/云平台与虚拟化速查/透传 QEMU monitor 命令
虚拟化操作94 条

透传 QEMU monitor 命令

高级排障可直接向 QEMU monitor 发指令:virsh qemu-monitor-command 支持 JSON(QMP)与 --hmp 文本两种形态,用于查看设备、块层与内存状态。

云平台与虚拟化速查云更新于 2026-10-13

透传 QEMU monitor 是什么

virsh qemu-monitor-command 把指令直接透传到 QEMU 的 monitor:JSON 形态对应 QMP,--hmp 形态对应人可读的 HMP 文本。它用来查看 libvirt 高层命令不暴露的细节,例如块层 delta 链状态、内存气球当前值、PCI 设备映射,属于高级排障手段。

基本信息

QMP 形态virsh qemu-monitor-command vm1 --pretty '{"execute":"info block"}'
HMP 形态virsh qemu-monitor-command vm1 --hmp 'info version'
常用查询info block / info cpus / info pci / info balloon
输出特点原始 QEMU 状态,未经 libvirt 加工
权限需要对域有控制权限,无需改动虚机配置
使用原则以只读查询为主,勿在生产随意执行变更类指令

典型使用场景

  • 查看块设备与 delta 链,定位快照与磁盘状态问题
  • 核对 balloon 当前值与内存回收是否真的生效
  • 查看 PCI 设备与地址映射,核对直通设备
  • 对比 libvirt 记录状态与 QEMU 实际状态是否一致
  • 官方文档只给出 QMP / HMP 方案时做临时排障

查看块设备与运行时状态

查看块设备与运行时状态
virsh qemu-monitor-command vm1 --pretty '{"execute":"info block"}'   # 块设备与后端
virsh qemu-monitor-command vm1 --hmp 'info cpus'      # vCPU 运行状态
virsh qemu-monitor-command vm1 --hmp 'info balloon'   # 气球当前值
virsh qemu-monitor-command vm1 --hmp 'info pci'       # PCI 设备列表
virsh qemu-monitor-command vm1 --pretty '{"execute":"query-block"}' # QMP 原生查询

常用查询指令

指令看什么典型用途
info block块设备与后端文件排查快照链与磁盘状态
info cpusvCPU 状态核对在线变更是否生效
info balloon气球当前值确认内存回收是否生效
info pciPCI 设备与地址直通与设备映射核对
info versionQEMU 版本问题复现时记录环境信息
QMP / HMP 指令绕过 libvirt 管理层:变更类操作可能让 libvirt 记录与实际状态不一致,后续用 virsh 操作会报错或出现预期外行为,生产上以只读查询为主。
排障结束后把用到的指令与输出一起留档:这类输出高度依赖环境(版本、设备名、后端路径都会变),下次复现时能直接对照,省掉重复试错。给别人复核时也请一并给出虚机名与命令原文。

易错点

  • 用 HMP 指令做设备增删:绕过 libvirt 后定义与实际状态脱节
  • 把 monitor 输出当权威状态直接改配置,忽略 libvirt 才是定义的管理方
  • 在生产虚机上执行不熟悉的变更类指令,缺少回退手段
  • 排障输出没留档,问题复现时又要重新收集环境信息
  • 把 HMP 输出手工抄进域 XML:两边字段含义不同,改完定义直接校验失败
  • 在不了解语义时执行 stop、reset 这类 HMP 指令,等于对生产虚机做硬操作
  • 虚机名写错就执行指令,查的是另一台机器,结论把后续排查带到错误方向

数据来源与参考

  • virsh 手册:qemu-monitor-command
  • QEMU QMP 参考文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌