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