目前主流的虛擬化平臺有
優點:虛擬機不依賴於操作系統,可以支持多種操作系統,多種應用,更加靈 活
例如 VMware vsphere 微軟的hyper-v
誠然,QEMU可以選擇其他的虛擬機或技術來加速,比如Xen或者KQEMU;
KVM也可以選擇其他的用戶空間程序作爲虛擬機實現,只要它按照KVM提供的API來設計。但是在現實中,QEMU與KVM兩者的結合是最成熟的選擇,這對一個新開發和後起的項目(KVM)來說,無疑多了一份未來成功的保障。
VMWARE的 ESX
微軟的Hyper-V
微軟的Hyper-V
開源的XEN
開源的KVM
開源的KVM
虛擬機架構分析:
1.寄居架構:寄居在主機操作系統之上,依靠主機操作系統來模擬相關的硬件設備。
此類架構多爲個人計算機使用,
優點:簡單,便於實現
缺點:安裝和運行應用程序依賴於主機操作系統對設備的支持
例如 VMware Workstation、
2.原生架構(也叫裸機裸金屬):直接在硬件上運行虛擬化管理層,性能比較好,相對穩定。
優點:虛擬機不依賴於操作系統,可以支持多種操作系統,多種應用,更加靈 活
缺點:虛擬層內核開發難度較大
例如 VMware vsphere 微軟的hyper-v
這裏只討論 原生架構
vm vsphere的架構 實體主機——>ESX——>虛擬機
微軟的Hyper-V架構 實體主機——>Windows Server 2008 R2及以上——>虛擬機
(hyper-v)
XEN架構 實體主機——>Linux(支持xen)——>Xen——>虛擬機
KVM架構 實體主機——>Linux(支持kvm)——>kvm——>虛擬機
微軟的Hyper-V架構 實體主機——>Windows Server 2008 R2及以上——>虛擬機
(hyper-v)
XEN架構 實體主機——>Linux(支持xen)——>Xen——>虛擬機
KVM架構 實體主機——>Linux(支持kvm)——>kvm——>虛擬機
詳細介紹:
1.kvm
1.kvm
KVM (名稱來自英語: Kernel-basedVirtual
Machine 的縮寫,即基於內核的虛擬機) , 是一種用於Linux內核中的虛擬化基礎設施,可以將Linux內核轉化爲一個hypervisor。
其基本結構由兩部分組成:
一個是KVM Driver ,是Linux 內核的一個模塊,負責虛擬機的創建,虛擬內存的分配,虛擬CPU寄存器的讀寫以及虛擬CPU的運行等;
其基本結構由兩部分組成:
一個是KVM Driver ,是Linux 內核的一個模塊,負責虛擬機的創建,虛擬內存的分配,虛擬CPU寄存器的讀寫以及虛擬CPU的運行等;
另一個部分是稍微修改過的Qemu,用於模擬PC硬件的用戶空間組件,模擬I/O設備模型以及提供訪問外設的途徑。
qemu 全稱 Quick
Emulator 。 是獨立虛擬軟件,能獨立運行虛擬機(根本不需要 kvm )。 kqemu 是該軟件的加速軟件。 kvm 並不需要 qemu 進行虛擬處理,只是需要它的上層管理界面進行虛擬機控制。虛擬機依舊是由 kvm 驅動。所以,大家不要把概念弄錯了,盲目的安裝 qemu 和 kqemu 。
當一起工作的時候,KVM管理CPU和MEM的訪問,QEMU仿真硬件資源(硬盤,聲卡,USB,等等)當QEMU單獨運行時,QEMU同時模擬CPU和硬件。
從QEMU角度來看,也可以說QEMU使用了KVM模塊的虛擬化功能,爲自己的虛擬機提供硬件虛擬化的加速,從而極大地提高了虛擬機的性能。除此之外,虛擬機的配置和創建,虛擬機運行依賴的虛擬設備,虛擬機運行時的用戶操作環境和交互,以及一些針對虛擬機的特殊技術(諸如動態遷移),都是由QEMU自己實現的。
從QEMU和KVM模塊之間的關係可以看出,這是典型的開源社區在代碼共用和開發項目共用上面的合作。當一起工作的時候,KVM管理CPU和MEM的訪問,QEMU仿真硬件資源(硬盤,聲卡,USB,等等)當QEMU單獨運行時,QEMU同時模擬CPU和硬件。
從QEMU角度來看,也可以說QEMU使用了KVM模塊的虛擬化功能,爲自己的虛擬機提供硬件虛擬化的加速,從而極大地提高了虛擬機的性能。除此之外,虛擬機的配置和創建,虛擬機運行依賴的虛擬設備,虛擬機運行時的用戶操作環境和交互,以及一些針對虛擬機的特殊技術(諸如動態遷移),都是由QEMU自己實現的。
誠然,QEMU可以選擇其他的虛擬機或技術來加速,比如Xen或者KQEMU;
KVM也可以選擇其他的用戶空間程序作爲虛擬機實現,只要它按照KVM提供的API來設計。但是在現實中,QEMU與KVM兩者的結合是最成熟的選擇,這對一個新開發和後起的項目(KVM)來說,無疑多了一份未來成功的保障。
libvirt是目前使用最爲廣泛的對KVM虛擬機進行管理的工具和API。Libvirtd是一個daemon進程,可以被本地的virsh調用,也可以被遠程的virsh調用,Libvirtd調用qemu-kvm操作虛擬機。