虛擬化、CPU虛擬化、內存虛擬化、設備和I/O虛擬化


對於業界標准的x86系統,虛擬化采取hosted或者hypervisor架構

hosted架構將虛擬化層以一個應用程序的方式安裝運行於操作系統之上,支持最為廣泛的各種硬件配置。

hypervisor(裸金屬)架構將虛擬化層直接安裝到干凈的x86系統上,由於它不需要通過操作系統而直接訪問硬件,hypervisor架構相對於hosted架構效率更高,且具有更好的可擴展性、健壯性和性能。

VMware Player, ACE, Workstation和Server使用了hosted架構的便捷性,

ESX server針對已認證的硬件采用hypervisor架構以達到數據中心級別的性能。

x86操作系統被設計成直接運行在硬件上,自然這些系統會認為它們擁有硬件的全部控制權。

x86架構為操作系統和應用程序提供了四個不同級別的權限來管理對硬件的訪問,分別為ring 0,1,2和3。

用戶程序一般運行在ring 3,操作系統需要直接訪問內存和硬件,因此需要在ring 0執行它的特權指令。

x86架構的虛擬化需要在操作系統(運行於最高權限的ring 0)之下放置一個提供共享資源的虛擬化層來創建和管理虛擬機。VMware在1998年就攻克了這個挑戰,開發了二進制翻譯技術使得VMM運行在ring 0以達到隔離和性能的要求,而將操作系統轉移到比應用程序所在ring 3權限高和比虛擬機監控器所在ring 0權限低的用戶級。

 

 

目前有三種技術來實現x86架構CPU敏感指令和特權指令的虛擬化,分別為:

. 使用二進制翻譯的全虛擬化

. 操作系統輔助或半虛擬化;

. 硬件輔助的虛擬化(第一代);

 

使用二進制翻譯的全虛擬化:

使用二進制翻譯和直接指令執行相結合的技術,VMware可以虛擬化任何基於x86的操作系統。

操作系統輔助虛擬化或半虛擬化:

半虛擬化指的是虛擬機系統和hypervisor通過交互來改善性能和效率。半虛擬化涉及到修改操作系統內核來將不可虛擬化的指令替換為直接與虛擬化層交互的超級調用(hypercalls)。hypervisor同樣為其他關鍵的系統操作如內存管理、中斷處理、計時等提供了超級調用接口。全虛擬化時未經修改的虛擬機系統不知道自身被虛擬化,系統敏感的調用陷入后再進行二進制翻譯。半虛擬化的價值在於更低的虛擬化代價,但是半虛擬化相對全虛擬化的性能優勢根據不同的工作負載有很大差別。半虛擬化不支持未經修改的操作系統(如Windows 2000/XP),因此它的兼容性和可移植性較差。由於半虛擬化需要系統內核的深度修改,在生產環境中,半虛擬化在技術支持和維護上會有很大的問題。開源的Xen項目半虛擬化的一個例子,它使用一個經過修改的Linux內核來虛擬化處理器,而用另外一個定制的虛擬機系統的設備驅動來虛擬化I/O。

硬件輔助的虛擬化:

第一代技術包括Intel虛擬化技術(VT-x)和AMD的AMD-V,兩者都針對特權指令為CPU添加了一個執行模式,VMM運行在ring 0,同時在新增的根模式下。

 

內存虛擬化

除了CPU虛擬化之外,下一個關鍵的組件是內存虛擬化。內存虛擬化涉及到對系統物理內存的共享和動態地為虛擬機分配內存。內存虛擬化和當代操作系統對虛擬內存的支持類似。應用程序看到的連續地址空間和底下真正的物理內存不一定是一一對應的。操作系統保存了虛擬頁號到物理頁號的映射。當前所有的x86 CPU包含了一個內存管理單元(MMU)和一個旁路緩沖(TBL)以優化虛擬內存的性能。

為了在一個系統上運行多個虛擬機,還需要另外一層的內存虛擬化。也就是說,MMU需要被虛擬化來支持虛擬機系統。虛擬機系統還是控制着虛擬地址到虛擬機內存物理地址的映射,但虛擬機系統不能直接訪問真實的機器內存。VMM負責將虛擬機物理內存映射到真實的機器內存,並使用影子頁表來加速映射過程。如圖8種標紅線之處所示,VMM使用硬件中的TLB來直接映射虛擬內存到機器內存以避免每次訪問時需要兩級轉換。當虛擬機改變了虛擬內存到物理內存的映射時,VMM更新影子頁表使得后續可以直接查找。對於所有的虛擬化方案來說,MMU虛擬化都會帶來一定的代價,這也是第二代硬件輔助虛擬化方案會改進的地方。

 

設備和I/O虛擬化

除了CPU和內存虛擬化之外,最后一個需要虛擬化的組件是設備和I/O虛擬化,這涉及到對虛擬設備和共享的物理設備之間的I/O請求路徑的管理。

相對於直接訪問(direct pass-through)物理硬件的方法,基於軟件的I/O虛擬化及管理具有更豐富的特性和更簡化的管理方式。以網絡方面為例,虛擬網卡和虛擬交換機可以在虛擬機之間創建虛擬網絡,而不需要消耗物理網絡的帶寬,網卡組合(NIC teaming)使得多個物理網卡變成邏輯上的一塊網卡,這對虛擬機來說,物理網卡的故障轉移是透明的。這樣一來,虛擬機通過VMotion可以無縫地在不同系統之間遷移,並且保留已有的MAC地址。高效I/O虛擬化關鍵的一點就是要保留虛擬化的這些好處同時對CPU增加的消耗減到最少。

hypervisor虛擬化了物理硬件,為虛擬機呈現一系列標准的虛擬設備,如圖9所示。這些虛擬設備有效的模擬了所熟知的硬件並將虛擬機的請求翻譯成對系統物理硬件的請求。設備驅動的標准化也幫助了虛擬機的標准化並增加在不同平台間的可移植性,因為所有的虛擬機都配置成運行在虛擬硬件上,跟底下真實的系統物理硬件無關。

參考自:https://www.cnblogs.com/woshiweige/p/4518430.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM