Qemu是一個(gè)獨(dú)立的虛擬化解決方案,通過inter-VT或AMD SVM實(shí)現(xiàn)虛擬化,安裝qemu的系統(tǒng),可以直接 模擬吹另一個(gè)完全不同的系統(tǒng)環(huán)江,虛擬機(jī)的創(chuàng)建通過qemu-image即可完成。Qemu本身可以不依賴KVM,但是如果有KVM的存在并且硬件(處理器)支持比如Inter VT功能,那么QEMU在對(duì)處理器虛擬化這一塊可與里哦用KVM提供的功能來提升性能。
成都創(chuàng)新互聯(lián)公司成立于2013年,我們提供高端成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)站定制、全網(wǎng)營銷推廣、小程序設(shè)計(jì)、微信公眾號(hào)開發(fā)、seo優(yōu)化服務(wù),提供專業(yè)營銷思路、內(nèi)容策劃、視覺設(shè)計(jì)、程序開發(fā)來完成項(xiàng)目落地,為鑿毛機(jī)企業(yè)提供源源不斷的流量和訂單咨詢。
KVM 是集成到 Linux 內(nèi)核的 Hypervisor 是 X86 架構(gòu)且硬件支持虛擬化技術(shù)(IntelVT或AMD-V)的Linux 的全虛擬化解決方案。它是Linux 的一個(gè)很小的模塊,利用 Linux 做大量的事,如任務(wù)調(diào)度、內(nèi)存管理與硬件設(shè)備交互等。準(zhǔn)確來說,KVM 是Linux kernel 的一個(gè)模塊??梢杂妹?modprobe 去加載KVM 模塊。加載了模塊后,才能進(jìn)一步通過其他工具創(chuàng)建虛擬機(jī)。但僅有KVM 模塊是遠(yuǎn)遠(yuǎn)不夠的,因?yàn)橛脩魺o法直接控制內(nèi)核模塊去作事情,你還必須有一個(gè)運(yùn)行在用戶空間的工具才行。這個(gè)用戶空間的工具,kvm 開發(fā)者選擇了已經(jīng)成型的開源虛擬化軟件 QEMU。說起來QEMU 也是一個(gè)虛擬化軟件。它的特點(diǎn)是可虛擬不同的CPU。比如說在x86 的CPU 上可虛擬一個(gè)Power 的CPU,并可利用它編譯出可運(yùn)行在Power 上的程序。KVM 使用了QEMU 的一部分,并稍加改造,就成了可控制 KVM 的用戶空間工具了。所以你會(huì)看到,官方提供的 KVM 下載有兩大部分(qemu 和 kvm)三個(gè)文件(KVM 模塊、QEMU 工具以及二者的合集)。也就是說,你可以只升級(jí) KVM 模塊,也可以只升級(jí)QEMU 工具。這就是 KVM 和QEMU 的關(guān)系。 KVM 內(nèi)核模塊本身只能提供CPU 和內(nèi)存的虛擬化,所以它必須結(jié)合QEMU 才能構(gòu)成一個(gè)完成的虛擬化技術(shù),這就是下面要說的qemu-kvm。
Qemu 將KVM 整合進(jìn)來,通過 ioctl 調(diào)用/dev/kvm 接口,將有關(guān)CPU 指令的部分交由內(nèi)核模塊來做。kvm 負(fù)責(zé) cpu 虛擬化+內(nèi)存虛擬化,實(shí)現(xiàn)了 cpu 和內(nèi)存的虛擬化,但kvm不能模擬其他設(shè)備。qemu 模擬 IO 設(shè)備(網(wǎng)卡,磁盤等),kvm 加上 qemu 之后就能實(shí)現(xiàn)真正意義上服務(wù)器虛擬化。因?yàn)橛玫搅松厦鎯蓚€(gè)東西,所以稱之為qemu-kvm。 Qemu 模擬其他的硬件,如 Network, Disk,同樣會(huì)影響這些設(shè)備的性能,于是又產(chǎn)生了pass through 半虛擬化設(shè)備virtio_blk, virtio_net,提高設(shè)備性能。
Libvirt 是管理虛擬機(jī)和其他虛擬化功能,比如存儲(chǔ)管理,網(wǎng)絡(luò)管理的軟件集合。它包括一個(gè)API 庫,一個(gè)守護(hù)程序(libvirtd)和一個(gè)命令行工具(virsh);libvirt 本身構(gòu)建于一種抽象的概念之上。它為受支持的虛擬機(jī)監(jiān)控程序?qū)崿F(xiàn)的常用功能提供通用的 API。 libvirt 的主要目標(biāo)是為各種虛擬化工具提供一套方便、可靠的編程接口,用一種單一的方式管理多種不同的虛擬化提供方式。
KVM 是最底層的 hypervisor,它是用來模擬 CPU 的運(yùn)行,它缺少了對(duì) network 和周邊 I/O 的支持,所以我們是沒法直接用它的。QEMU-KVM 就是一個(gè)完整的模擬器,它是構(gòu)建基于KVM 上面的,它提供了完整的網(wǎng)絡(luò)和 I/O 支持。Openstack 不會(huì)直接控制qemu-kvm,它會(huì)用一個(gè)叫l(wèi)ibvirt 的庫去間接控制qemu-kvm。libvirt 提供了跨 VM 平臺(tái)的功能,它可以控制除了 QEMU 之外的模擬器,包括 vmware, virtualbox, xen 等等。所以為了openstack 的跨 VM 性,所以openstack 只會(huì)用 libvirt 而不直接用 qemu-kvm。libvirt還提供了一些高級(jí)的功能,例如 pool/vol 管理。