暑假最后一篇更新,因為,,,明天我就回學校了。
以下均為個人理解,如果有不對的地方還望各位dalao不吝賜教。
虛擬化
虛擬化是通過Hypervisor程序實現的,Hypervisor的作用是將硬件虛擬化提供給多個操作系統使用,是虛擬化技術的核心。
虛擬化分為兩種:1型虛擬化和2型虛擬化。
1型虛擬化是將Hypervisor直接安裝在物理機上,然后虛擬機直接運行在Hypervisor上,Xen就是屬於1型虛擬化。2型虛擬化是先在硬件上安裝操作系統,然后將Hypervisor作為系統的一個程序運行在系統上從而實現對虛擬機的管理,KVM就是屬於2型虛擬化。
KVM架構

先來看一下KVM,KVM是基於Linux內核實現的,KVM的內核模塊叫做kvm.ko,實現對Linux的CPU和內存虛擬化,是Linux的一個進程,負責VCPU和內存的分配,而其他設備的虛擬就交給了qemu。
qemu運行在用戶空間,KVM運行在內核,兩者通過/dev/kvm進行交互。
KVM僅支持全局虛擬化。
Xen架構

再來看一下Xen,Xen支持全虛擬化和半虛擬化,(全虛擬化就是運行在虛擬環境的虛擬機無法感知到自己是運行在虛擬環境之上,只會覺得自己是運行在硬件之上,半虛擬化是運行在虛擬環境的虛擬機可以感知到自己不是直接運行在硬件環境之上)這一點不同於KVM的僅支持全局虛擬化。Xen是直接運行在硬件上的,也就是上面提到的1型虛擬化,直接對硬件進行虛擬化,然后在硬件之上直接跑虛擬機,在Xen架構中的虛擬機分為兩種:Domain0和DoaminU.Domain0又叫做特權虛擬機,具有直接訪問硬件和管理其他操作系統的權限,而DoaminU就是普通的虛擬機,DoaminU不能直接訪問硬件,所有的操作都是通過驅動發送到特權虛擬機Domain0,由Domain0去和硬件交互再返回給普通用戶,所以,Xen架構的虛擬化需要先運行Domain0。
Xen架構也是對CPU和內存進行虛擬化,提供給虛擬機用,其余硬件訪問是通過特權虛擬機直接與硬件進行交互再返回的。
默認Domain0VCPU和內存的大小是這樣計算的:
Domain0的VCPU = 物理設備線程數 % 10然后向上取最小的一個偶數,就是Domain0的VCPU數。
Domain0的內存:如果物理設備的內存小於96G,那么就默認為8G,如果物理機的內存大於96G,那么Domain0的內存 = 物理機內存 *0.05 + 8G。
