利用QMP和QEMU虛擬機交互的幾種方式


QMP是一種基於JSON格式的傳輸協議,我們能利用它與一個QEMU虛擬機實例進行交互,例如查詢,更改虛擬機的狀態,獲取設備信息等等。下面是幾種創建QMP的方法以及對其它的一些基本命令的使用:

1、基於Telnet創建QMP

首先利用如下命令啟動一個QEMU虛擬機實例

qemu-system-x86_64 linux-0.2.img -qmp tcp:localhost:4444,server --monitor stdio

  

然后啟動Telnet連接localhost的4444端口

telnet localhost 4444

  

這時會在Telnet所在的目錄下顯示如下內容:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
{"QMP": {"version": {"qemu": {"micro": 0, "minor": 0, "major": 2}, "package": " (Debian 2.0.0+dfsg-2ubuntu1.21)"}, "capabilities": []}}

  

2、基於UNIX socket 創建QMP

依然先啟動一個QEMU虛擬機實例

qemu-system-x86_64 linux-0.2.img -qmp unix:qmp-sock,server

  其中qmp-sock文件會在命令執行之后自動在本地目錄創建,當然也可以指定一個sock文件

 

然后在qmp-sock所在目錄下,利用如下命令與QMP建立連接

nc -U qmp-sock

  

3、QMP基本命令

(1)在創建了QMP之后,在輸入其他命令之前,首先要輸入如下命令:

{ "execute": "qmp_capabilities" }

  

只有在返回下面的指令之后,我們才能使用其他命令:

{ "return": {}}

  

(2)查詢虛擬機狀態:

{ "execute": "query-status" }

  

當虛擬機正常運行時,會返回如下指令:

{"return": {"status": "running", "singlestep": false, "running": true}}

  

當虛擬機處於熱遷移的監聽狀態時,返回如下指令:

{"return": {"status": "inmigrate", "singlestep": false, "running": false}}

  

其他指令利用類似於上述的方式交互即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM