在虛擬化蓬勃發展的這些年裡,虛擬化可以根據不同劃分標準進行分類,包括全虛擬化,cpu 虛擬化,硬體虛擬化,伺服器虛擬化,桌面虛擬化等等。我們通常所說的虛擬化主要是指平台虛擬化技術,通過使用 hypervisor,隱藏特定計算平台的實際物理特性,為使用者提供抽象的、統一的、模擬的計算環境(即虛擬機器)。
這種分類並不是絕對的,乙個優秀的虛擬化軟體往往融合了多項技術。例如 vmware workstation 是乙個著名的全虛擬化的 vmm,但是它使用了一種被稱為動態二進位制翻譯的技術把對特權狀態的訪問轉換成對影子狀態的操作,從而避免了低效的 trap-and-emulate (陷入-模擬)的處理方式,這與半虛擬化相似,只不過半虛擬化是靜態地修改程式**。對於半虛擬化而言,如果能利用硬體特性,那麼虛擬機器的管理將會大大簡化,同時還能保持較高的效能。
下面分別介紹四類主流的分類方法:
軟體輔助虛擬化:通過軟體的方法,讓客戶機的特權指令陷入異常,從而觸發宿主機進行虛擬化。主要使用的技術就是優先順序壓縮和二進位制**翻譯。
硬體輔助虛擬化:是指在 cpu 中加入新的指令集和處理器執行模式,完成虛擬化作業系統對硬體資源的的直接呼叫。典型技術指的是 intel vt,amd-v。
全虛擬化
全虛擬化是指虛擬機器模擬了完整的底層硬體,包括處理器、物理記憶體、時鐘、外設等,使得為原始硬體設計的作業系統或其它系統軟體完全不做任何修改就可以在虛擬機器中執行。作業系統與真實硬體之間的互動可以看成是通過乙個預先規定的硬體介面進行的。全虛擬化 vmm 以完整模擬硬體的方式提供全部介面(同時還必須模擬特權指令的執行過程)。
咱們舉例說明一下,在 x86 體系結構中,對於作業系統切換程序頁表的操作,真實硬體通過提供乙個特權 cr3 暫存器來實現該介面,作業系統只需執行 "mov pgtable,%%cr3" 彙編指令即可。
全虛擬化 vmm 必須完整地模擬該介面執行的全過程。如果硬體不提供虛擬化的特殊支援,那麼這個模擬過程將會十分複雜一般而言,vmm 必須執行在最高優先順序來完全控制主機系統,而 guest os 需要降級執行,從而不能執行特權操作。當 guest os 執行前面的特權彙編指令時,主機系統產生異常(general protection exception),執行控制權重新從 guest os 轉到 vmm 手中。vmm 事先分配乙個變數作為影子 cr3 暫存器給 guest os,將 pgtable 代表的客戶機實體地址(guest physical address)填入影子 cr3 暫存器,然後 vmm 還需要 pgtable 翻譯成主機實體地址(host physical address)並填入物理 cr3 暫存器,最後返回到 guest os中。隨後 vmm 還將處理複雜的 guest os 缺頁異常(page fault)。
全虛擬化不需要更改 guest os,相容性好。典型的代表有 vmware workstation,esx server 早期版本,microsoft virtrual server。
半虛擬化
半虛擬化通過修改 guest os 部分訪問特權狀態的**以便直接與 vmm 直接互動。在半虛擬化虛擬機器中,部分硬體介面以軟體的形式提供給客戶機作業系統,這可以通過 hypercall(vmm 提供給 guest os 的直接呼叫,與系統呼叫類似)的方式來提供,所以也被稱為超虛擬化。
例如,guest os 把切換頁表的**修改為呼叫 hypercall 來直接完成修改影子 cr3 暫存器和翻譯位址的工作。
依靠這些指令可以直接通過 hypervisor 層呼叫硬體資源,從而免除了 hypervisor 層轉換指令的開銷,由於不需要產生額外的異常和模擬部分硬體執行流程,半虛擬化可以大幅度提高效能,半虛擬化的典型代表有 microsoft hyper-v,vmware 的 vsphere。
硬體輔助虛擬化
指借助硬體(主要是主機處理器)的支援來實現高效的全虛擬化。例如有了 intel-vt 技術的支援,guest os 和 vmm 的執行環境自動地完全隔離開來,guest os 有自己的「全套暫存器」,可以直接執行在最高端別。因此在上面的例子中,guest os 能夠執行修改頁表的彙編指令。intel-vt 和 amd-v 是目前 x86 體系結構上可用的兩種硬體輔助虛擬化技術。
從虛擬化 vmm 的實現結構來看,可以分為裸金屬虛擬化,宿主型虛擬化和混合虛擬化,接下來咱們分別詳細介紹一下。
裸金屬型虛擬化
指直接在底層硬體上安裝vmm 作為 hypervisor 接管,hypervisor 將負責管理所有的資源和虛擬環境支援。
該模型中,vmm 可以看作乙個為虛擬化而生的完整的作業系統,掌控有所有資源(cpu,記憶體,i/o 裝置)。vmm 承擔管理資源的重任,其還需向上提供 vm 用於執行 guest os,因此 vmm 還負責虛擬環境的建立和管理。
它主要實現兩個基本功能,其一是識別、捕獲和響應虛擬機器所發出的 cpu 特權指令或保護指令;其二是負責處理虛擬機器佇列和排程,並將物理硬體的處理結果返回給相應的虛擬機器。這種結構問題是,硬體裝置多種多樣,vmm 不能把所有的裝置驅動都一一實現,所以此模型支援有限的裝置。如下圖所示:
優點:因 vmm 同時具有物理資源的管理功能和虛擬化功能,故虛擬化的效率會較高;安全性方面,vm 的安全只依賴於 vmm 的安全。
缺點:因 vmm 完全擁有物理資源,因此,vmm 需要進行物理資源的管理,包括裝置的驅動,而裝置驅動的開發工作量是很大的,這對 vmm 是個很大的挑戰。
採用該結構的 vmm 有:vmware esx server, windriver hypervisor, kvm(後期)。
宿主模型虛擬化
此模型的物理資源由 host os(例如 windows, linux etc.)管理,實際的虛擬化功能由 vmm 提供,其通常是 host os 的獨立核心模組(有的實現還含使用者程序,如負責 i/o 虛擬化的使用者態裝置模型)。vmm 通過呼叫 host os 的服務來獲得資源,實現 cpu,記憶體和 i/o 裝置的虛擬化。vmm 建立出 vm 後,通常將 vm 作為 host os 的乙個程序參與排程。如下圖所示:
如上圖所示,vmm 模組負責 cpu 和記憶體虛擬化,由 ulm 請求 host os 裝置驅動,實現 i/o 裝置的虛擬化。
優點:可以充分利用現有 os 的裝置驅動,vmm 無需自己實現大量的裝置驅動,輕鬆實現 i/o 裝置的虛擬化。
缺點:因資源受 host os 控制,vmm 需呼叫 host os 的服務來獲取資源進行虛擬化,其效率和功能會受到一定影響。
採用該結構的 vmm 有:vmware workstation,vmware server (gsx),virtual pc,virtual server,kvm(早期)。
混合模型虛擬化
就是以上兩種模型的混合,這種模型沒有獨立的 hypervisor 層。相反,主機作業系統本身就負責在多個虛擬伺服器之間分配硬體資源,並且讓這些伺服器彼此獨立。
如果使用作業系統層虛擬化,所有虛擬伺服器必須執行同一作業系統(不過每個例項有各自的應用程式和使用者賬戶),虛擬機器執行在傳統作業系統上,建立乙個獨立的虛擬化例項,指向底層託管作業系統,vmm 直接管理硬體,但是會讓出一定的裝置的控制權,交給執行在特權上的虛擬機器來管理。vmm 只負責 cpu 和記憶體的虛擬化,i/o 裝置的虛擬化由 vmm 和特權 os 共同完成。
優點:可利用現有 os 的 i/o 裝置驅動;vmm 直接控制 cpu 和記憶體等物理資源,虛擬化效率較高;若對特權 os 的許可權控制得當,虛擬機器的安全性只依賴於 vmm。
缺點:因特權 os 執行於 vm 上,當需要特權 os 提供服務時,vmm 需要切換到特權 os,這裡面就產生上下文切換的開銷和效能降低。
採用該結構的 vmm 有:xen,sun logical domain。
從虛擬化在雲計算的應用領域進行劃分,可分為伺服器虛擬化(即計算虛擬化),網路虛擬化,儲存虛擬化,應用程式虛擬化,平台虛擬化,桌面虛擬化
虛擬化技術
虛擬化技術可以提供硬體,軟體上的虛擬化,從而節省成本。特別是對於需要修改或者隱藏操作細節的場景,虛擬化技術更加重要。容器化技術是可以用於替代容器化技術的,但是兩者確實可以融合,取長補短的。這裡容器化技術一般使用docker。vps基本上都是基於虛擬化技術的,例如vultr就是基於kvm核心虛擬化技術...
虛擬化技術
伺服器虛擬化 虛擬機器遷移 隔離技術 儲存虛擬化 網路虛擬化 桌面虛擬化 如果你開始閱讀這篇文章,就預設你了解什麼是馮諾伊曼結構。下圖就是經典的馮諾伊曼結構,有輸入輸出,有儲存器,有 cpu,而其中又有控制單元也有運算單元 alu。這些就構成基本的計算機硬體系統了。而所謂虛擬化技術指的就是,希望能在...
虛擬化技術
intel tsx ni 最白話的解釋就是乙個 執行緒鎖定判定邏輯的硬體加速,以前是在軟體層執行的,現在是硬體層了,方便程式設計和提公升執行效率 官方資料指出作用是能夠提公升多執行緒運算效能 vpro應該是商用機器上才會有支援,主要是提供mis從遠端管理機器,例如修補程式等,即使機器在關機的狀能,也...