本節索引:
一、虛擬化基本概念
二、虛擬化常見架構類型
三、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.www58058.com/104073