qemu/kvm/qemu-kvm/virsh的區別


轉自:http://www.2cto.com/os/201305/209596.html
qemu/kvm/qemu-kvm/virsh的區別
 
qemu是一套 虛擬機管理系統,kqemu是qemu的加速器,可以認為是qemu的一個插件;qemu可以虛擬出不同架構的虛擬機,如在x86平台上可以虛擬出power機器;
 
    kvm是另外的一套虛擬機管理系統,包括內核虛擬構架和處理器相關模塊,其借用了 quem 其它一些 組件,kvm的非內核部分是由qemu實現的;加載了模塊后,才能進一步通過其他工具創建虛擬機。但僅有 KVM 模塊是遠遠不夠的,因為用戶無法直接控制內核模塊去做事情,還必須有一個用戶空間的工具
 
    qemu-kvm:kvm是linux的一個模塊,管理和創建完整的虛擬機需要相應的一些管理工具,由於kvm是在qemu的基礎上開發的,KVM 使用了 QEMU 的基於 x86 的部分,並稍加改造,形成可控制 KVM 內核模塊的用戶空間工具QEMU-KVM。
 
    libvirt,virt-manager,virsh:由於qemu-kvm的效率及通用性問題,有組織開發了libvirt用於虛擬機的管理,帶有一套基於文本的虛擬機的管理工具--virsh,以及一套用戶渴望的圖形界面管理工具--virt-manager。libvirt是用python語言寫的通用的API,不僅可以管理KVM,也可用於管理XEN;
--------------------------------------------
一個網頁說明KVM和QEMU的區別,說的比較宏觀,還比較好,大概記錄一下:
Qemu:
是一個完整的可以單獨運行的軟件,它可以用來模擬機器,非常靈活和可移植。它主要通過一個特殊的'重編譯器'將為特定處理器編寫二進制代碼轉換為另一種。(也就是,在PPC mac上面運行MIPS代碼,或者在X86 PC上運行ARM代碼)
KQemu:
當源和目標代碼有同樣的架構的時候(就像最普通的情況 x86運行在x86上面),同樣需要解析代碼去出去任
何'特權指令'並且把它們替換為上下文轉換。為了盡量使這個過程有效,有個內核模塊KQemu處理這個事情。
作為一個內核模塊,KQemu僅僅需要替換最底層的ring0-only指令。在這個情況下,Qemu仍然為模擬的機器分配所有的RAM並且加載代碼。不同的是,KQemu不需要重新編譯代碼,它僅僅調用KQemu去掃描/打補丁/執行。所有外圍的硬件仿真是在Qemu中做的。
由於大部分代碼都是沒有變換的,但是KQemu還是需要轉換ring0代碼(VM內核的絕大部分代碼),所以性能仍然不好。
KVM:
KVM包括很多部件:首先,它是一個Linux內核模塊(現在包括在主線中)用於轉換處理器到一種新的用戶(guset)模式。用戶模式有自己的ring狀態集合,但是特權ring0的指令會陷入到管理器(hypervisor)的代碼。由於這是一個新的處理器執行模型,代碼不需要任何的改動。
除了處理器狀態轉換,這個內核模塊同樣處理很小一部分低層次的模擬,比如MMU注冊(用於管理VM)和一部分PCI模擬的硬件。
在可預見的未來,Qemu團隊專注於硬件模擬和可移植性,同時KVM團隊專注於內核模塊(如果某些部分確實有性能提升的話,KVM會將一小部分模擬代碼移進來)和與剩下的用戶空間代碼的交互。
kvm-qemu可執行程序像普通Qemu一樣:分配RAM,加載代碼,不同於重新編譯或者調用calling KQemu,它創建了一個線程(這個很重要);這個線程調用KVM內核模塊去切換到用戶模式,並且去執行VM代碼。當遇到一個特權指令,它從新切換會KVM內核模塊,該內核模塊在需要的時候,像Qemu線程發信號去處理大部分的硬件仿真。
這個體系結構一個比較巧妙的一個地方就是客戶代碼被模擬在一個posix線程,這允許你使用通常Linux工具管理。如果你需要一個有2或者4核的虛擬機,kvm-qemu創建2或者4個線程,每個線程調用KVM內核模塊並開始執行。並發性(若果你有足夠多的真實核)或者調度(如果你不管)是被通用的Linux調度器,這個使得KVM代碼量十分的小
當一起工作的時候,KVM管理CPU和MEM的訪問,QEMU仿真硬件資源(硬盤,聲卡,USB,等等)當QEMU單獨運行時,QEMU同時模擬CPU和硬件。
------------------------------------------------
不同的虛擬機
  VMware:真正“同時”運行,多個操作系統在主系統的平台上,就象標准Windows應用程序那樣切換。而且每個操作系統你都可以進行虛擬的分區、配置而不影響真實硬盤的數據,你甚至可以通過網卡將幾台虛擬機用網卡連接為一個局域網,極其方便。安裝在VMware操作系統性能上比直接安裝在硬盤上的系統低不少,因此,比較適合學習和測試。
  VirtualBox:一款開源的x86虛擬機軟件。支持windows,linux等機器的虛擬,原屬德國的innotek公司,后被sun收購,稱為virtualBox,2010年 Oracle收購Sun又稱其為Oracle Vms VirtualBox。
  KVM:Kernel-based Virtual Machine的簡寫,是rhel5.4推出的最新虛擬化技術,目前紅帽只支持在64位的rhel5.4上運行kvm,同時硬件需要支持VT技術。
  Xen:Xen通過一種叫做半虛擬化的技術獲得高效能的表現(較少的效能損失, 典型的情況下大約損失 2%, 在最糟的情況下會有 8% 的效能耗損; 與其它使用完全的虛擬化卻造成最高到 20% 損耗的其他解決方案形成一個明顯的對比),甚至在某些與傳統虛擬技術極度不友好的架構上(x86),Xen也有極佳的表現。
  VirtualPc:virtualPC 2007是微軟公司開發的虛擬機軟件。
  Hyper-V:微軟的一款虛擬化軟件。
  Qemu:支持虛擬不同架構的虛擬機。
  winlinux:開將linux的安裝和使用放在windows的 系統中,而且不需要格式化硬盤,不影響原來的 windows操作系統。
  cygwin:在windows上運行模擬UNIX的環境。
--------------------------------------------
首先查詢以下包qemu-kvm virt-manager virt-viewer python-virtinst
是否安裝。
rpm -q qemu-kvm virt-manager virt-viewer python-virtinst
然后依次執行以下命令: yum install qemu-kvm virt-manager virt-viewer python-virtinst
yum groupinstall 'Virtualization'
建立一個虛擬機:
這時候就可以通過X界面來建立一個虛擬機咯。
應用程序--->系統工具----->虛擬器管理系統
///啟動后不能連接
Have you installed libvirt, and started the system service? As root:
Code:
yum -y install libvirt
chkconfig libvirtd on
service libvirtd start
再次啟動,需要輸入管理員權限。

http://blog.csdn.net/xiangpingli/article/details/45832721


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM