I/O虛擬化技術
當虛擬化后,服務器的以太網(wǎng)端口被分割為多個后,網(wǎng)絡、存儲以及服務器之間的流量可能就不夠用了。當遇到I/O瓶頸時,CPU會空閑下來等待數(shù)據(jù),計算效率會大大降低。所以虛擬化也必須擴展至I/O系統(tǒng),在工作負載、存儲以及服務器之間動態(tài)共享帶寬,能夠最大化地利用網(wǎng)絡接口。
I/O虛擬化的目標是不僅讓虛擬機訪問到它們所需要的I/O資源,而且要做好它們之間的隔離工作,更重要的是,減輕由于虛擬化所帶來的開銷。
全虛擬化: 通過模擬I/O設備(磁盤和網(wǎng)卡等)來實現(xiàn)虛擬化。對Guest OS而言,它所能看到就是一組統(tǒng)一的I/O設備,VMM截獲Guest OS對I/O設備的訪問請求,然后通過軟件模擬真實的硬件。這種方式對Guest而言非常透明,無需考慮底層硬件的情況。比如Guest操作的是磁盤類型、物理接口等等。
半虛擬化: 通過前端、后端架構,將Guest的I/O請求通過一個環(huán)狀隊列傳遞到特權域(也被稱為Domain0)。因為這種方式的相關細節(jié)較多,所以會在后文進行深入分析。
硬件輔助虛擬化: 最具代表性莫過于Intel的VT-d/VT-c,AMD的IOMMU和PCI-SIG的IOV等。這種技術也需要相應網(wǎng)卡配合實現(xiàn),目前常見的網(wǎng)卡分為普通網(wǎng)卡、VMDq直通和SR-IOV。
普通網(wǎng)卡采用Domin0網(wǎng)橋隊列。
VMDq通過VMM在服務器的物理網(wǎng)卡中為每個虛機分配一個獨立的隊列,虛機出來的流量可直接經(jīng)過軟件交換機發(fā)送到指定隊列上,軟件交換機無需進行排序和路由操作,Hyper-V就是采用這種模式。
SR-IOV通過創(chuàng)建不同虛擬功能(VF)的方式,給虛擬機使用物理獨立網(wǎng)卡,實現(xiàn)虛擬機直接跟硬件網(wǎng)卡通信,不再經(jīng)過軟件交換機,減少了虛擬化管理程序?qū)拥牡刂忿D(zhuǎn)換。
Intel硬件對虛擬化支持
VT-x技術 為IA 32 處理器增加了VMX root operation 和 VMX non-root operation兩種操作模式。VMM自己運行在 VMX root operation 模式,GuestOS運行在VMXnon-root operation 模式。兩種操作模式都支持 Ring0-Ring 3特權運行級別,因此 VMM和 Guest OS 都可以自由選擇它們所期望的運行級別。允許虛擬機直接執(zhí)行某些指令,減少VMM負擔。VT-x指至強處理器的VT技術,VT-i指安騰處理器的VT技術。
VT-d(VT for Direct I/O)主要在芯片組中實現(xiàn),允許虛擬機直接訪問I/O設備,以減少VMM和CPU的負擔。其核心思想就是讓虛擬機能直接使用物理設備,但是這會牽涉到I/O地址訪問和DMA的問題,而VT-d通過采用DMA重映射和I/O頁表來解決這兩個問題,從而讓虛擬機能直接訪問物理設備。
VT-c(VTfor Connectivity)主要在網(wǎng)卡上實現(xiàn),包括兩個核心技術VMDq和VMDc。VMDq通過網(wǎng)卡上的特定硬件將不同虛擬機的數(shù)據(jù)包預先分類,然后通過VMM分發(fā)給各虛擬機,以此減少由VMM進行數(shù)據(jù)包分類的CPU開銷。VMDc允許虛擬機直接訪問網(wǎng)卡設備,Single Root I/O Virtualization(SR-IOV)是PCI-SIG規(guī)范,可以將一個PCIe設備分配給多個虛擬機來直接訪問。
可信執(zhí)行技術(TXT)通過使用高級的模塊芯片,可以有效確保用戶計算機免受各種安全威脅。主要是通過硬件內(nèi)核和子系統(tǒng)來控制被訪問的計算機資源。使得計算機病毒、惡意代碼、間諜軟件和其他安全威脅將不復存在。
GPU及GPU虛擬化技術
GPU直通將GPU設備直通給虛擬機;GPU共享則將GPU設備直通給GPU server虛擬機,GPU server可與GPU client共享其 GPU設備;GPU虛擬化是指將GPU設備可虛擬化為n個vGPU,對應的n個虛擬機可同時直接使用該GPU設備,支持虛擬化的GPU設備可配置為直通或虛擬化類型。
GPU虛擬化通過VGX GPU硬件虛擬化功能,把一個物理GPU設備虛擬為多個虛擬GPU設備供虛擬機使用,每個虛擬機通過綁定的vGPU可以直接訪問物理GPU的部分硬件資源,所有vGPU都能夠分時共享訪問物理GPU的3D圖形引擎和視頻編解碼引擎,并擁有獨立的顯存。
GPU虛擬化功能支持將一個物理GPU設備可同時供多個虛擬機使用,而GPU直通中一個GPU設備只能給一個虛擬機使用。GPU虛擬化使同時使用同一GPU物理設備的虛擬機間互不影響,系統(tǒng)自動分配物理GPU設備的處理能力給多個虛擬機,而GPU共享是通過GPU server掛載GPU設備,在主機上建立GPU Server與GPU client的高速通訊機制,使得GPU client可以共享GPU server的GPU設備,GPU client是否享有GPU功能完全依賴于GPU server。