簡述KVM架構和Xen架構

暑假最後一篇更新,由於,,,明天我就回學校了。架構

如下均爲我的理解,若是有不對的地方還望各位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僅支持全局虛擬化。code


Xen架構


再來看一下XenXen支持全虛擬化和半虛擬化,(全虛擬化就是運行在虛擬環境的虛擬機沒法感知到本身是運行在虛擬環境之上,只會以爲本身是運行在硬件之上,半虛擬化是運行在虛擬環境的虛擬機能夠感知到本身不是直接運行在硬件環境之上)這一點不一樣於KVM的僅支持全局虛擬化。Xen是直接運行在硬件上的,也就是上面提到的1型虛擬化,直接對硬件進行虛擬化,而後在硬件之上直接跑虛擬機,在Xen架構中的虛擬機分爲兩種:Domain0DoaminU.Domain0又叫作特權虛擬機,具備直接訪問硬件和管理其餘操做系統的權限,而DoaminU就是普通的虛擬機,DoaminU不能直接訪問硬件,全部的操做都是經過驅動發送到特權虛擬機Domain0,由Domain0去和硬件交互再返回給普通用戶,因此,Xen架構的虛擬化須要先運行Domain0
Xen架構也是對CPU內存進行虛擬化,提供給虛擬機用,其他硬件訪問是經過特權虛擬機直接與硬件進行交互再返回的。
默認Domain0VCPU和內存的大小是這樣計算的:blog

Domain0的VCPU = 物理設備線程數 % 10而後向上取最小的一個偶數,就是Domain0的VCPU數。
Domain0的內存:若是物理設備的內存小於96G,那麼就默認爲8G,若是物理機的內存大於96G,那麼Domain0的內存 = 物理機內存 *0.05 + 8G進程

相關文章
相關標籤/搜索