首頁 > 軟體

虛擬化技術,型別,KSM個人總結

2020-06-16 17:43:13

一、虛擬化技術
1、XEN 英國劍橋大學開發,2007 RedHat 5.0整合XEN。被思傑收購。 執行XEN虛擬化需要使用ZEN客製化過的核心,普通的linux的標準核心需要升級到XEN客製化核心才能使用XEN虛擬化。(保證guses OS和hostOS完美配合)
2、KVM  Kernel-based Virtual Machine,redhat5.4 整合KVM,依然保留了XEN;redhat6之後只有KVM。不同於ZEN,使用linux標準的核心,KVM是以模組的方式存在,所有的虛擬機器都是一個進程。
 
二、虛擬化型別
1、完全虛擬化
如果CPU支援VT-x或者AMD-v,裝置就支援全虛擬化,否則只能半虛擬化(只能支援linux,不能安裝windows);原因是因為CPU的工作原理: Intel的x86處理器是通過Ring級別來進行存取控制的,級別共分4層,RING0,RING1,RING2,RING3。kernel執行在RING0這一層,應用程式在RING3層,Windows只使用其中的兩個級別RING0和RING3。RING0層擁有最高的許可權,RING3層擁有最低的許可權。按照Intel原有的構想,應用程式工作在RING3層,只能存取RING3層的資料,作業系統工作在RING0層,可以存取所有層的資料,而其他驅動程式位於RING1、RING2層,每一層只能存取本層以及許可權更低層的資料。

CPU工作原理
 

CPU工作原理
 
敏感指令引入虛擬化後,虛擬機器中的系統(guest OS)就不能執行在Ring 0上。因此,原本需要在最高階別下執行的指令就不能夠直接執行,這些指令叫做敏感指令集。後來人們給linux核心植入一些程式碼(windows核心沒有開源無法修改),這些敏感指令交由VMM(Virtual MachineMonitor,虛擬機器監控器)處理執行。當執行這些指令時,都由VMM捕獲翻譯。效率非常低下。

現在的虛擬化叫做基於硬體完全虛擬化。VMware是基於軟體的完全虛擬化,不在意cpu是否支援虛擬化。
 
敏感指令集包括:
1.企圖存取或修改虛擬機器模式或機器狀態的指令。
2.企圖存取或修改敏感暫存器或儲存單元,如時鐘暫存器、中斷暫存器等的指令。
3.企圖存取儲存保護系統或記憶體、地址分配系統的指令。
4.所有I/O指令。
2、半虛擬化
虛擬機器需要使用到的網絡卡驅動,硬碟驅動,使用的半虛擬化技術驅動優於傳統裝置。如virtI0、vmware tools都是半虛擬化驅動。提升虛擬機器的效能。
3、硬體虛擬化(本地虛擬化)
後來,CPU廠商,開始支援虛擬化了,情況有發生變化,拿X86 CPU來說,引入了Intel-VT 技術,支援Intel-VT 的CPU,有VMXroot operation 和 VMX non-root operation兩種模式,兩種模式都支援Ring 0 ~ Ring 3 這 4 個執行級別。這下好了,VMM可以執行在VMX root operation模式下,虛擬機器執行在VMX non-root operation模式下。也就說,硬體這層做了些區分,這樣全虛擬化下,有些靠“捕獲異常-翻譯-模擬”的實現就不需要了。而且CPU廠商,支援虛擬化的力度越來越大,靠硬體輔助的全虛擬化技術的效能逐漸逼近半虛擬化,再加上全虛擬化不需要修改客戶作業系統這一優勢,全虛擬化技術應該是未來的發展趨勢。因為在硬體虛擬化下虛擬機器guest OS也可以工作在Ring0,所以虛擬機器支援虛擬機器裡面執行虛擬機器,支援虛擬機器的巢狀。
 
1、CPU虛擬化  intel的 VT-X,AMD-V
2、MMU虛擬化 intel EPT ,AMD RVI
3、I/O虛擬化  intel VT-D,AMD IOMMU
 
IntelVT-x,AMD-V :CPU虛擬化技術 cat /proc/cpuinfo  檢視是否有vtx(intel)  svm(AMD)
 
intelVT-D 直接IO:英特爾VT-d通過減少 VMM 參與管理 I/O 流量的需求,不但加速了資料傳輸,而且消除了大部分的效能開銷。這是通過使 VMM將特定 I/O 裝置安全分配給某一個單獨的虛擬機器使用。每個裝置在系統記憶體中都有一個專用區域,只有該裝置及其分配的客戶作業系統才能對該區域進行存取。可直接在客戶作業系統與為其分配的裝置之間進行傳輸。減少了的 VMM 負載,進一步縮減伺服器CPU的負載。
 
AMDIOMMU:將一個網絡卡分給很多個虛擬機器
 
IntelVT-C:兩大技術VMDq和VMDc;
傳統虛擬化環境中,VMM 必須對每個單獨的資料進行分類,並將其傳送到為其分配的虛擬機器。這樣會占用大量的處理器週期。而借助 VMDq,該分類功能可由網絡卡內的專用硬體來執行,VMM 只需負責將預分類的封包組傳送到適當的客戶作業系統。這將減緩 I/O 延遲。虛擬機器直接互連(VMDc)支援虛擬機器直接存取網路 I/O 硬體,減輕VMM的負擔,從而顯著提升虛擬效能。
 
IntelEPT, AMD RVI 巢狀頁表:虛擬機器呼叫的記憶體需要對映實體記憶體,這個虛擬機器記憶體是按需分配,需要多少記憶體才會對映實體記憶體。正常情況下CPU需要消耗更多的週期來對映實體記憶體到虛擬機器,MMU(記憶體管理單元)虛擬化允許CPU硬體來對映記憶體頁,減少VMM的負擔。
三、KSM
KSM  kernel same-page merging,優點:相同實體記憶體片只保留1份,多個虛擬機器共用這一份記憶體。缺點:kernel每隔一段時間掃描一下記憶體,會帶來一定開銷。

執行 ksctlinfo | start | stop


四、遠端協定
Redhat  vnc
微軟    rdp
思傑    ica
華為    hdp
開源    spice

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-05/130878.htm


IT145.com E-mail:sddin#qq.com