全虛擬化也成爲原始虛擬化技術,該模型使用虛擬機協調guest操做系統和原始硬件,VMM在guest操做系統和裸硬件之間用於工做協調,一些受保護指令必須由Hypervisor(虛擬機管理程序)來捕獲處理。html
圖1 全虛擬化模型網絡
全虛擬化的運行速度要快於硬件模擬,可是性能方面不如裸機,由於Hypervisor須要佔用一些資源。架構
表明:IBM CP/CMS,VirtualBox,KVM,VMware Workstation和VMware ESXide
優勢: Guest OS無需修改,速度和功能都很是不錯,更重要的是使用很是簡單工具
缺點:基於Hosted模式的全虛擬產品性能方面不是特別優異,特別是I/O方面半虛擬化是另外一種相似於全虛擬化的技術,它使用Hypervisor分享存取底層的硬件,可是它的guest操做系統集成了虛擬化方面的代碼。該方法無需從新編譯或引發陷阱,由於操做系統自身可以與虛擬進程進行很好的協做。性能
圖2 半虛擬化模型spa
半虛擬化須要guest操做系統作一些修改,使guest操做系統意識到本身是處於虛擬化環境的,可是半虛擬化提供了與原操做系統相近的性能。操作系統
表明:微軟的Hyper-V,Xen
優勢:種模式和全虛擬化相比,架構更精簡,並且在總體速度上有必定的優點
缺點:須要對Guest OS進行修改,因此在用戶體驗方面比較麻煩
KVM是集成到Linux內核的Hypervisor,是X86架構且硬件支持虛擬化技術(Intel VT或AMD-V)的Linux的全虛擬化解決方案。它是Linux的一個很小的模塊,利用Linux作大量的事,如任務調度、內存管理與硬件設備交互等。htm
圖3 KVM虛擬化平臺架構進程
Xen是第一類運行在裸機上的虛擬化管理程序(Hypervisor)。它支持全虛擬化和半虛擬化,Xen支持hypervisor和虛擬機互相通信,而 且提供在全部Linux版本上的免費產品,包括Red Hat Enterprise Linux和SUSE Linux Enterprise Server。Xen最重要的優點在於半虛擬化,此外未經修改的操做系統也能夠直接在xen上運行(如Windows),能讓虛擬機有效運行而不須要仿 真,所以虛擬機能感知到hypervisor,而不須要模擬虛擬硬件,從而能實現高性能。
圖4 Xen虛擬化平臺架構
QEMU是一套由Fabrice Bellard所編寫的模擬處理器的自由軟件。它與Bochs,PearPC近似,但其具備某些後二者所不具有的特性,如高速度及跨平臺的特性。經由kqemu這個開源的加速器,QEMU能模擬至接近真實電腦的速度。
準確來講,KVM是Linux kernel的一個模塊。能夠用命令modprobe去加載KVM模塊。加載了模塊後,才能進一步經過其餘工具建立虛擬機。但僅有KVM模塊是 遠遠不夠的,由於用戶沒法直接控制內核模塊去做事情,你還必須有一個運行在用戶空間的工具才行。這個用戶空間的工具,kvm開發者選擇了已經成型的開源虛 擬化軟件 QEMU。提及來QEMU也是一個虛擬化軟件。它的特色是可虛擬不一樣的CPU。好比說在x86的CPU上可虛擬一個Power的CPU,並可利用它編譯出 可運行在Power上的程序。KVM使用了QEMU的一部分,並稍加改造,就成了可控制KVM的用戶空間工具了。因此你會看到,官方提供的KVM下載有兩 大部分(qemu和kvm)三個文件(KVM模塊、QEMU工具以及兩者的合集)。也就是說,你能夠只升級KVM模塊,也能夠只升級QEMU工具。這就是 KVM和QEMU 的關係。
圖5 KVM和QEMU關係
KVM是最底層的hypervisor,它是用來模擬CPU的運行,它缺乏了對network和周邊I/O的支持,因此咱們是無法直接用它的。
QEMU-KVM就是一個完整的模擬器,它是構建基於KVM上面的,它提供了完整的網絡和I/O支持。
Openstack不會直接控制qemu-kvm,它會用一個叫libvirt的庫去間接控制qemu-kvm。libvirt提供了跨VM平臺的功能,它能夠控制除了QEMU以外的模擬器,包括vmware, virtualbox, xen等等。
因此爲了openstack的跨VM性,因此openstack只會用libvirt而不直接用qemu-kvm。libvirt還提供了一些高級的功能,例如pool/vol管理。
原文:https://huangwei.me/wiki/tech_cloud_kvm_qemu_libvirt_openstack.html