在虛擬機技術中,不再對底層的硬件資源進行劃分,而是部署一個統一的Host系統。在Host系統上,加裝了Virtual Machine Monitor,虛擬層作為應用級別的軟件而存在,不涉及操作系統內核。虛擬層會給每個虛擬機模擬一套獨立的硬件設備,包含CPU、內存、主板、顯卡、網卡等硬件資源,在其上安裝所謂的Guest操作系統。最終用戶的應用程序,運行在Guest操作系統中。 硬件輔助的虛擬化似乎比BT技術更好。如果BT技術可以讓虛擬機的性能達到物理機的80%,那么硬件輔助虛擬化(HVM)可以讓虛擬機的性能達到物理機的85%左右。當然,這個中間轉換還是需要的,但是直接由硬件來完成,僅此而已。
1、硬件輔助虛擬化:硬件輔助虛擬化(HVM)簡而言之,就是物理平臺本身為攔截和重定向特殊指令提供硬件支持,甚至新的硬件也會提供額外的資源,幫助軟件實現關鍵硬件資源的虛擬化,從而提升性能。可以理解為CPU額外增加了一個環-1環,專門為虛擬機運行提供。以X86平臺的虛擬化為例,支持虛擬化技術的X86 CPU有專門優化的指令集來控制虛擬進程。
通過這些指令集,VMM將很容易地把客戶端運行在受限模式下。一旦客戶端嘗試訪問物理資源,硬件將暫停客戶端的操作,并將控制權返回給VMM進行處理。VMM還可以使用硬件的虛擬化增強機制,將客戶端在受限模式下對某些特定資源的訪問從硬件重定向到VMM指定的虛擬資源。整個過程不需要暫停客戶端的運行和VMM軟件的參與。
由于虛擬化硬件可以提供全新的架構,可以支持操作系統直接在其上運行,無需二進制轉換,從而降低了相關的性能開銷,大大簡化了VMM設計,使VMM能夠按照通用標準編寫,性能更強。
需要注意的是,硬件虛擬化技術是一套解決方案。一個完整的情況需要CPU、主板芯片組、BIOS和軟件的支持,比如VMM軟件或者一些操作系統本身。即使只有CPU支持虛擬化技術,有了VMM軟件,也會比完全不支持虛擬化技術的系統有更好的性能。鑒于虛擬化的巨大需求和硬件虛擬化產品的廣闊前景,英特爾一直在努力改進和加強其硬件虛擬化產品線。
自2005年底以來,英特爾在其處理器產品線中推廣了英特爾虛擬化技術(英特爾虛擬化技術)虛擬化技術的應用,并發布了一系列采用英特爾虛擬化技術的處理器產品,包括臺式機的奔騰和酷睿系列、服務器的至強和安騰安騰。英特爾不斷優化硬件虛擬化的性能,并在每一代處理器架構中添加新的虛擬化技術。
目前,從臺式機上的酷睿i3/5/7到服務器端的E3/5/7/9,幾乎都支持英特爾VT技術。可以說,英特爾VT很可能在不久的將來成為所有英特爾處理器的標準配置。當然,AMD的CPU也支持虛擬化技術。
2、軟件虛擬化:純軟件虛擬化,顧名思義,就是使用純軟件的方法攔截和模擬對現有物理平臺(往往不支持硬件虛擬化)上的物理平臺的訪問。常見的軟件虛擬機,如QEMU,通過純軟件模擬X86平臺處理器的取值、解碼和執行,客戶端的指令不直接在物理平臺上執行。因為所有的指令都是由軟件模擬的,所以性能往往很差,但是不同架構平臺的虛擬機可以在同一個平臺上模擬。
VMWare的軟件虛擬化使用動態二進制翻譯(BT)技術。與QEMU不同,BT是加速虛擬化的解決方案之一,加速虛擬化的另一個常見解決方案是硬件輔助虛擬化技術。BT允許客戶端的指令在虛擬機監控器的可控范圍內直接運行在物理平臺上。
但是客戶端指令在運行前會被虛擬機監控器掃描,突破虛擬機監控器限制的指令會被可以直接在物理平臺上運行的安全指令動態替換,或者被對虛擬機監控器的軟件調用替換。這樣做的好處是仿真性能相比純軟件有了很大的提升(仿真簡單來說就是通過一個軟件來造假,可能不存在;雖然虛擬化意味著通過切割或其他方式虛擬化這個設備來提供一定程度的服務),但它也失去了跨平臺虛擬化的能力。
采用BT技術,Guest的用戶空間在CPU環3上運行,Guest的內核空間在CPU環1上運行,Host的內核空間在CPU環0上運行。BT監控CPU環1,隨時將Guest內核的調用轉換為特權指令調用。當然CPU環1還沒有使用,BT技術大大提升了虛擬化性能。
但是,BT有一個很大的缺點,就是不能跨平臺。模擬器QEMU可以模擬各種CPU架構平臺,如PowerPC、ARM,不考慮底層硬件;然而,英國電信無法做到這一點。英國電信嚴重依賴底層架構。比如底層架構是X86,只能用X86 CPU創建虛擬機。
在純軟件虛擬化解決方案中,VMM在軟件套件中的位置是傳統意義上的操作系統的位置,而操作系統的位置是傳統意義上的應用程序的位置。這種轉變將不可避免地增加系統的復雜性。軟件棧越來越復雜,意味著這些環境很難管理,這使得系統的可靠性和安全性更難保證。有不懂的請咨詢夢飛科技了解。