https://www.cnblogs.com/liuruolin/p/kvm.htmlhtml
首先要理解什麼是虛擬化linux
虛擬化技術服務器
系統虛擬化是將底層物理設備與上層操做系統、軟件分離的一種去耦合技術,在一臺物理機器上邏輯的劃分出多臺機器。
• 虛擬化的目標是實現IT資源利用效率和靈活性的最大化網絡
而後要了解Hypervisor架構
hypervisor:一種運行在物理服務器和操做系統之間的中間層軟件,能夠容許多個操做系統和應用共享一套基礎物理硬件。能夠將hypervisor看作是虛擬環境中的「元」操做系統,能夠協調訪問服務器上的全部物理設備和虛擬機,因此又稱爲虛擬機監視器(virtual machine monitor)。hypervisor是全部虛擬化技術的核心,非中斷的支持多工做負載遷移是hypervisor的基本功能。當服務器啓動並執行hypervisor時,會給每一臺虛擬機分配適量的內存,cpu,網絡和磁盤資源,而且加載全部虛擬機的客戶操做系統。ide
詳細可見https://www.ibm.com/developerworks/cn/linux/l-hypervisor/,講的很不錯工具
開始說KVM性能
kvm就是一種中間件,是一個linux的內核模塊,將linux變成一個hypervisor,能夠虛擬化cpu和內存,在系統須要虛擬化功能的時候,內核把kvm模塊調入內存中運行。但用戶沒法直接控制內核,因此須要一個處於linux內核和用戶之間的一個橋樑-qemu操作系統
QEMUhtm
qemu是一個完整獨立的虛擬化方案,能夠對各類底層硬件進行虛擬,用於模擬用戶空間,好比I/O,kvm須要藉助qemu
QEMU-KVM
kvm運行在內核空間,qemu運行在用戶空間,二者結合起來,其中kvm實現對cpu和內存的虛擬化,qemu實現對其餘硬件的虛擬化(好比網卡, 硬盤)和對虛擬硬件的調用管理,這樣用戶建立的虛擬機的cpu指令就不用通過qemu轉譯,能夠直接運行,性能獲得很大的提高。
Libvirt
libvirt是目前使用最爲普遍的對KVM虛擬機進行管理的工具和API,libvirt調用qemu-kvm來管理虛擬機。我的理解它就是給用戶提供對虛擬機控制的一個工具,能夠用命令也能夠用圖形化對虛擬機進行控制,使用 C 語言編寫,能夠由 Python,Ruby, Perl, PHP, Java 等語言調用。能夠操做包括 KVM,vmware,XEN,Hyper-v, LXC 等 Hypervisor。
綜上可見,kvm和qemu就是兩種不一樣的hypervisor,下圖中第一個就是廣泛的虛擬化結構圖,
圖二就是qemu-kvm架構的虛擬化結構圖