目錄
第二章:虛擬化實現(xiàn)技術(shù)架構(gòu)
CPU虛擬機要解決的問題(x86處理器結(jié)構(gòu)漏洞)及軟硬件解決方案
intel VT-x的技術(shù)特點,VMX(非根操作)的操作模式及操作流程
vCPU的組成和基本操作
內(nèi)存虛擬化的地址映射問題
Intel EPT的基本概念及地址轉(zhuǎn)換實現(xiàn)過程
Intel VT-d的技術(shù)特點以及DMA重映射過程
?TUN/TAP設(shè)備的工作原理
KVM的系統(tǒng)框架結(jié)構(gòu)、QEMU和KVM的關(guān)系
KVM的初始化過程
-
第二章:虛擬化實現(xiàn)技術(shù)架構(gòu)
CPU虛擬機要解決的問題(x86處理器結(jié)構(gòu)漏洞)及軟硬件解決方案
? ? ? ? 要解決的問題在x86體系結(jié)構(gòu)中實現(xiàn)虛擬化,需要客戶機系統(tǒng)一下加入虛擬化層,來實現(xiàn)物理資源的共享。因此,這個虛擬化層應(yīng)該運行在 Ring0 級別,而客戶機操作系統(tǒng)只能運行在 Ring0 的以上的級別。但是,客戶機操作系統(tǒng)中的特權(quán)指令,如果不運行在 Ring0 級別,將會有不同的 語義,產(chǎn)生不同的效果,或者根本不起作用,這是處理器結(jié)構(gòu)在虛擬化設(shè)計上存在的缺陷,這 些缺陷會直接導(dǎo)致虛擬化漏洞。為了彌補這種漏洞,在硬件還未提供足夠的支持之前,在半虛擬化中,客戶機操作系統(tǒng)和虛擬花平合必須兼容,否則虛擬機無法有效操 作宿主機。x86 系統(tǒng)結(jié)構(gòu)下處理器虛擬化如圖 2-1 所示。
????????解決方法基于軟件:基于軟件的虛擬化技術(shù)就已經(jīng)先給出了兩種可行的解決方案:全虛擬化和半虛擬化。全虛擬化可以采 用二進(jìn)制代碼動態(tài)翻譯技術(shù)(Dynamic Binary Translation)來解決客戶機的特權(quán)指令問題,這 種方法的優(yōu)點在于代碼的轉(zhuǎn)換工作是動態(tài)完成的,無須修改客戶機操作系統(tǒng),因而可以支持多 種操作系統(tǒng)。而半虛擬化通過修改客戶機操作系統(tǒng)來解決虛擬機執(zhí)行蛙權(quán)拼令的問題。被虛擬 化平臺托管的客戶機操作系統(tǒng)需要修改其操作系統(tǒng),將所有敏感指令替換為對底層虛擬化平臺的超級調(diào)用。
????????解決方法基于硬件:目前,Intel和AMD公司分別推出了硬件輔助虛擬化技術(shù)Intel VT和AMD SVM來更高效,更容易的實現(xiàn)虛擬化.
intel VT-x的技術(shù)特點,VMX(非根操作)的操作模式及操作流程
?VT-x的技術(shù)特點:能夠降低(甚至消除)多個虛擬機操作系統(tǒng)之間的資源爭奪和限制,從硬件上極大地改善虛擬機的安全性和性能,有助于提高基于軟件的虛擬化解決方案的靈活性與穩(wěn)定性。. IntelVT-x技術(shù)可以消除VMM(VirtualMachineMonitor虛擬機監(jiān)視器)參與虛擬機“中斷”請求的處理與特定指令的執(zhí)行.
?VMX的操作模式及操作流程:
????????有兩種VMX操作模式:VMX?根操作(root operation) 與VMX 非根操作(non-root operation)。操作流程如下:
- 通過CPUID指令判斷VMX功能是否被當(dāng)前處理器支持;
- 如果當(dāng)前處理器支持VMX功能,那么通過設(shè)置CR4.VMXE [bit13] = 1來打開VMX功能;
- 通過VMXON指令開啟VMX功能,并且激活VMM;
- 在VMX中可以通過VM Entry和VM Exit來進(jìn)入客戶虛擬機或者返回到VMM中,即切換到VMX非根操作模式或者切換到VMX根操作模式,也可以利用此操作來切換運行的客戶虛擬機;
- 通過VMXOFF來關(guān)閉VMX功能,從而終止VMX的操作。
vCPU的組成和基本操作
?????????vCPU的組成部分一般可以分為兩部分:一是VMCS結(jié)構(gòu),其中存儲的是由硬件使用和更新的內(nèi)容,這主要是虛擬寄存器;二是VMCS沒有保存而由VMM使用和更新的內(nèi)容,主要是VCMS以外的部分。
? ? ? ? vCPU的具體操作如下:
(1)vCPU 的創(chuàng)建:創(chuàng)建 VCPU 實際上是創(chuàng)建 vCPU 描述符。由于 vCPU 描述符是一個結(jié)構(gòu)體,因? 此創(chuàng)建 vCPU 描述符就是分配相應(yīng)大小的內(nèi)存。vCPU 描述符在創(chuàng)建之后,需要進(jìn)一步初 始化才能使用。
( 2)vCPU 的運行:vCPU 創(chuàng)建并初始化好之后,就會被調(diào)度程序調(diào)度運行,調(diào)度程 序會根據(jù)一定的策略算法來選擇 vCPU 運行。
(3)vCPU 的退出:和進(jìn)程一樣,vCPU 作為調(diào)度單位不可能永遠(yuǎn)運行,總會因為各種原因退出,例如執(zhí)行了特權(quán)指令、發(fā)生了物理中斷等,這種退出在 VT-x 中表現(xiàn)為發(fā)生 VM-Exit。對 vCPU 退出的處理是 VMM 進(jìn)行 CPU虛擬化的核心,例如模擬各種特權(quán)指令。
(4)vCPU 的再運行:指 VMM 在處理完 vCPU 的退出后,會負(fù)責(zé)將 vCPU 投入再運行。
內(nèi)存虛擬化的地址映射問題
?包含了兩個問題:
(1)實現(xiàn)地址空間的虛擬化,維護(hù)宿主機物理地址和客戶機物理地址之間的映射關(guān)系。
(2)解惑宿主機對客戶及物理地址的訪問,并根據(jù)所記錄的映射關(guān)系,將其轉(zhuǎn)換成宿主機物理地址。
解決方案:解決第一個問題inert公司提供了EPT技術(shù),AMD公司提供了AMD NPT技術(shù)直接在硬件上支持GVA到GPA到HPA的兩次地址轉(zhuǎn)換,大大降低了內(nèi)存虛擬化的難度。解決第二個問題最簡單的解決方法就是讓客戶及對宿主機物理地址空間的每一次訪問都觸發(fā)異常,由VMM查詢地址傳喚表模仿其訪問,但是這種性能很差
Intel EPT的基本概念及地址轉(zhuǎn)換實現(xiàn)過程
?
?Intel EPT的基本概念:EPT是intel為內(nèi)存虛擬化而設(shè)計的一種硬件機制,主要是是為了實現(xiàn)Guest對于物理內(nèi)存的訪問控制
為了簡化內(nèi)存虛擬化的實現(xiàn),以及提升內(nèi)存虛擬化的性能,Intel推出了EPT(Enhanced Page Table)技術(shù),即在原有的頁表基礎(chǔ)上新增了EPT頁表實現(xiàn)另一次映射。這樣,GVA-GPA-HPA兩次地址轉(zhuǎn)換都由CPU硬件自動完成。
轉(zhuǎn)換實現(xiàn)過程:
通過EPT的GVA和HPA大概翻譯的過程:
- 處于非根模式的CPU加載guest進(jìn)程的gCR3;
- gCR3是GPA,cpu需要通過查詢EPT頁表來實現(xiàn)GPA->HPA;
- 如果沒有,CPU觸發(fā)EPT Violation, 由Hypervisor截獲處理;
- 假設(shè)客戶機有m級頁表,宿主機EPT有n級,在TLB均miss的最壞情況下,會產(chǎn)生MxN次內(nèi)存訪問,完成一次客戶機的地址翻譯;
Intel VT-d的技術(shù)特點以及DMA重映射過程
?????????Intel VT-d是IOMMU技術(shù)在intel上的實現(xiàn),全稱是Intel Virtualization Technology for Direct I/O,它是Intel虛擬化技術(shù)的一部分,主要針對的是I/O子系統(tǒng),它的實現(xiàn)主要是通過在硬件上引入重定向單元,該硬件重定向單元用于對I/O子系統(tǒng)的DMA操作和中斷傳遞進(jìn)行重定向,從而輔助VMM(Virtual Machine Monitor)實現(xiàn)I/O子系統(tǒng)的虛擬化。
? ? ? ? DMA重映射過程:
?TUN/TAP設(shè)備的工作原理
?Tun/Tap驅(qū)動程序工作原理?在計算機網(wǎng)絡(luò)中,TUN與TAP是 操作系統(tǒng)內(nèi)核 中的虛擬 網(wǎng)絡(luò)設(shè)備?。 不同于普通靠硬件網(wǎng)路 板卡 實現(xiàn)的設(shè)備,這些虛擬的 網(wǎng)絡(luò)設(shè)備?全部用軟件實現(xiàn),并向運行于操作系統(tǒng)上的軟件提供與硬件的網(wǎng)絡(luò)設(shè)備完全相同的功能。
KVM的系統(tǒng)框架結(jié)構(gòu)、QEMU和KVM的關(guān)系
KVM的系統(tǒng)框架結(jié)構(gòu)如下:
1. ?kvm 驅(qū)動 ?現(xiàn)在已經(jīng)是Linux內(nèi)核的一個模塊了,它的作用主要是負(fù)責(zé)虛擬機的創(chuàng)建,虛擬內(nèi)存的分配 虛擬CPU寄存器的讀寫和虛擬cpu的運行
2. ?另一個組件是 Qemu ? ?QEMU是一個通用的開源機器模擬器和虛擬器,其主要的功能是用于模擬虛擬機的用戶空間組件,提供io 設(shè)備模型,訪問外設(shè)的途徑
QEMU和KVM的關(guān)系:
?從QEMU角度來看,虛擬機運行期間,QEMU通過KVM模塊提供的系統(tǒng)調(diào)用接口進(jìn)行內(nèi)核設(shè)置,由KVM模塊負(fù)責(zé)將虛擬機置于處理器的特殊模式運行。
KVM的初始化過程
?(1)初始化 CPU 硬件。KVM 是基于硬件進(jìn)行虛擬化,CPU 必須支持虛擬化技術(shù)。 KVM 會首先檢測當(dāng)前系統(tǒng)的 CPU,確保 CPU 支持虛擬化。當(dāng) KVM 模塊被加載時,KVM 模塊會先初始化內(nèi)部數(shù)據(jù)結(jié)構(gòu)。KVM 的內(nèi)核部分是作為可動態(tài)加載內(nèi)核模塊運行在宿主 機中的,其中一個模塊是和平臺無關(guān)的實現(xiàn)虛擬化核心基礎(chǔ)架構(gòu)的 kvm 模塊,另一個是 與硬件平臺相關(guān)的 kvm_intel 模塊或者是 kvm_amd 模塊。
( 2)打開 CPU 控制寄存器 CR4 中的虛擬化模式開關(guān),并通過執(zhí)行特定指令將宿主機 操作系統(tǒng)置于虛擬化模式中的根模式。文章來源:http://www.zghlxwxcb.cn/news/detail-442626.html
(3)KVM 模塊創(chuàng)建特殊設(shè)備文件/devkvm,并等待來自用戶空間的命令(例如,是 否創(chuàng)建虛擬客戶機,創(chuàng)建什么樣的虛擬客戶機等)。文章來源地址http://www.zghlxwxcb.cn/news/detail-442626.html
到了這里,關(guān)于云計算虛擬化技術(shù)與開發(fā)-------虛擬化技術(shù)應(yīng)用第二章內(nèi)容(CPU虛擬機X86要解決的問題、VT-x、VMX、vCPU、EPT、VT-d)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!