從技術上看,硬件輔助虛擬化通過提高客戶虛擬系統的隔離性而增強了虛擬化的性能、靈活性和可靠性。在實施時也更加簡單。虛擬化技術最早在大型主機上采用,隨著技術的發展和競爭的加劇,IBM、HP、Sun后來紛紛將其下移,逐漸將其引入到高端RISC服務器系統中。
隨著X86處理器性能的提高和應用的普及,業界很多公司都看到了虛擬化在X86平臺上實施的價值,因此VMware、Xen、微軟和SWsoft等軟件廠商紛紛推出了支持X86平臺的虛擬化軟件。
這些軟件虛擬化產品基本的思路是在操作系統與硬件層之間或者操作系統之上建立一層獨立控制、分配硬件資源的軟件層來達到虛擬化系統資源的目的。
不過,不同的虛擬化產品其實現模式也有很大的不同,通過介于底層硬件和操作系統之間的軟件層實現虛擬化功能的代表為VMware和Xen的產品,而SWsoft的產品則是在特定的操作系統之上“虛擬”出多個系統資源副本(SWsoft有支持Windows和Linux的版本),其好處是沒有對系統軟件的修改,對系統性能的影響較小,但由于實現虛擬化的層級不夠“低”,靈活性不如前者,如VMware的產品可以在Linux系統基礎上虛擬化出Windows的應用環境。
對于X86處理器來說,其保護模式下一共有4個不同優先級,稱為Ring,命名從Ring0直到Ring3.這些Ring的優先級隨其所執行的功能的不同也有所不同。其中Ring0用于操作系統內核,優先級最高,擁有最高的“特權”,Ring1和Ring2用于操作系統服務,優先級次之,Ring3用于應用程序,優先級最低。
軟件虛擬化技術工作原理位于Ring0特權空間的操作系統可以優先訪問各種硬件資源。傳統的軟件虛擬化技術是在Ring0中運行一個稱為虛擬機監視器(VMM)的軟件中間層,以負責控制和排列各個分區訪問硬件資源的優先順序。它要求在軟件堆棧的較高層運行操作系統─―通常是在Ring1或者與系統應用共用的Ring3.由于操作系統設計缺省工作在Ring0特權級別,而現在Ring0被虛擬機監視器(VMM)所擁有,所以傳統的純軟件虛擬化技術需要虛擬機監視器(VMM)通過復雜的軟件編程來解決這個矛盾。
其中一種方法是通過打補丁修改操作系統內核源代碼讓其認知到工作在GuestOS虛擬操作系統模式下,另一種方法是需要對運行期間操作系統的某些硬件調用指令作二進制碼翻譯等。由于上述原因,傳統的純軟件實現方式在測試、驗證和維護每款新操作系統和相關補丁方面,付出了大量的時間和資金,同時二進制碼翻譯需要消耗處理器的很多計算資源。
英特爾VT技術工作原理純軟件虛擬化運行時的開銷會造成系統運行速度較慢,有數據表明其引起的系統性能下降可能超過10%,尤其是在服務器整合領域,當虛擬化系統數目巨大時,其性能損失更為可觀。另外由于要通過軟件捕獲分配基本資源的處理器指令,不但過程復雜,可靠性不高,對不同平臺的兼容性也容易產生問題。
這也是硬件輔助虛擬化技術誕生的重要原因。與軟件方案相比,VT技術對如何在不同的情形下分配給GuestOS(虛擬機上的操作系統)想要的Ring特權級別做了重要的改進,在軟件堆棧中為虛擬機監視器(VMM)提供了專用的空間,可以支持未經修改的操作系統和應用在專門為它們設計的環境中運行,從而簡化了硬件調用。
同時,VT通過硬件底層指令集來支持虛擬機監視器(VMM)與已安裝GuestOS之間的切換,效率和可靠性明顯提高。
另外,VT技術還設計了保留虛擬機監視器(VMM)和已安裝的GuestOS的處理器狀態信息的專用內存地址空間,這樣不但可以縮短各個操作系統訪問硬件之間的間隔時間,同時提高了各個虛擬機上的操作系統之間的安全隔離性。