QEMU和QEMU-KVM的關係

不一樣的基於KVM的虛擬化平臺,可能會採用不一樣的虛擬化組件,目前主流的採用QEMU-KVM組件,但在不一樣的產品裏版本有所不一樣,功能也有差別,下面就幾個概念進行梳理下git

 

KVM:Kernel-Based Virtual Machine 基於內核的虛擬機,是Linux內核的一個可加載模塊,經過調用Linux自己內核功能,實現對CPU的底層虛擬化和內存的虛擬化,使Linux內核成爲虛擬化層,須要x86架構的,支持虛擬化功能的硬件支持(好比Intel VT,AMD-V),是一種全虛擬化架構。KVM在2007年年2月被導入Linux 2.6.20內核中。從存在形式來看,它包括兩個內核模塊:kvm.ko  和  kvm_intel.ko(或kvm_amd.ko),本質上,KVM是管理虛擬硬件設備的驅動,該驅動使用字符設備/dev/kvm(由KVM自己建立)做爲管理接口,主要負責vCPU的建立,虛擬內存的分配,vCPU寄存器的讀寫以及vCPU的運行。vim

 

QEMU:是一套由Fabrice Bellard編寫的模擬處理器的自由軟件,它是一個完整的能夠單獨運行的軟件,能夠獨立模擬出整臺計算機,包括CPU,內存,IO設備,經過一個特殊的「重編譯器」對特定的處理器的二進制代碼進行翻譯,從而具備了跨平臺的通用性。QEMU有兩種工做模式:系統模式,能夠模擬出整個電腦系統,另外一種是用戶模式,能夠運行不一樣與當前硬件平臺的其餘平臺上的程序(好比在x86平臺上運行跑在ARM平臺上的程序);其代碼地址 http://git.qemu.org/qemu.git  ,有興趣的同窗能夠本身去看看,目前最新的版本是2.7.0,在0.9.1及以前版本還可使用kqemu加速器(能夠理解爲QEMU的一個插件,用來提升QEMU的翻譯性能,支持Windows平臺),但1.0之後版本就只能使用qemu-kvm(只支持Linux)進行加速了,1.3版本後QEMU和QEMU-KVM合二爲一了。服務器

 

QEMU-KVM:從前面對KVM內核模塊的介紹知道,它只負責CPU和內存的虛擬化,加載了它之後,用戶就能夠進一步經過工具建立虛擬機(KVM提供接口),但僅有KVM仍是不夠的,用戶沒法直接控制內核去作事情(KVM只提供接口,怎麼建立虛擬機,分配vCPU等並不在它上面進行),還必須有個運行在用戶空間的工具才行,KVM的開發者選擇了比較成熟的開源虛擬化軟件QEMU來做爲這個工具,並對其進行了修改,最後造成了QEMU-KVM。架構

在QEMU-KVM中,KVM運行在內核空間,QEMU運行在用戶空間,實際模擬建立,管理各類虛擬硬件,QEMU將KVM整合了進來,經過/ioctl 調用 /dev/kvm,從而將CPU指令的部分交給內核模塊來作,KVM實現了CPU和內存的虛擬化,但kvm不能虛擬其餘硬件設備,所以qemu還有模擬IO設備(磁盤,網卡,顯卡等)的做用,KVM加上QEMU後就是完整意義上的服務器虛擬化框架

固然,因爲qemu模擬io設備效率不高的緣由,如今經常採用半虛擬化的virtio方式來虛擬IO設備,另文再談編輯器

綜上所述,QEMU-KVM具備兩大做用:工具

1.提供對cpu,內存(KVM負責),IO設備(QEMU負責)的虛擬性能

2.對各類虛擬設備的建立,調用進行管理(QEMU負責)雲計算

 

libvirt.net

順帶提一提libvirt,這是RedHat開始支持KVM後,大概是以爲QEMU+KVM方案中的用戶空間虛擬機管理工具不太好用或者通用性不強,因此乾脆搞了個libvirt出來,一個針對各類虛擬化平臺的虛擬機管理的API庫,一些經常使用的虛擬機管理工具如virsh(相似vim編輯器),virt-install,virt-manager等和雲計算框架平臺(如OpenStack,OpenNebula,Eucalyptus等)都在底層使用libvirt提供的應用程序接口。

libvirt主要由三個部分組成:API庫,一個守護進程 libvirtd 和一個默認命令行管理工具 virsh。

 

總結:

目前來講,QEMU是一個獨立的虛擬化解決方案,並不依賴KVM(它自己本身能夠作CPU和內存的模擬,只不過效率較低),而KVM是另外一套虛擬化解決方案,對CPU進行虛擬效率較高(採用了硬件輔助虛擬化),但自己不提供其餘設備的虛擬化,借用了QEMU的代碼進行了定製,因此KVM方案必定要依賴QEMU

即便後來RedHat後來開發了libvirt,也只能簡單的認爲是個虛擬機管理工具,仍然須要經過用戶空間QEMU來與KVM進行交互


————————————————
版權聲明:本文爲CSDN博主「dAng1r0Us」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/shengxia1999/article/details/52244119


Aha,突然發現我也是個標題黨,十分鐘搞定某某技能這種標題最吸引人了。固然我也不是華而不實,是否是乾貨,你讀了才知道。話說,接觸Xen這麼久了,如今才花時間搞清楚這個問題,要不是須要給別人解釋,還不知道要等到何時纔來寫這篇博客。閒話少說,進入正題。

關於qemu

Qemu是一個獨立的虛擬化解決方案,經過intel-VT 或AMD SVM實現全虛擬化,安裝qemu的系統,能夠直接模擬出另外一個徹底不一樣的系統環境,虛擬機的建立經過qemu-image既可完成。QEMU自己能夠不依賴於KVM,可是若是有KVM的存在而且硬件(處理器)支持好比Intel VT功能,那麼QEMU在對處理器虛擬化這一塊能夠利用KVM提供的功能來提高性能。

關於KVM

KVM是集成到Linux內核的Hypervisor,是X86架構且硬件支持虛擬化技術(IntelVT或AMD-V)的Linux的全虛擬化解決方案。它是Linux的一個很小的模塊,利用Linux作大量的事,如任務調度、內存管理與硬件設備交互等。準確來講,KVM是Linuxkernel的一個模塊。能夠用命令modprobe去加載KVM模塊。加載了模塊後,才能進一步經過其餘工具建立虛擬機。但僅有KVM模塊是遠遠不夠的,由於用戶沒法直接控制內核模塊去做事情,你還必須有一個運行在用戶空間的工具才行。這個用戶空間的工具,kvm開發者選擇了已經成型的開源虛擬化軟件QEMU。提及來QEMU也是一個虛擬化軟件。它的特色是可虛擬不一樣的CPU。好比說在x86的CPU上可虛擬一個Power的CPU,並可利用它編譯出可運行在Power上的程序。KVM使用了QEMU的一部分,並稍加改造,就成了可控制KVM的用戶空間工具了。因此你會看到,官方提供的KVM下載有兩大部分(qemu和kvm)三個文件(KVM模塊、QEMU工具以及兩者的合集)。也就是說,你能夠只升級KVM模塊,也能夠只升級QEMU工具。這就是KVM和QEMU的關係。

關於Xen

實驗室課題緣故,從一開始接觸的就是Xen虛擬機,關於Xen的使用和開發都作了,也算是熟悉。Xen的編譯安裝是第一個要掌握的東西,首先你須要下載Xen的源碼,而後執行configure、make 、make install。固然你也能夠選擇性的安裝make install-xen,這種方法僅限於第二次使用Xen,並對源碼作了更改後,能夠不去編譯安裝tools文件夾下的東西,直接編譯安裝xen便可。那麼tools下有什麼東西呢?實際tools除了實現xl 、xm命令以外,還有很重要的一部分,也就是qemu-xen,qemu-xen-traditional等一些與qemu有關的程序。這也就是咱們今天要解釋的xen中是如何使用qemu的。

總結

Qemu是一套獨立的虛擬化解決方案,KVM是另外一套虛擬化解決方案,不過由於這個方案實際上只實現了內核中對處理器(Intel VT, AMDSVM)虛擬化特性的支持,換言之,它缺少設備虛擬化以及相應的用戶空間管理虛擬機的工具,因此它借用了QEMU的代碼並加以精簡,連同KVM一塊兒構成了另外一個獨立的虛擬化解決方案,不妨稱之爲:KVM+QEMU.。Xen是另外一套獨立的虛擬化解決方案,最初的Xen只支持半虛擬化,Intel VT技術出現後,添加了全虛擬化功能,這個全虛擬化功能也是藉助了qemu實現,但不是徹底依賴qemu。

————————————————版權聲明:本文爲CSDN博主「小近視愛老花鏡」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接及本聲明。原文連接:https://blog.csdn.net/YSBJ123/article/details/51166343

相關文章
相關標籤/搜索