2018年7月28日 星期六

Virtualization虛擬化技術介紹




文章摘要: CPU 硬體輔助虛擬化在 Ring 模式的基礎上引入了一種新的模式1.寄居虛擬化架構 2.裸金屬虛擬化架構 3.作業系統虛擬化架構 4.混合虛擬化架構 (一)寄居虛擬化架構 寄居虛擬化架構指在宿主作業系統之上安裝和執行虛擬化程式


本節索引:


一、虛擬化基本概念


二、虛擬化常見架構型別


三、Xen架構簡介


四、CPU虛擬化原理介紹


五、記憶體虛擬化原理介紹


一、虛擬化基本概念


什麼是虛擬化?


虛擬化 是把物理的事物轉換成為邏輯的方式表現出來


常見的虛擬化


記憶體虛擬化:記憶體頁面Page File


磁碟虛擬化:RAID,Volume


網路虛擬化:vlan,vxlan


FusionSphere-x86/x64伺服器的虛擬化


計算能力:CPU/Memory的虛擬化


儲存:VIMS檔案系統


網路:分散式虛擬交換機



虛擬化的優勢


傳統物流伺服器


作業系統與物理伺服器繫結


1.難以遷移


2.難以擴充套件


3.空間佔用高


4.可靠性難以控制


5.資源利用率低


6.難以管理


虛擬化伺服器


作業系統與物理伺服器分離


1.易於遷移、擴充套件、資源整合


2.標準化的虛擬硬體


3.由一系列檔案組成,易於保護


虛擬化常見概念


Guset OS:執行在虛擬機器上的OS


Guset Machine:虛擬出來的虛擬機器


Hypervisor:也叫VMM (Virtual Machine Monitor)虛擬機器監控器,


Host OS:執行在物理機上的OS


Host Machine:物理機


模擬: emulation


x86 -> arm


sata -> scsi


完全虛擬化: Full Virtualization


開發人員直接針對物理平臺開發即可,效能能達到硬體IDE的40%


CPU:


BT


HVM


半虛擬化: Para Virtualization


也叫 不完全虛擬化 ,開發人員需針對虛擬化平臺開發,效能能達到硬體IDE的80%


建議:生產環境一般使用半虛擬化技術:簡單、效能好、易遷移上雲


IAAS CloudOS上部署xen或kvm這樣的虛擬機器,基礎架構即服務


PAAS CloudOS上直接提供一個容器作為平臺,不需要使用者安裝作業系統,平臺即服務


SAAS 本機只需執行個瀏覽器,其他全交給雲來解決,軟體即服務


以此延伸,近些年還出現了:


DBaas:資料庫即服務


LBaas:負載均衡即服務


……


二、虛擬化常見架構型別


根據在整個系統中的位置不同,虛擬化架構分為以下幾種:


1.寄居虛擬化架構


2.裸金屬虛擬化架構


3.作業系統虛擬化架構


4.混合虛擬化架構


(一)寄居虛擬化架構


寄居虛擬化架構指在宿主作業系統之上安裝和執行虛擬化程式,依賴於宿主作業系統對裝置的支援和物理


資源的管理。(類似 Vmware Workstation 的程式)




優點: 簡單、易於實現


缺點: 1.安裝和執行應用程式依賴主機作業系統對裝置的支援;


2.管理開銷較大,效能損耗大


代表產品: VMware Workstation


2)裸金屬虛擬化架構


裸金屬虛擬化架構指直接在硬體上面安裝虛擬化軟體,再在其上安裝作業系統和應用,依賴虛擬層核心和


伺服器控制檯進行管理。



優點: 1.虛擬機器不依賴作業系統


2.支援多種作業系統,多種應用


缺點: 虛擬層核心開發難度大


代表產品: WNware ESXServer、Citrix XenServer


(三)作業系統虛擬化架構


作業系統虛擬化架構在作業系統層面增加虛擬伺服器功能。作業系統虛擬化架構把單個的作業系統劃分爲


多個容器,使用容器管理器來進行管理。


宿主作業系統負責在多個虛擬伺服器(即容器)之間分配硬體資源,並且讓這些伺服器彼此獨立。



優點: 1.簡單、易於實現


2.管理開銷非常低


缺點: 隔離性查,多容器共享同一作業系統



代表產品: Docker


(四)混合虛擬化架構


混合虛擬化架構將一個核心級驅動器插入到宿主作業系統核心。這個驅動器作為虛擬硬體管理器來協調虛


擬機和宿主作業系統之間的硬體訪問。



優點: 1.相對於寄居虛擬化架構,沒有冗餘,效能高;


2.可支援多種作業系統


缺點: 需底層硬體支援虛擬化拓展功能


代表產品: Redhat KVM


三、Xen架構簡介



Domain U 執行在Xen Hypervisor上的普通虛擬機器


Domain 0 執行在Xen Hypervisor上的特權虛擬機器。它擁有訪問物理I/O資源的許可權,同時和系統上運


