基于QMP实现对qemu虚拟机进行交互

本文详解QMP,包含qmp、hmp、qemu-guest-agent的介绍、工作原理、配置方法、范例

小慢哥的原创文章,欢迎转载

目录

▪ QMP介绍

▪ QMP语法

▪ 单独使用qemu,启用QMP

▪ 通过libvirt启动qemu,启用QMP

▪ qemu-guest-agent(qemu-ga)

▪ 官方参考文档

QMP介绍

qemu对外提供了一个socket接口,称为qemu monitor,通过该接口,可以对虚拟机实例的整个生命周期进行管理,主要有如下功能

▷ 状态查看、变更

▷ 设备查看、变更

▷ 性能查看、限制

▷ 在线迁移

▷ 数据备份

▷ 访问内部操作系统

通过该socket接口传递交互的协议是qmp,全称是qemu monitor protocol,这是基于json格式的协议

在继续往下讲之前,需要先了解qemu、kvm、libvirt之间的区别(因为有很多童鞋对这三者的理解是混乱的)

▷ qemu:虚拟机仿真器。通过软件模拟出cpu、内存、磁盘、主板、网卡等设备

▷ kvm:高性能的cpu仿真器。由于软件模拟的cpu性能很差,因此出现了kvm,这是通过硬件与内核的支持实现接近native性能的cpu仿真器,可以理解为虚拟机里的cpu任务直接交给物理机cpu完成。

▷ libvirt:虚拟机管理平台。能纳管qemu、lxc、esx等虚拟化软件,通过编写xml实现对虚拟机、存储、网络等进行配置和管理

上面只描述最核心的功能,另有一些高级功能,以及互相重叠的功能在这里不做描述,否则容易混淆

QMP语法

# 不带参数的指令
{ "execute" : "XXX" }

# 带参数的指令
{ "execute" : "XXX", "arguments" : { ... } }

单独使用qemu,启用QMP

启动qemu虚拟机

# qemu monitor采用tcp方式,监听在127.0.0.1上,端口为4444
/usr/libexec/qemu-kvm -qmp tcp:127.0.0.1:4444,server,nowait

# qemu monitor采用unix socket,socket文件生成于/opt/qmp.socket
/usr/libexec/qemu-kvm -qmp unix:/opt/qmp.socket,server,nowait

连接qemu monitor

# tcp可以通过telnet进行连接,方法如下
> telnet 127.0.0.1
  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GUNSPowerlifting

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值