前言我們在openstack中會經(jīng)常使用很多鏡像,比如row,row2等。openstack底層支持的虛擬機很多。而qemu就是其中佼佼者,性能,速度,適用性都比較高。特殊情況時,我們無法直接使用openstack創(chuàng)建或者修改鏡像,就可以利用qemu,在單機環(huán)境下創(chuàng)建鏡像,并上傳到openstack使用。同時由于qemu出色的性能,即使單獨作為一種創(chuàng)建虛擬機的工具來使用,也很不錯。 本文分為三個部分,第一部分主要介紹了qemu是什么,給人一個基本印象。第二部分重點介紹其安裝。第三部分介紹其架構(gòu),這對我們的進一步使用有比較大的好處。 什么是QEMUQEMU是一種通用的開源計算機仿真器和虛擬器。QEMU共有兩種操作模式
同時當進行虛擬化時,QEMU也可以以接近本機的性能運行KVM或者Xen。 QEMU的再認識具體來說,當作為機器仿真器使用時,QEMU可以通過動態(tài)代碼翻譯機制(dynamic translation)在不同的機器上仿真任意一臺機器(例如ARM板),并執(zhí)行不同于主機架構(gòu)的代碼。同時由于動態(tài)代碼翻譯機制,它也能夠?qū)崿F(xiàn)不錯的性能。 而當QEMU用作虛擬器時,QEMU的優(yōu)點在于其實純軟件實現(xiàn)的虛擬化模擬器,幾乎可以模擬任何硬件設(shè)備,但是也正因為QEMU是純軟件實現(xiàn)的,因此所有指令都需要QEMU轉(zhuǎn)手,因此會嚴重的降低性能。而可行的辦法是通過配合KVM或者Xen來進行加速,目前肯定是以KVM為主。KVM
是硬件輔助的虛擬化技術(shù),主要負責 比較繁瑣的 CPU 和內(nèi)存虛擬化,而 QEMU 則負責 I/O
虛擬化,兩者合作各自發(fā)揮自身的優(yōu)勢,相得益彰。 QEMU的wiki上這樣說道:雖然QEMU本身是通過軟件來模擬計算機,但是它也能夠使用其他虛擬化技術(shù)進行加速。在Xen虛擬機管理程序下執(zhí)行或在Linux中使用KVM內(nèi)核模塊時,QEMU支持虛擬化。當使用KVM,QEMU可以虛擬化x86架構(gòu),服務器和嵌入式 PowerPC,64位POWER,S390,32位和64位的ARM和MIPS guests等。 QEMU的安裝與下載qemu的安裝與下載并不復雜,三個版本上安裝都比較方便,你可以直接參考官方頁面?;蛘甙凑瘴蚁逻叺姆椒ㄟM行操作亦可?;蛘吣阋部梢苑皆傧逻叺脑创a安裝。 官方文檔可在此處下載QEMU的各個版本:http : //www./download/,同時該頁面也介紹了QEMU在不同操作系統(tǒng)的安裝方法。你也可以直接參考下面的方法進行安裝和使用。 Windows 不過Windows上qemu的性能不佳,這主要是其架構(gòu)問題,在Windows上將無法使用其他專門負責虛擬化的工具進行加速,因此更好地方式是運行于Ubuntu之上,然后,借用kvm進行有效的加速,而如果需要使用kvm,則需要還需要安裝qemu-kvm。 QEMU-KVM,是QEMU的一個特定于KVM加速模塊的分支,里面包含了很多關(guān)于KVM的特定代碼,與KVM模塊一起配合使用。不過目前QEMU-KVM已經(jīng)與QEMU合二為一,所有特定于KVM的代碼也都合入了QEMU,當需要與KVM模塊配合使用的時候,只需要在QEMU命令行加上 --enable-kvm就可以。 Ubuntu 安裝方法如下 sudo apt install qemusudo apt install kvm libvirt-clients# 檢查是否已經(jīng)安裝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系統(tǒng)中,QEMU都可以通過安裝包的形式進行安裝。不過由于原生的QEMU性能不佳,因此也可以直接使用qemu-kvm進行操作。目前qemu已經(jīng)集成了該組件,
macOS QEMU can be installed from Homebrew: QEMU的源碼安裝QEMU提供了多個版本的源碼,你可以在QEMU全版本源碼列表下載有關(guān)版本?;蛘呤褂靡韵麓a進行安裝: 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 查看。 這里使用到的選項含義如下:
安裝好之后,會生成如下應用程序:
之后通過創(chuàng)建虛擬機操作來對這些工具有個初步的認識。有關(guān)內(nèi)容可以參考我的另外一篇博客Windows下QEMU的安裝與使用------留坑暫未填坑,或者一文讀懂QEMU虛擬機 QEMU源碼結(jié)構(gòu)Qemu 軟件虛擬化實現(xiàn)的思路是采用二進制指令翻譯技術(shù),主要是提取 guest 代碼,然后將其翻譯成 TCG 中間代碼,最后再將中間代碼翻譯成 host 指定架構(gòu)的代碼,如 x86 體系就翻譯成其支持的代碼形式,ARM 架構(gòu)同理。 所以,從宏觀上看,源碼結(jié)構(gòu)主要包含以下幾個部分:
其中,涉及的主要幾個函數(shù)如下: 知道了這個總體的代碼結(jié)構(gòu),再去具體了解每一個模塊可能會相對容易一點。 參考 |
|