qmp简介

QMP(QEMU Machine Protocol)是用于控制QEMU虚拟机的协议,基于JSON格式,支持异步消息和能力协商。通过QMP,可以实现虚拟机的生命周期管理,如挂起、暂停、快照等操作。QMP连接可通过虚拟机启动时添加-qmp选项建立,后续可通过telnet接入。为了方便用户,QMP之上还有HMP(Human Monitor Protocol)作为其封装,提供更易读的指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QMP,即QEMU Machine Protocol,也就是qemu虚拟机协议,它是qemu的一部分,qmp是基于json格式的一整套协议,通过这套协议我们可以控制qemu虚拟机实例的整个生命周期,包括挂起、暂停、快照、查询、外设的热插拔等,以及最简单的查询,都可以通过qmp实现。

qmp的主要特征包括:

1)轻量、基于文本、指令格式易于解析,因为它是json格式的;

2)支持异步消息,主要指通过qmp发送给虚拟机的指令支持异步;

3)Capabilities Negotiation,主要指我们初次建立qmp连接时,进入了capabilities negotiation模式,这时我们不能发送任何指令,除了qmp_capabilities指令,发送了qmp_capabilitie指令,我们就退出了capabilities negotiation模式,进入了指令模式(command mode),这时我们可以发送qmp指令,如{ "execute": "query-status" },这样就可以查询虚拟机的状态。


那么该如何建立qmp连接呢,有多种方式可以建立qmp连接,接下来的文章我们会依次进行介绍这里我们介绍一种最简单的方式,只需要在虚拟机启动选项中加入-qmp选项,即可建立qmp连接

qemu-system-x86_64 /var/lib/libvirt/images/ubuntu.img -enable-kvm -m 2048 -smp 2 -vnc :1 <span style="color:#ff0000;">-qmp tcp:localhost:4444,server,nowait</span>

当虚拟机启动之后通过telnet即可连接qmp

$ telnet localhost 4444
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
{
    "QMP": {
        "version": {
            "qemu": {
                "micro": 50, 
                "minor": 6, 
                "major": 1
            }, 
            "package": ""
        }, 
        "capabilities": [
        ]
    }
}

初次连接qmp会显示greeting消息,这时我们处于capabilities negotiation模式,执行

{ "execute": "qmp_capabilities" }
会进入command模式,这时我们就可以发送各种指令查询、操作虚拟机。


qmp毕竟是基于json格式,还是不适合普通用户使用,因此出现了HMP,即human monitor protocol,它主要对qmp进行了封装,备后调用的还是qmp,只是让指令变得human可读,会在稍后的文章中介绍



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值