行的其他虛擬機器進行互動。Domain 0必須要在其他Domain啟動之前啟動。


虛擬機器複用有限的外設資源:


1)Hypervisor截獲虛擬機器對物理硬體的訪問請求,然後通過軟體的方式來模擬真實裝置的效果;


2)前端裝置驅動將資料通過VMM提供的介面轉發到後端驅動


3)後端驅動VM的資料進行分時分通道的處理


四、CPU虛擬化原理介紹


(一)基於軟體的CPU的虛擬化


基於軟體的 CPU 虛擬化,故名思議,就是通過軟體的形式來模擬每一條指令。通過前面的文章我們知道常


用的軟體虛擬化技術有兩種:優先順序壓縮和二進制程式碼翻譯。這兩種是通用技術,可以用在所有虛擬化類


型中。我們就結合 intercept 和 virtualize 來看看 CPU 軟體虛擬化是怎麼做的。



首先,一些必須的硬體知識要知道,X86 體系架構爲了讓上層的軟體(作業系統、應用程式)能夠訪問硬


件,提供了四個 CPU 特權級別,Ring 0 是最高階別,Ring 1 次之,Ring 2 更次之,Ring 3 是最低階別。


一般,作業系統由於要直接訪問硬體和記憶體,因此它的程式碼需要執行在最高階別 Ring 0 上,而應用程式的


程式碼執行在最低階別 Ring 3 上,如果要訪問硬體和記憶體,比如裝置訪問,寫檔案等,就要執行相關的系統


呼叫,CPU 的執行級別發生從 Ring 3 到 Ring 0 的切換,當完成之後,再切換回去,我們熟悉的使用者態和


核心態切換的本質就來自這裏。


虛擬化的實現也是基於這個思想,VMM 本質上是個 Host OS,執行在 Ring 0 上,Guest OS 執行在 Ring 1


上,再往上是相應層次的應用程式執行在 Ring 2 和 Ring 3 上。



(二)基於硬體的CPU虛擬化


上面的這種截獲再模擬的純軟體的虛擬化方式,勢必是效能非常低的。那怎麼樣提高效能呢,有一種改進


的方式是修改 Guest OS 中關於特權指令的相關操作,將其改為一種函式呼叫的方式,讓 VMM 直接執


行,而不是截獲和模擬,這樣就能在一定程度上提高效能。


但這種方式並不通用,要去改 Guest OS 的程式碼,只能看作是一種定製。爲了能夠通用,又能夠提高性


能,就只能從硬體上去做文章了。所以,後來,以 Intel 的 VT-x 和 AMD 的 AMD-V 為主的硬體輔助的


CPU 虛擬化就被提出來(Intel VT 包括 VT-x (支援 CPU 虛擬化)、EPT(支援記憶體虛擬化)和 VT-


d(支援 I/O 虛擬化)。


CPU 硬體輔助虛擬化在 Ring 模式的基礎上引入了一種新的模式,叫 VMX 模式。它包括根操作模式


(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。


這兩種模式都有 Ring 0 – Ring 3 的特權級。所以,在描述某個應用程式時,除了描述其屬於哪個特權級,


還要指明其處於根模式還是非根模式。


引入這種模式的好處就在於,Guest OS 執行在 Ring 0 上,就意味著它的核心指令可以直接下達到硬體層


去執行,而特權指令等敏感指令的執行則是由硬體輔助,直接切換到 VMM 執行,這是自動執行的,應用



程式是感知不到的,效能自然就提高了。



KVM 是一種硬體輔助的虛擬化技術,支援 Intel VT-x 和 AMD-v 技術。


五、記憶體虛擬化原理介紹


通過各種記憶體複用技術( 零頁共享、記憶體氣泡和記憶體交換 )與合理的排程,使主機上的虛擬機器對記憶體的


訪問及時響應,減少記憶體複用開啟情況下的虛擬機器效能損耗


(一)零頁共享


將主機上的多個虛擬機器的零頁記憶體在實體記憶體中進行合併,釋放出更多的實體記憶體供虛擬機器使用。


(二)記憶體氣泡


Hypervisor通過記憶體氣泡將較空閒虛擬機器記憶體釋放給記憶體使用率較高的虛擬機器,用來提升記憶體利用率。


記憶體氣泡技術對虛擬機器效能影響較小,但是在記憶體減少時,使用者能感知到


(三)記憶體交換


當虛擬機器的記憶體壓力較大時,將虛擬機器記憶體頁交換到磁碟中從而釋放記憶體;


當虛擬機器記憶體頁交換到磁碟後,虛擬機器的效能將下降比較明顯


本文來自投稿,不代表Linux運維部落立場,如若轉載,請註明出處:http://www.178linux.com/104073





http://www.kubonews.com/2018072826702.html

每日即時更新新聞,請上:http://www.kubonews.com

沒有留言:

張貼留言