




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
基于QMP實(shí)現(xiàn)對qemu虛擬機(jī)進(jìn)行交互本文詳解QMP,包含qmp、hmp、qemu-guest-agent的介紹、工作原理、配置方法、范例目錄?QMP介紹
?QMP語法
?單獨(dú)使用qemu,啟用QMP
?通過libvirt啟動qemu,啟用QMP
?qemu-guest-agent(qemu-ga)
?官方參考文檔QMP介紹qemu對外提供了一個socket接口,稱為qemumonitor,通過該接口,可以對虛擬機(jī)實(shí)例的整個生命周期進(jìn)行管理,主要有如下功能?狀態(tài)查看、變更
?設(shè)備查看、變更
?性能查看、限制
?在線遷移
?數(shù)據(jù)備份
?訪問內(nèi)部操作系統(tǒng)通過該socket接口傳遞交互的協(xié)議是qmp,全稱是qemumonitorprotocol,這是基于json格式的協(xié)議在繼續(xù)往下講之前,需要先了解qemu、kvm、libvirt之間的區(qū)別(因?yàn)橛泻芏嗤瑢@三者的理解是混亂的)?qemu:虛擬機(jī)仿真器。通過軟件模擬出cpu、內(nèi)存、磁盤、主板、網(wǎng)卡等設(shè)備
?kvm:高性能的cpu仿真器。由于軟件模擬的cpu性能很差,因此出現(xiàn)了kvm,這是通過硬件與內(nèi)核的支持實(shí)現(xiàn)接近native性能的cpu仿真器,可以理解為虛擬機(jī)里的cpu任務(wù)直接交給物理機(jī)cpu完成。
?libvirt:虛擬機(jī)管理平臺。能納管qemu、lxc、esx等虛擬化軟件,通過編寫xml實(shí)現(xiàn)對虛擬機(jī)、存儲、網(wǎng)絡(luò)等進(jìn)行配置和管理上面只描述最核心的功能,另有一些高級功能,以及互相重疊的功能在這里不做描述,否則容易混淆QMP語法#不帶參數(shù)的指令{"execute":"XXX"}#帶參數(shù)的指令{"execute":"XXX","arguments":{...}}單獨(dú)使用qemu,啟用QMP啟動qemu虛擬機(jī)#qemumonitor采用tcp方式,監(jiān)聽在上,端口為4444/usr/libexec/qemu-kvm-qmptcp::4444,server,nowait#qemumonitor采用unixsocket,socket文件生成于/opt/qmp.socket/usr/libexec/qemu-kvm-qmpunix:/opt/qmp.socket,server,nowait連接qemumonitor#tcp可以通過telnet進(jìn)行連接,方法如下>telnet4444Trying...Connectedto.Escapecharacteris'^]'.{"QMP":{"version":{"qemu":{"micro":0,"minor":12,"major":2},"package":"qemu-kvm-ev-2.12.0-18.el7_6.1.1"},"capabilities":[]}}#unixsocket可以通過nc-U進(jìn)行連接,方法如下>nc-Uqmp.socket{"QMP":{"version":{"qemu":{"micro":0,"minor":12,"major":2},"package":"qemu-kvm-ev-2.12.0-18.el7_6.1.1"},"capabilities":[]}}按照上面執(zhí)行完命令后,不會退出而是繼續(xù)等待輸入,但這個時候還無法使用,接著,需要輸入一條qmp指令才可以{"execute":"qmp_capabilities"}此時屏幕會輸出以下內(nèi)容,表示從"capabilitiesnegotiation模式"進(jìn)入了"command"模式{"return":{}}接下來,就可以執(zhí)行qmp的指令了,qmp指令非常多,由于篇幅有限,這里僅舉幾個例子(更多內(nèi)容請參考官方文檔,本文最后附上網(wǎng)址)#查看支持哪些qmp指令{"execute":"query-commands"}#虛擬機(jī)狀態(tài){"execute":"query-status"}#虛擬機(jī)暫停{"execute":"stop"}#磁盤查看{"execute":"query-block"}#磁盤在線插入{"execute":"blockdev-add","arguments":{"driver":"qcow2","node-name":"drive-virtio-disk1","file":{"driver":"file","filename":"/opt/data.qcow2"}}}{"execute":"device_add","arguments":{"driver":"virtio-blk-pci","drive":"drive-virtio-disk1"}}#磁盤完整備份{"execute":"drive-backup","arguments":{"device":"drive-virtio-disk0","sync":"full","target":"/opt/backuptest/fullbackup.img"}}除了使用telnet、nc從外部連接,還可以在qemu啟動時候進(jìn)入一個交互的cli界面,直接輸入指令,只不過這個時候輸入的是hmp(humanmonitorprotocol),而不是qmp。hmp簡化了qmp的使用,但實(shí)際在底層依然是轉(zhuǎn)化為qmp進(jìn)行操作的,配置方法如下/usr/libexec/qemu-kvm-qmptcp::4444,server,nowait-monitorstdio此時會出現(xiàn)交互界面,輸入help,就可以看到hmp支持的所有命令(qemu)help使用hmp不需要輸入類似qmp的{"execute":"qmp_capabilities"}這里列出幾個范例#直接輸入info回車,可以看到所有查詢類的指令使用方法(qemu)info#查看塊設(shè)備www.f-1.cc(qemu)infoblock#在線增加磁盤(qemu)drive_add0file=/opt/data.qcow2,format=qcow2,id=drive-virtio-disk1,if=none(qemu)device_addvirtio-blk-pci,scsi=off,drive=drive-virtio-disk1通過libvirt啟動qemu,啟用QMP有2種方法:1.xml里不做任何額外配置,默認(rèn)就會啟用QMP,但通過這種方法啟用的QMP,只能通過libvirt接口(比如virsh命令或libvirtapi)來進(jìn)行QMP指令的輸入,而不能通過telnet、nc之類的,因?yàn)槟J(rèn)啟用的QMP,只會生成unixsocket(位于/var/lib/libvirt/qemu/domain-xx-DOMAIN/monitor.sock),而該socket被libvirtd始終連接占用著。此時通過psaux命令可以看到qemu進(jìn)程參數(shù),和之前有點(diǎn)不太一樣,不是-qmp,而是如下-chardevsocket,id=charmonitor,fd=36,server,nowait\-monchardev=charmonitor,id=monitor,mode=controlqemu命令參數(shù)支持2種方法配置qmp,即-qmp和-mon這里通過virsh做個簡單示范virshqemu-monitor-commandDOMAIN--pretty'{"execute":"query-block"}'使用--pretty是為了讓json的輸出具有換行縮進(jìn)的格式化效果,而不是打印在一行里
不需要在執(zhí)行其他指令前執(zhí)行{"execute":"qmp_capabilities"}2.在xml里額外增加2段配置,注意看下面這個xml的第一行,需要增加一個xmlns:qemu,另外在<domain>里增加<qemu:command><domaintype='kvm'xmlns:qemu='/schemas/domain/qemu/1.0'>...<devices>...</devices><qemu:commandline><qemu:argvalue='-qmp'/><qemu:argvalue='unix:/tmp/qmp-sock,server,nowait'/></qemu:commandline></domain>接著通過libvirt啟動qemu(比如virshstartxxx),就創(chuàng)建了2個qmp通道,一個是libvirt默認(rèn)創(chuàng)建的,可以依然使用libvirt接口來執(zhí)行QMP指令,另一個就是自定義的qmp,可以通過上面提到的nc來使用nc-U/tmp/qmp-socklibvirt也支持hmp:virshqemu-monitor-commandDOMAIN--hmp'infoblock'qemu-guest-agent(qemu-ga)通過qmp還可以對虛擬機(jī)內(nèi)的操作系統(tǒng)進(jìn)行RPC操作,其原理是:1.先在xml里配置channel段,然后啟動虛擬機(jī),會在宿主機(jī)上生成一個unixsocket,同時在vm里生成一個字符設(shè)備,生成的unixsocket和字符設(shè)備可以理解為一個channel隧道的兩端
2.虛擬機(jī)里要啟動qemu-guest-agent守護(hù)進(jìn)程,該守護(hù)進(jìn)程會監(jiān)聽字符設(shè)備
3.然后可以在宿主機(jī)上將虛擬機(jī)里的qemu-guest-agent所支持的RPC指令經(jīng)過channel發(fā)送到虛擬機(jī)里,虛擬機(jī)里的qemu-guest-agent從字符設(shè)備收到數(shù)據(jù)后,執(zhí)行指令,比如讀寫文件、修改密碼等等若要使用qemu-guest-agent需要滿足以下條件1.xml里配置channel,范例:<domaintype='kvm'>...<devices>...<channeltype='unix'><sourcemode='bind'path='/tmp/channel.sock'/><targettype='virtio'name='org.qemu.guest_agent.0'/></channel></devices></domain>注意,path可以自定義,但name需要保持org.qemu.guest_agent.0,因?yàn)檫@會影響虛擬機(jī)里字符設(shè)備的文件名,而虛擬機(jī)里的qemu-guest-agent服務(wù)默認(rèn)讀取的是對應(yīng)org.qemu.guest_agent.0的字符設(shè)備,如果改了name,那么qemu-guest-agent的配置文件也要跟著改,改成對應(yīng)name的路徑2.虛擬機(jī)內(nèi)的操作系統(tǒng)內(nèi)核需要支持(linux、windows均支持)3.虛擬機(jī)里要安裝并啟動qemu-ga的服務(wù)(比如centos可以yuminstallqemu-ga&&systemctlstartqemu-guest-agent,windows通過導(dǎo)入virtio-win的iso,該iso里包含有qemu-ga程序)當(dāng)按照上述配置好后,可以在宿主機(jī)上進(jìn)行RPC操作#測試虛擬機(jī)里的qemu-guest-agent是否可用virshqemu-agent-commandDOMAIN--pretty'{"execute":"guest-ping"}'#查看支持的qemu-guest-agent指令virshqemu-agent-commandDOMAIN--pretty'{"execute":"guest-info"}'#獲得網(wǎng)卡信息virshqemu-agent-commandDOMAIN--pretty'{"execute":"guest-network-get-interfaces"}'#執(zhí)行命令,這是異步的,第一步會返回一個pid,假設(shè)為797,在第二步需要帶上這個pidvirshqemu-age
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西農(nóng)業(yè)大學(xué)南昌商學(xué)院《電視欄目創(chuàng)意與策劃》2023-2024學(xué)年第一學(xué)期期末試卷
- 公共交通行業(yè)服務(wù)質(zhì)量評價制度
- 公共交通車輛維修質(zhì)量管理制度
- 工作責(zé)任追究制度
- 新疆魚類制品種類及食用情況調(diào)查問卷
- 關(guān)于聯(lián)耕聯(lián)種生產(chǎn)方式推行的民意調(diào)查
- 農(nóng)村暗室改造方案范本
- 2025年農(nóng)林牧漁行業(yè)現(xiàn)狀分析:國家對農(nóng)林牧漁行業(yè)政策支持力度不斷加大
- 無機(jī)墻體保溫施工方案
- 廣東省深圳實(shí)驗(yàn)學(xué)校高中園2024-2025學(xué)年高二上學(xué)期第三階段考試數(shù)學(xué)試題(解析版)
- 《電力建設(shè)施工技術(shù)規(guī)范 第2部分:鍋爐機(jī)組》DLT 5190.2
- 供水管網(wǎng)搶修管理課件
- 微信公眾號總結(jié)報告
- 制定售后服務(wù)績效考評標(biāo)準(zhǔn)與方法
- 正確認(rèn)識人的本質(zhì) (修改版)
- 2023年北京師范大學(xué)珠海分校招聘考試真題
- 2016-2023年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年考點(diǎn)試題甄選合集含答案解析
- 高原健康呼吸用氧 通用技術(shù)指南
- 中醫(yī)內(nèi)科學(xué)-咳嗽課件
- 2022管理學(xué)試題庫(馬工程)
- 光儲充車棚技術(shù)方案設(shè)計方案
評論
0/150
提交評論