1. 程式人生 > >五分鐘搞懂Xen、KVM、Qemu間的關係和區別

五分鐘搞懂Xen、KVM、Qemu間的關係和區別

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。