前言我们在openstack中会经常使用很多镜像,比如row,row2等。openstack底层支持的虚拟机很多。而qemu就是其中佼佼者,性能,速度,适用性都比较高。特殊情况时,我们无法直接使用openstack创建或者修改镜像,就可以利用qemu,在单机环境下创建镜像,并上传到openstack使用。同时由于qemu出色的性能,即使单独作为一种创建虚拟机的工具来使用,也很不错。 本文分为三个部分,第一部分主要介绍了qemu是什么,给人一个基本印象。第二部分重点介绍其安装。第三部分介绍其架构,这对我们的进一步使用有比较大的好处。 什么是QEMUQEMU是一种通用的开源计算机仿真器和虚拟器。QEMU共有两种操作模式
同时当进行虚拟化时,QEMU也可以以接近本机的性能运行KVM或者Xen。 QEMU的再认识具体来说,当作为机器仿真器使用时,QEMU可以通过动态代码翻译机制(dynamic translation)在不同的机器上仿真任意一台机器(例如ARM板),并执行不同于主机架构的代码。同时由于动态代码翻译机制,它也能够实现不错的性能。 而当QEMU用作虚拟器时,QEMU的优点在于其实纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,但是也正因为QEMU是纯软件实现的,因此所有指令都需要QEMU转手,因此会严重的降低性能。而可行的办法是通过配合KVM或者Xen来进行加速,目前肯定是以KVM为主。KVM
是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 QEMU 则负责 I/O
虚拟化,两者合作各自发挥自身的优势,相得益彰。 QEMU的wiki上这样说道:虽然QEMU本身是通过软件来模拟计算机,但是它也能够使用其他虚拟化技术进行加速。在Xen虚拟机管理程序下执行或在Linux中使用KVM内核模块时,QEMU支持虚拟化。当使用KVM,QEMU可以虚拟化x86架构,服务器和嵌入式 PowerPC,64位POWER,S390,32位和64位的ARM和MIPS guests等。 QEMU的安装与下载qemu的安装与下载并不复杂,三个版本上安装都比较方便,你可以直接参考官方页面。或者按照我下边的方法进行操作亦可。或者你也可以翻到再下边的源码安装。 官方文档可在此处下载QEMU的各个版本:http : //www./download/,同时该页面也介绍了QEMU在不同操作系统的安装方法。你也可以直接参考下面的方法进行安装和使用。 Windows 不过Windows上qemu的性能不佳,这主要是其架构问题,在Windows上将无法使用其他专门负责虚拟化的工具进行加速,因此更好地方式是运行于Ubuntu之上,然后,借用kvm进行有效的加速,而如果需要使用kvm,则需要还需要安装qemu-kvm。 QEMU-KVM,是QEMU的一个特定于KVM加速模块的分支,里面包含了很多关于KVM的特定代码,与KVM模块一起配合使用。不过目前QEMU-KVM已经与QEMU合二为一,所有特定于KVM的代码也都合入了QEMU,当需要与KVM模块配合使用的时候,只需要在QEMU命令行加上 --enable-kvm就可以。 Ubuntu 安装方法如下 sudo apt install qemusudo apt install kvm libvirt-clients# 检查是否已经安装kvm# egrep -o '(vmx|svm)' /proc/cpuinfo# 使用kvm启动镜像sudo kvm -hda gxzy-tf-win7.qcow2 -m 8192 -smp 4# 检查正在运行的镜像# virsh -c qemu:///system list12345678 或者,我们也可以直接使用qemu的命令进行操作,使用kvm加速只需要再加上 Linux各个版本安装命令 在大部分Linux系统中,QEMU都可以通过安装包的形式进行安装。不过由于原生的QEMU性能不佳,因此也可以直接使用qemu-kvm进行操作。目前qemu已经集成了该组件,
macOS QEMU can be installed from Homebrew: QEMU的源码安装QEMU提供了多个版本的源码,你可以在QEMU全版本源码列表下载有关版本。或者使用以下代码进行安装: wget https://download./qemu-4.2.0.tar.xztar xvJf qemu-4.2.0.tar.xzcd qemu-4.2.0 ./configuremake12345 又或者,我们可以直接从git上下载和编译QEMU: git clone https://git./git/qemu.gitcd qemugit submodule initgit submodule update --recursive ./configuremake123456 configure 脚本用于生成 Makefile,其选项可以用 ./configure --help 查看。 这里使用到的选项含义如下:
安装好之后,会生成如下应用程序:
之后通过创建虚拟机操作来对这些工具有个初步的认识。有关内容可以参考我的另外一篇博客Windows下QEMU的安装与使用------留坑暂未填坑,或者一文读懂QEMU虚拟机 QEMU源码结构Qemu 软件虚拟化实现的思路是采用二进制指令翻译技术,主要是提取 guest 代码,然后将其翻译成 TCG 中间代码,最后再将中间代码翻译成 host 指定架构的代码,如 x86 体系就翻译成其支持的代码形式,ARM 架构同理。 所以,从宏观上看,源码结构主要包含以下几个部分:
其中,涉及的主要几个函数如下: 知道了这个总体的代码结构,再去具体了解每一个模块可能会相对容易一点。 参考 |
|