QEMU Monitor 使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QEMU Monitor 使用相关的知识,希望对你有一定的参考价值。
参考技术A 从命令行启动qemu之后,按键 Ctrl-a c 可以进入monitor,之后可以执行很多有用的命令。具体可以参考 https://qemu.readthedocs.io/en/latest/system/monitor.html 。但是文档没有提到的是其他进入monitor的方式,尤其是想要同时有consel 和 monitor的情况。查询手册的执行参数一章可以看到参数 -monitor dev 可以指定monitor使用什么字符设备输出。但是用法没给,而且必须使用字符设备也比较难用。
继续查询,这个回答很有帮助,提到如何开启网络端口做monitor: https://unix.stackexchange.com/questions/426652/connect-to-running-qemu-instance-with-qemu-monitor
再查阅手册,问题已经明白了。 dev设备 可以是很多形式,在执行参数 -serial dev 里面讲的很全面。 https://qemu.readthedocs.io/en/latest/system/invocation.html 。
而且这种灵活的使用方式不仅适用于monitor,也适用于 serial, 也就是能够很方便的把guest os的consel重定向到各种形式的接口上(包括 虚拟控制台,tty,网络,管道,文件等)。
QEMU的强大令人惊叹,回头看看这块源码怎么实现的。
这里给出具体参数,省去查找的麻烦:
qemu-system-aarch64 ... -monitor telnet:127.0.0.1:55555,server,nowait
使用telnet即可监听端口: telnet 127.0.0.1 55555
UNIX套接字为简单高效建立本地进程间通信的一种机制,接口和网络套接字一致,但是内部去掉了TCP/IP协议栈的繁琐流程,提高通信效率。相关说明: https://akaedu.github.io/book/ch37s04.html
QEMU参数为: -monitor unix:qemu-monitor-socket,server,nowait , qemu-monitor-socket为套接字名称,可以自定义。
使用socat连接: socat - unix-connext:qemu-monitor-socket 。 socat连接效果比telnet效果好。
socat工具十分强大,使用参考: http://brieflyx.me/2015/linux-tools/socat-introduction/ 和 https://www.jianshu.com/p/54005e3095f3 。
KVM之初体验——QEMU安装虚拟机
QEMU简介
QEMU是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。QEMU主要提供两种功能给用户使用。一是作为用户态模拟器,利用动态代码翻译机制来执行不同于主机架构的代码。二是作为虚拟机监管器,模拟全 系统,利用其他VMM(Xen, KVM, etc)来使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机。
是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。 它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。 KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。 在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。 KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机。 (它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。
基本原理
QEMU作为系统模拟器时,会模拟出一台能够独立运行操作系统的虚拟机。如下图所示,每个虚拟机对应主机(Host)中的一个QEMU进程,而虚拟机的vCPU对应QEMU进程的一个线程。
系统虚拟化最主要是虚拟出CPU、内存及I/O设备。虚拟出的CPU称之为vCPU,QEMU为了提升效率,借用KVM、XEN等虚拟化技术,直接利用硬件对虚拟化的支持,在主机上安全地运行虚拟机代码(需要硬件支持)。
QEMU 参数介绍
QEMU 创建步骤
1)安装虚拟化管理器(ps:保证KVM虚拟机管理器已安装完毕,安装步骤很简单,本次就不多说了,敬请谅解。)
2)配置桥接网卡
实验环境为redhat 6.4企业版本 # yum install "bridge-utils" 注释:安装桥接工具 #service libvirtd start 注释:启动桥接服务 #chkconfig libvirtd on 注释:永久开启!不然系统重启后不会自动启动这个服务的哟~ # virsh iface-bridge eth0 br0 注释:创建网络桥! 验证: ifconfig br0 注释:观察IP地址是否跑到了br0网卡上!
示例:
[[email protected] ~]# ifconfig br0 br0 Link encap:Ethernet HWaddr 54:04:A6:CE:C1:6C inet addr:172.16.120.100 Bcast:172.16.120.255 Mask:255.255.255.0 inet6 addr: fe80::5604:a6ff:fece:c16c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:148 errors:0 dropped:0 overruns:0 frame:0 TX packets:77 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:30827 (30.1 KiB) TX bytes:6850 (6.6 KiB)
3)关闭防火墙
#service iptables stop #setenforce 0
4)安装虚拟机
创建磁盘: qemu-img create -f qcow2 -o preallocation=metadata /var/lib/libvirt/images/diskname.houzhui 8G
1.参数介绍:
-f qcow2 注释:指定虚拟机硬盘格式,qcow2格式支持虚拟机快照功能! -o preallocation=metadata 注释:不立即占用磁盘空间! -o preallocation=full 注释:立即占用磁盘空间! diskname.houzhui 注释:磁盘文件的名字,注意位置:/var/lib/libvirt/images/ 8G 注释:磁盘大小以G为单位!
2.安装方法一(图形化):
virt-install --graphics vnc,listen=0.0.0.0,port=5920 -n test0 --os-type=linux --os-variant=rhel6 -r 512 --arch=x86_64 --vcpus=1 -f /var/lib/libvirt/images/diskname.houzhui -w bridge=br0 -l ftp://172.16.1.100/rhel6.4 -x "console=ttyS0"
ps1: /var/lib/libvirt/images/diskname.houzhui必须跟创建磁盘的路径名一样。
ps2: console=ttyS0大小写不能写错,0是零,不是大写的O。
3.安装方法二(纯文本):
virt-install --nographics #安装过程不要图形 -n rhel6 #虚拟机标签名称 --os-type=linux #系统类型 --os-variant=rhel6 #系统版本 -r 512 #内存大小 --arch=x86_64 #64 or 32位 --vcpus=1 #CPU数量 -f /var/lib/libvirt/images/rhel6.img #之前创建的硬盘位置和名字 -w bridge=br0 #桥接网卡名字 -l ftp://172.16.8.100/rhel6.4 #安装源 -x "console=ttyS0" #在本控制显示安装过程
ps:-x参数后面可添加kickstart参数,本次暂时忽略。
4.虚拟机使用方法
virsh destroy 虚拟机名 #关闭虚拟机 virsh undefine 虚拟机名 #删除虚拟机 virsh start 虚拟机名 #开启虚拟机 virsh list --all 显示所有虚拟机 virsh console 虚拟机名 #连接虚拟机
ps:virsh详细参数本次暂时忽略。
5)qemu常用方法——快照
1)将虚拟机关机!!! 2)确认磁盘文件是不是QCOW2格式的,RAW格式不支持快照 3)转换:qemu-img convert -f raw -O qcow2 raw磁盘名 qcow2磁盘名
#qemu-img snapshot -c name /var/lib/libvirt/image/disk_name 创建快照 #qemu-img snapshot -l /var/lib/libvirt/image/disk_name 查看快照 #qemu-img snapshot -a name /var/lib/libvirt/image/disk_name 还原 #qemu-img snapshot -d name /var/lib/libvirt/image/disk_name 删除 #qemu-img info vmname.raw 查看镜像信息 #
结束语:
Qemu是一个广泛使用的开源计算机仿真器和虚拟机。
当作为仿真器时,可以在一种架构(如PC机)下运行另一种架构(如ARM)下的操作系统和程序。通过动态转化,可以获得很高的运行效率。
当作为一个虚拟机时,qemu可以通过直接使用真机的系统资源,让虚拟系统能够获得接近于真机的性能表现。qemu支持xen或者kvm模式下的虚拟化。当用kvm时,qemu可以虚拟x86、服务器和嵌入式powerpc,以及s390的系统。
至此,Qemu的简单操作介绍完毕。
本文出自 “子非鱼” 博客,请务必保留此出处http://5323197.blog.51cto.com/5313197/1737996
以上是关于QEMU Monitor 使用的主要内容,如果未能解决你的问题,请参考以下文章
error : qemuMonitorIO:697 : internal error: End of file from qemu monitor
error : qemuMonitorIO:697 : internal error: End of file from qemu monitor