qemu monitor
qemu向外界暴露的唯一接口就是 qemu monitor, 通过monitor可以 查询虚拟机信息, 控制虚拟机。传输数据方式是网络套结字。 qemu monitor 支持几种协议类型: qmp 和 hmp ; 通过monitor能够完成查询虚拟机的内部状态,进行设备的热插拔,虚拟机的迁移/备份/快照等功能。
qmp (Qemu Monitor Protocol)是一种基于JSON格式的传输协议,定义了与虚拟机的交互规范,底层支撑了QM的实现;
hmp(human monitor) 是一个方便用户阅读的协议,不必关心他的底层JSON;
一般手工维护大部分都是用 hmp 方式,而做自动化工具维护或者二次定制就需要基于QMP进行封装。
直接使用 qemu 启动时可以通过 tcp 和 unix socket 来指定 qemu monitor 的接口,而通过 virt-manager/libvirtd 启动的虚拟机只能通过 virsh 来进行虚拟机交互。
hmp接口使用
使用-monitor
通过 qmp 方式进行交互:
tcp socket 方式
./qemu-system-x86_64 -m 2048 -hda /home/linux/virt/xxxx.qcow2 -enable-kvm -monitor tcp:localhost:1234,server,nowait
使用telnet连接localhost:1234之后就可以使用qmp的命令和虚拟机交互了
[linux@localhost qemu]$ telnet localhost 1234
Trying ::1...
Connected to localhost.
Escape character is '^]'.
QEMU 2.12.0 monitor - type 'help' for more information
(qemu) help
help
__com.redhat_drive_add id=name,[file=file][,format=f][,media=d]... -- Create a drive similar to -drive if=none.
__com.redhat_qxl_screendump id filename -- save screen from qxl device 'id' into PPM image 'filename'
unix socket 方式
./qemu-system-x86_64 -m 2048 -hda /root/centos6.img -enable-kvm -monitor unix:/tmp/qmp-test,server,nowait
使用nc连接该socket,之后就一样了。
[root@localhost qmp]# nc -U /tmp/qmp-test
QEMU 2.12.0 monitor - type 'help' for more information
(qemu) info
info balloon -- show balloon information
hmp 的详细命令格式可以在qemu的代码树主目录下面的hmp-commands.hx hmp-commands-info.hx
中找到。
qmp接口使用
使用 -qmp
指定通过 json 方式进行交互:
./qemu-system-x86_64 -m 2048 -hda /home/linux/virt/xxxx.qcow2 -enable-kvm -qmp tcp:localhost:1234,server,nowait
使用telnet连接localhost:1234之后就可以使用qmp的命令和虚拟机交互了。但是QMP基于json格式,所以在命令行里手动输入json就不是很方便。
[linux@localhost qemu]$ telnet localhost 1234
Trying ::1...
Connected to localhost.
Escape character is '^]'.
{"QMP": {"version": {"qemu": {"micro": 0, "minor": 12, "major": 2}, "package": "v2.12.0-41-ga481765"}, "capabilities": []}}
其他方式和 hmp 中接口类似,不再赘述。
qemu 源码中提供了对QMP的封装示例scripts/qmp/
提供了一些 demo
[linux@localhost qemu]$ ls ./scripts/qmp/
__init__.py qemu-ga-client qmp qmp.py qmp.pyc qmp-shell qom-fuse qom-get qom-list qom-set qom-tree
通过libvirt启动时使用qemu monitor
不能再通过端口直接连接qemu,而是需要通过 virsh -> libvirtd -> qemu 中转数据,可以通过如下方式使用qemu monitor
virsh qemu-monitor-command debian10 --hmp "x/128i 0x98000000012fbf09"
常用用法
查询cpu类型和machine类型
qemu-system-mips64el -cpu ?
qemu-system-mips64el -machine ?
cpu热插拔
通过qemu启动,并且开放qemu monitor端口: -monitor tcp:localhost:1234,server,nowait
# telnet 127.0.0.1 1234
(qemu) info hotpluggable-cpus
Hotpluggable CPUs:type: "Loongson-3A4000-COMP-mips64-cpu"vcpus_count: "1"CPUInstance Properties:node-id: "0"core-id: "3"type: "Loongson-3A4000-COMP-mips64-cpu"vcpus_count: "1"CPUInstance Properties:node-id: "0"core-id: "2"type: "Loongson-3A4000-COMP-mips64-cpu"vcpus_count: "1"qom_path: "/machine/unattached/device[1]"CPUInstance Properties:node-id: "0"core-id: "1"type: "Loongson-3A4000-COMP-mips64-cpu"vcpus_count: "1"qom_path: "/machine/unattached/device[0]"CPUInstance Properties:node-id: "0"core-id: "0"
(qemu) device_add driver=Loongson-3A4000-COMP-mips64-cpu,node-id=0,core-id=3,id=cpu2
官方链接: https://wiki.qemu.org/Features/CPUHotplug#cpu-add_interface
链接
gentoo官网: https://wiki.gentoo.org/wiki/QEMU/OptionsBoot_order
qemu官网: https://www.qemu.org/docs/master/system/invocation.html
suse virsh官网: https://doc.opensuse.org/documentation/leap/virtualization/html/book-virt/cha-qemu-monitor.html
qemu monitor相关推荐
- qemu monitor和qemu agent的实现
虚拟机配置中: <channel type='unix'> <target type='virtio' name='org.qemu.guest_agent.0'/> < ...
- QEMU monitor控制台使用详解
为什么要使用 QEMU monitor命令? 在前面学习ubuntu启动第一个虚拟机时,发现我们在使用启动QEMU之后,我们的终端会卡住.而现在我们在启动QEMU时使用了monitor,终端会进入mo ...
- QEMU支持的网络模式
网络是现代计算机系统不可或缺的一部分,QEMU也对虚拟机提供丰富的网络支持.qemu-kvm中主要给客户机提供了如下4种不同模式的网络. (1)基于网桥(Bridge)的虚拟网卡 (2)基于NAT(N ...
- KVM 介绍(7):使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 (Nova Instances Snapshot Libvirt)...
学习 KVM 的系列文章: (1)介绍和安装 (2)CPU 和 内存虚拟化 (3)I/O QEMU 全虚拟化和准虚拟化(Para-virtulizaiton) (4)I/O PCI/PCIe设备直接分 ...
- 【KVM系列08】使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机
第八章 使用 libvirt 迁移 QEMU/KVM 虚机和 Nova 虚机 1. QEMU/KVM 迁移的概念 1.1 迁移效率的衡量 1.2 KVM 迁移的原理 1.3 使用命令行的方式做动态迁移 ...
- 【KVM系列07】使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照
第七章 使用 libvirt 做 QEMU/KVM 快照和 Nova 实例的快照 1. QEMU/KVM 快照 1.1 概念 1.2 使用 virsh 实验 1.3 外部快照的删除 2. OpenSt ...
- 欢迎使用 QEMU 的文档!| 目录
Welcome to QEMU's documentation! - QEMU documentationhttps://qemu-project.gitlab.io/qemu/ About QEMU ...
- linux下三台虚拟机互联,Linux下虚拟机qemu的使用
Linux下虚拟机qemu的使用,设置qemu, 安装WinXP从桌面菜单启动qemu-launcher后, 1. 取消Snapshot Mode, 因为这个选项表示只有你按 虚拟机qemu的使用 R ...
- qemu里pci设备的热插拔
qemu里pci设备的热插拔 -v0.1 2019.2.17 Sherlock Init -v0.2 2019.2.21 Sherlock Add all related command 本文讨论li ...
最新文章
- Linux中的文件系统和磁盘管理
- 如何更改gridview中任意单元格颜色或者内容。
- IOS TableView实现省市联动
- Android零基础入门第33节:Android事件处理概述
- ant使用指南详细入门教程
- poj 2823 单调队列
- magento 瘦身数据库
- Angular 发布首个正式的路线图
- 复制两个类的相同属性
- Locating Elements(一)
- 歌词 —— 那些花儿
- 27. 使用distance和advance将容器的const_iterator转换成iterator
- 1.空间中直线交点坐标问题,2.已知球面三点求球心问题以及Matlab实现
- 制作 Eset Nod32 离线升级包
- 汇编语言属于计算机科学,汇编语言是一种依赖于计算机的低级程序设计语言吗...
- 微型计算机与原理与接口技术第四版,微机原理与接口技术(第4版)
- QCC302X/QCC303X蓝牙对讲与蓝牙扩音器
- Linux 平台上的软件包管理
- Anaconda安装中failed to create menus
- 行业新生态,从区块链系统开发开始