From 百度百科
QEMU,是由 Fabrice Bellard開發的通用、開源機器模擬與虛擬化軟件,Fabrice Bellard是另一個著名的C編譯器的作者。QEMU可以在不同的機器上運行獨自開發的操作系統與軟件。當采用虛擬化軟件時,主機與客戶機都必須采用 x86兼容的處理器。在模擬方式下,它支持x86 處理器啟家族、MIPS R4000 、Sun SPARC和PowerPC處理器。 1.User mode模擬模式,亦即是使用者模式。QEMU能啟動那些為不同中央處理器編譯的Linux程序。而Wine及Dosemu是其主要目標。 2.System mode模擬模式,亦即是系統模式。QEMU能模擬整個電腦系統,包括中央處理器及其他周邊設備。它使得為系統源代碼進行測試及除錯工作變得容易。其亦能用來在一部主機上虛擬數部不同虛擬電腦。
磁盤轉換的簡單命令
#創建好 vmdk文件 放到windows 下面的移動硬盤里面 mout -o username:administrator,password=Test6530 //10.24.12.220/e$ /VMDK #cd到存放vmdk的文件目錄 cd /VMDK #執行命令 前提是必須安裝虛擬化服務了 qemu-img convert -f vmdk -O qcow2 Windows2008r2.vmdk Windows2008r2.qcow2 應該就可以掛載了。
From 其他cnblog
Qemu 是純軟件實現的虛擬化模擬器,幾乎可以模擬任何硬件設備,我們最熟悉的就是能夠模擬一台能夠獨立運行操作系統的虛擬機,虛擬機認為自己和硬件打交道,但其實是和 Qemu 模擬出來的硬件打交道,Qemu 將這些指令轉譯給真正的硬件。
正因為 Qemu 是純軟件實現的,所有的指令都要經 Qemu 過一手,性能非常低,所以,在生產環境中,大多數的做法都是配合 KVM 來完成虛擬化工作,因為 KVM 是硬件輔助的虛擬化技術,主要負責 比較繁瑣的 CPU 和內存虛擬化,而 Qemu 則負責 I/O 虛擬化,兩者合作各自發揮自身的優勢,相得益彰。
從本質上看,虛擬出的每個虛擬機對應 host 上的一個 Qemu 進程,而虛擬機的執行線程(如 CPU 線程、I/O 線程等)對應 Qemu 進程的一個線程
From :https://www.cnblogs.com/bakari/p/7858029.html
不同的基於KVM的虛擬化平台,可能會采用不同的虛擬化組件,目前主流的采用QEMU-KVM組件,但在不同的產品里版本有所不同,功能也有差異,下面就幾個概念進行梳理下
KVM:Kernel-Based Virtual Machine 基於內核的虛擬機,是Linux內核的一個可加載模塊,通過調用Linux本身內核功能,實現對CPU的底層虛擬化和內存的虛擬化,使Linux內核成為虛擬化層,需要x86架構的,支持虛擬化功能的硬件支持(比如Intel VT,AMD-V),是一種全虛擬化架構。KVM在2007年年2月被導入Linux 2.6.20內核中。從存在形式來看,它包括兩個內核模塊:kvm.ko 和 kvm_intel.ko(或kvm_amd.ko),本質上,KVM是管理虛擬硬件設備的驅動,該驅動使用字符設備/dev/kvm(由KVM本身創建)作為管理接口,主要負責vCPU的創建,虛擬內存的分配,vCPU寄存器的讀寫以及vCPU的運行。
QEMU:是一套由Fabrice Bellard編寫的模擬處理器的自由軟件,它是一個完整的可以單獨運行的軟件,可以獨立模擬出整台計算機,包括CPU,內存,IO設備,通過一個特殊的“重編譯器”對特定的處理器的二進制代碼進行翻譯,從而具有了跨平台的通用性。QEMU有兩種工作模式:系統模式,可以模擬出整個電腦系統,另一種是用戶模式,可以運行不同與當前硬件平台的其他平台上的程序(比如在x86平台上運行跑在ARM平台上的程序);其代碼地址 http://git.qemu.org/qemu.git ,有興趣的同學可以自己去看看,目前最新的版本是2.7.0,在0.9.1及之前版本還可以使用kqemu加速器(可以理解為QEMU的一個插件,用來提高QEMU的翻譯性能,支持Windows平台),但1.0以后版本就只能使用qemu-kvm(只支持Linux)進行加速了,1.3版本后QEMU和QEMU-KVM合二為一了。
QEMU-KVM:從前面對KVM內核模塊的介紹知道,它只負責CPU和內存的虛擬化,加載了它以后,用戶就可以進一步通過工具創建虛擬機(KVM提供接口),但僅有KVM還是不夠的,用戶無法直接控制內核去做事情(KVM只提供接口,怎么創建虛擬機,分配vCPU等並不在它上面進行),還必須有個運行在用戶空間的工具才行,KVM的開發者選擇了比較成熟的開源虛擬化軟件QEMU來作為這個工具,並對其進行了修改,最后形成了QEMU-KVM。
在QEMU-KVM中,KVM運行在內核空間,QEMU運行在用戶空間,實際模擬創建,管理各種虛擬硬件,QEMU將KVM整合了進來,通過/ioctl 調用 /dev/kvm,從而將CPU指令的部分交給內核模塊來做,KVM實現了CPU和內存的虛擬化,但kvm不能虛擬其他硬件設備,因此qemu還有模擬IO設備(磁盤,網卡,顯卡等)的作用,KVM加上QEMU后就是完整意義上的服務器虛擬化
當然,由於qemu模擬io設備效率不高的原因,現在常常采用半虛擬化的virtio方式來虛擬IO設備,另文再談
綜上所述,QEMU-KVM具有兩大作用:
1.提供對cpu,內存(KVM負責),IO設備(QEMU負責)的虛擬
2.對各種虛擬設備的創建,調用進行管理(QEMU負責)
libvirt
順帶提一提libvirt,這是RedHat開始支持KVM后,大概是覺得QEMU+KVM方案中的用戶空間虛擬機管理工具不太好用或者通用性不強,所以干脆搞了個libvirt出來,一個針對各種虛擬化平台的虛擬機管理的API庫,一些常用的虛擬機管理工具如virsh(類似vim編輯器),virt-install,virt-manager等和雲計算框架平台(如OpenStack,OpenNebula,Eucalyptus等)都在底層使用libvirt提供的應用程序接口。
libvirt主要由三個部分組成:API庫,一個守護進程 libvirtd 和一個默認命令行管理工具 virsh。
總結:
目前來說,QEMU是一個獨立的虛擬化解決方案,並不依賴KVM(它本身自己可以做CPU和內存的模擬,只不過效率較低),而KVM是另一套虛擬化解決方案,對CPU進行虛擬效率較高(采用了硬件輔助虛擬化),但本身不提供其他設備的虛擬化,借用了QEMU的代碼進行了定制,所以KVM方案一定要依賴QEMU
即使后來RedHat后來開發了libvirt,也只能簡單的認為是個虛擬機管理工具,仍然需要通過用戶空間QEMU來與KVM進行交互