电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

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

7页
  • 卖家[上传人]:m****
  • 文档编号:69974821
  • 上传时间:2019-01-15
  • 文档格式:DOCX
  • 文档大小:23.21KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、基于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仿真器,可以理解

      2、为虚拟机里的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 444

      3、4Trying 127.0.0.1.Connected to 127.0.0.1.Escape character is .QMP: version: qemu: micro: 0, minor: 12, major: 2, package: qemu-kvm-ev-2.12.0-18.el7_6.1.1, capabilities: # unix socket可以通过nc -U进行连接,方法如下 nc -U qmp.socketQMP: version: qemu: micro: 0, minor: 12, major: 2, package: qemu-kvm-ev-2.12.0-18.el7_6.1.1, capabilities: 按照上面执行完命令后,不会退出而是继续等待输入,但这个时候还无法使用,接着,需要输入一条qmp指令才可以 execute : qmp_capabilities 此时屏幕会输出以下内容,表示从capabilities negotiation模式进入了command模式return: 接下来,就可以执行qmp的指令了,qmp指令非常多,由于篇幅有限,这里

      4、仅举几个例子(更多内容请参考官方文档,本文最后附上网址)# 查看支持哪些qmp指令 execute: query-commands # 虚拟机状态 execute: query-status # 虚拟机暂停 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 除了使用tel

      5、net、nc从外部连接,还可以在qemu启动时候进入一个交互的cli界面,直接输入指令,只不过这个时候输入的是hmp(human monitor protocol),而不是qmp。hmp简化了qmp的使用,但实际在底层依然是转化为qmp进行操作的,配置方法如下/usr/libexec/qemu-kvm -qmp tcp:127.0.0.1:4444,server,nowait -monitor stdio此时会出现交互界面,输入help,就可以看到hmp支持的所有命令(qemu) help使用hmp不需要输入类似qmp的 execute : qmp_capabilities 这里列出几个范例# 直接输入info回车,可以看到所有查询类的指令使用方法(qemu) info# 查看块设备www.f-1.cc(qemu) info block# 在线增加磁盘(qemu) drive_add 0 file=/opt/data.qcow2,format=qcow2,id=drive-virtio-disk1,if=none(qemu) device_add virtio-blk-pci,scsi

      6、=off,drive=drive-virtio-disk1通过libvirt启动qemu,启用QMP有2种方法:1. xml里不做任何额外配置,默认就会启用QMP,但通过这种方法启用的QMP,只能通过libvirt接口(比如virsh命令或libvirt api)来进行QMP指令的输入,而不能通过telnet、nc之类的,因为默认启用的QMP,只会生成unix socket(位于/var/lib/libvirt/qemu/domain-xx-DOMAIN/monitor.sock),而该socket被libvirtd始终连接占用着。此时通过ps aux命令可以看到qemu进程参数,和之前有点不太一样,不是-qmp,而是如下-chardev socket,id=charmonitor,fd=36,server,nowait -mon chardev=charmonitor,id=monitor,mode=controlqemu命令参数支持2种方法配置qmp,即-qmp和-mon这里通过virsh做个简单示范virsh qemu-monitor-command DOMAIN -pretty

      7、 execute: query-block 使用-pretty是为了让json的输出具有换行缩进的格式化效果,而不是打印在一行里不需要在执行其他指令前执行 execute : qmp_capabilities 2. 在xml里额外增加2段配置,注意看下面这个xml的第一行,需要增加一个xmlns:qemu,另外在里增加 . . 接着通过libvirt启动qemu(比如virsh start xxx),就创建了2个qmp通道,一个是libvirt默认创建的,可以依然使用libvirt接口来执行QMP指令,另一个就是自定义的qmp,可以通过上面提到的nc来使用nc -U /tmp/qmp-socklibvirt也支持hmp:virsh qemu-monitor-command DOMAIN -hmp info blockqemu-guest-agent(qemu-ga)通过qmp还可以对虚拟机内的操作系统进行RPC操作,其原理是:1. 先在xml里配置channel段,然后启动虚拟机,会在宿主机上生成一个unix socket,同时在vm里生成一个字符设备,生成的unix socket和字

      8、符设备可以理解为一个channel隧道的两端2. 虚拟机里要启动qemu-guest-agent守护进程,该守护进程会监听字符设备3. 然后可以在宿主机上将虚拟机里的qemu-guest-agent所支持的RPC指令经过channel发送到虚拟机里,虚拟机里的qemu-guest-agent从字符设备收到数据后,执行指令,比如读写文件、修改密码等等若要使用qemu-guest-agent需要满足以下条件1. xml里配置channel,范例: . . 注意,path可以自定义,但name需要保持org.qemu.guest_agent.0,因为这会影响虚拟机里字符设备的文件名,而虚拟机里的qemu-guest-agent服务默认读取的是对应org.qemu.guest_agent.0的字符设备,如果改了name,那么qemu-guest-agent的配置文件也要跟着改,改成对应name的路径2. 虚拟机内的操作系统内核需要支持(linux、windows均支持)3. 虚拟机里要安装并启动qemu-ga的服务(比如centos可以yum install qemu-ga & systemctl start qemu-guest-agent,windows通过导入

      《基于QMP实现对qemu虚拟机进行交互》由会员m****分享,可在线阅读,更多相关《基于QMP实现对qemu虚拟机进行交互》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.