暑假最后一篇更新,因為,,,明天我就回學校了。
以下均為個人理解,如果有不對的地方還望各位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
和內存
進行虛擬化,提供給虛擬機用,其余硬件訪問是通過特權虛擬機
直接與硬件進行交互再返回的。
默認Domain0
VCPU和內存的大小是這樣計算的:
Domain0的VCPU = 物理設備線程數 % 10
然后向上取最小的一個偶數,就是Domain0
的VCPU數。
Domain0的內存:如果物理設備的內存小於96G,那么就默認為8G,如果物理機的內存大於96G,那么Domain0的內存 = 物理機內存 *0.05 + 8G
。