共計 2485 個字符,預計需要花費 7 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 qemu,kvm,qemu-kvm,xen,libvirt 的區別有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
KVM:(Kernel-based Virtual Machine)基于內核的虛擬機
KVM 是集成到 Linux 內核的 Hypervisor,是 X86 架構且硬件支持虛擬化技術(Intel VT 或 AMD-V)的 Linux 的全虛擬化解決方案。它是 Linux 的一個很小的模塊,利用 Linux 做大量的事,如任務調度、內存管理與硬件設備交互等。
從存在形式看,KVM 是兩個內核模塊 kvm.ko 和 kvm_intel.ko(對 AMD 處理器來說,就是 kvm_amd.ko),這兩個模塊用來實現 CPU 的虛擬化。 如果要讓用戶在 KVM 上完成一個虛擬機相關的操作,顯然需要用戶空間的東西,同時還包括 IO 虛擬化,所以 KVM 的解決方案借鑒了 QEMU 的東西并做了一定的修改,形成了自己的 KVM 虛擬機工具集和 IO 虛擬化的支持,也就是所謂的 qemu-kvm.(KVM is a fork of QEMU, namely qemu-kvm)
Xen
Xen 是第一類運行再裸機上的虛擬化管理程序(Hypervisor)。它支持全虛擬化和半虛擬化,Xen 支持 hypervisor 和虛擬機互相通訊,而且提供在所有 Linux 版本上的免費產品,包括 Red Hat Enterprise Linux 和 SUSE Linux Enterprise Server。Xen 最重要的優勢在于半虛擬化,此外未經修改的操作系統也可以直接在 xen 上運行(如 Windows),能讓虛擬機有效運行而不需要仿真,因此虛擬機能感知到 hypervisor,而不需要模擬虛擬硬件,從而能實現高性能。 QEMU is used by Xen.
QEMU
QEMU 是一套由 Fabrice Bellard 所編寫的模擬處理器的自由軟件。它與 Bochs,PearPC 近似,但其具有某些后兩者所不具備的特性,如高速度及跨平臺的特性,qemu 可以虛擬出不同架構的虛擬機,如在 x86 平臺上可以虛擬出 power 機器。kqemu 為 qemu 的加速器,經由 kqemu 這個開源的加速器,QEMU 能模擬至接近真實電腦的速度。
QEMU 本身可以不依賴于 KVM,但是如果有 KVM 的存在并且硬件 (處理器) 支持比如 Intel VT 功能,那么 QEMU 在對處理器虛擬化這一塊可以利用 KVM 提供的功能來提升性能。
KVM 和 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 的關系。
QEMU 是個獨立的虛擬化解決方案,從這個角度它并不依賴 KVM。而 KVM 是另一套虛擬化解決方案,不過因為這個方案實際上只實現了內核中對處理器 (Intel VT, AMD SVM) 虛擬化特性的支持,換言之,它缺乏設備虛擬化以及相應的用戶空間管理虛擬機的工具,所以它借用了 QEMU 的代碼并加以精簡,連同 KVM 一起構成了另一個獨立的虛擬化解決方案,不妨稱之為:KVM+QEMU.
KVM 用戶空間虛擬機管理工具有 kvm,kvm-img,kvm-nbd,kvm-ok 和 kvm_stat,實際上 kvm 就是一個指向 qemu-system-x86_64 的符號鏈接,kvm-img 則是指向 qemu-img 的符號鏈接。從適用的范圍來講,QEMU 虛擬化方案除了支持 x86 架構外,還支持其他很多架構,比如 qemu-system-m68k,qemu-system-mips64,qemu-system-ppc64,qemu-system-arm 等等。但是目前提到 KVM,一般指 x86 上基于 Intel VT 和 AMD SVM 的解決方案,雖然目前將 KVM 移植到 ARM, PPC 的工作正在進行中。
當然由于 redhat 已經開始支持 KVM,它認為 KVM+QEMU 的方案中用戶空間虛擬機管理工具不太好使,或者通用性不強,所以 redhat 想了一個 libvirt 出來,一個用來管理虛擬機的 API 庫,不只針對 KVM, 也可以管理 Xen 等方案下的虛擬機。
kvm-qemu 可執行程序像普通 Qemu 一樣:分配 RAM, 加載代碼,不同于重新編譯或者調用 callingKQemu,它創建了一個線程(這個很重要);這個線程調用 KVM 內核模塊去切換到用戶模式,并且去執行 VM 代碼。當遇到一個特權指令,它從新切換會 KVM 內核模塊,該內核模塊在需要的時候,像 Qemu 線程發信號去處理大部分的硬件仿真。
這個體系結構一個比較巧妙的一個地方就是客戶代碼被模擬在一個 posix 線程,這允許你使用通常 Linux 工具管理。如果你需要一個有 2 或者 4 核的虛擬機,kvm-qemu 創建 2 或者 4 個線程,每個線程調用 KVM 內核模塊并開始執行。并發性(若果你有足夠多的真實核)或者調度(如果你不管)是被通用的 Linux 調度器,這個使得 KVM 代碼量十分的小。
當一起工作的時候,KVM 管理 CPU 和 MEM 的訪問,QEMU 仿真硬件資源(硬盤,聲卡,USB,等等)當 QEMU 單獨運行時,QEMU 同時模擬 CPU 和硬件。
看完了這篇文章,相信你對“qemu,kvm,qemu-kvm,xen,libvirt 的區別有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!