圖2-1 虛擬化技術中各組成部分關系圖

(4) 完全虛擬化(Full virtualization)

在完全虛擬化中, Hypervisor 通過模擬一個相應的硬件設備使客戶機操作系統(tǒng)在虛擬機模擬的硬件環(huán)境中運行。這種方案正是1960 年IBM 大型機所使用的虛擬化技術。故也有人稱它為原始虛擬化。在這種技術中, 虛擬機扮演客戶操作系統(tǒng)(Guest OS) 和原始硬件之間協(xié)調(diào)者的角色。故硬件設備上的特定受保護指令必須被捕獲下來并在Hypervisor 中進行處理, 防止虛擬機同時訪問某些資源時造成操作沖突。

(5) 部分虛擬化(Partial virtualization)

Hypervisor 只模擬部分底層硬件, 因此客戶機操作系統(tǒng)不進行修改是無法在虛擬機中運行的。在計算機的歷史中, 部分虛擬化是通往全虛擬化道路上的重要里程碑, 它最早出現(xiàn)在第一代的分時系統(tǒng)CTSS 和IBM M44/44X 實驗性的分時系統(tǒng)中。雖然有時候這并不被視為一般意義上的虛擬機, 但這在歷史上是非常重要的一頁。

(6) 半虛擬化(Para – virtualization)

半虛擬化(也有資料將para – virtualization 翻譯為平行虛擬化) Hypervisor 提供特殊的編程接口供客戶機操作系統(tǒng)使用, 故客戶機操作系統(tǒng)必須經(jīng)過改造才能夠在半虛擬化環(huán)境中運行。由于半虛擬化技術使客戶操作系統(tǒng)直接與硬件交互, 故性能上會比全虛擬化要好。然而由于使用了Hypervisor 提供的特殊編程接口, 所以客戶操作系統(tǒng)必須定制, 從而失去了向不同硬件平臺移植的方便性。同時, 因為客戶機使用特殊編程接口可直接與硬件交互, 當某一個客戶機對硬件操作不當時, 就將會影響該硬件上所有客戶操作系統(tǒng)的運行。

(7) 操作系統(tǒng)層虛擬化(OS – level virtualization)

在操作系統(tǒng)層虛擬化中, 獨立主機被虛擬化在操作系統(tǒng)層中, 可使得多個獨立虛擬化的服務器運行在一臺計算機上。客戶操作系統(tǒng)環(huán)境與宿主服務器分享同一個操作系統(tǒng), 例如,相同的系統(tǒng)內(nèi)核被用來創(chuàng)建客戶機環(huán)境。程序運行在被視為獨立系統(tǒng)的客戶機環(huán)境中。簡單講就是將操作系統(tǒng)劃貳豹獨立分區(qū)供不同用戶使用, 用戶在使用的時候感覺像在使用一臺獨立的計算機。操作系統(tǒng)層虛擬化不需要安裝客戶操作系統(tǒng), 但只能虛擬與本操作系統(tǒng)相同的虛擬機。比如Sun 的Solaris 操作系統(tǒng), 使用這種技術可在Solaris 操作系統(tǒng)中虛擬化多個彼此獨立的操作系統(tǒng)空間供用戶使用。

(8) 動態(tài)遷移(Live Migration)

動態(tài)遷移就是在一個虛擬機運行的狀態(tài)下, 將它從一臺計算機遷移到另外一臺計算機。試想這樣一種情況: 某組織有兩臺服務器A 與B, 各有16 個CPU, 在服務器A 上運行著8個虛擬機, 每個虛擬機使用1 個CPU。而服務器B 上也同樣運行著8 個虛擬機, 且每個虛擬機也只用1 個CPU。而且這樣的狀況持續(xù)了相當長的時間, 兩臺服務器的利用率都只有50%。如果服務器A、B 上的Hypervisor 支持動態(tài)遷移, 我們就可以把服務器B 上的所有虛擬機移動到服務器A 上, 并關閉服務器B。既提高了服務器A 的使用效率, 又節(jié)省了一個服務器的資源, 可謂是一種“綠色環(huán)保技術”(英語里稱Green IT)。同時, 動態(tài)遷移還可發(fā)揮自動恢復的作用, 當硬件出稀筆題時, 自動遷移到之前配置的其他硬件上。

(9) 硬件輔助虛擬化

硬件輔助虛擬化需要硬件提供支持, 幫助創(chuàng)建虛擬機, 監(jiān)視并允許客戶機操作系統(tǒng)獨立運行。硬件輔助虛擬化是在1972 年, 為了使用第一個虛擬機操作系統(tǒng)VM/370, 第一次由IBM System/370 引入。在2005 年與2006 年, Intel 和AMD 分別為虛擬化提供了額外的硬件支持。Intel 稱之為VT, AMD 稱之為AMD – V。硬件輔助虛擬化是指借助硬件(主要是主機處理器) 的支持來實現(xiàn)高效的全虛擬化。Guest OS 和Hypervisor 的執(zhí)行環(huán)境自動地完全隔離開來, Guest OS 有自己的“全套寄存器”, 可以直接運行在最高級別。Intel – VT 和AMD – V是目前x86 體系結構上可用的兩種硬件輔助虛擬化技術。

對于硬件輔助虛擬化, 首先需要弄清楚在傳統(tǒng)平臺下哪些因素限制了虛擬化性能的發(fā)揮。虛擬化技術使得人們可以在一臺物理服務器上運行多個不同的虛擬機。這就要求一臺物理服務器可以創(chuàng)建和管理多個虛擬系統(tǒng)。而虛擬化技術的核心在于Hypervisor, 它是成功完成多個虛擬化相關任務的關鍵。Hypervisor 同時管理多個不同的操作系統(tǒng)實例, 并且掌管這些實例間的進程切換, 從而保證每個虛擬機都可以訪問到底層的處理器、內(nèi)存和本地磁盤等硬件資源。它通過競爭機制在不同的實例之間分配計算資源, 同時還要保證不同虛擬機之間的相對獨立性。

而在Intel 和AMD 推出相應的硬件輔助虛擬化技術之前, 虛擬化平臺的性能問題主要集中于處理器中缺少對應的內(nèi)部指令集, 因而無法保證處理器的虛擬化任務可以高效完成。這些虛擬化任務的分配是在軟件層面實現(xiàn)的, 因此會在虛擬機體驗、資源控制和效率等方面表現(xiàn)得非常差。簡單地講就是: 如果某個虛擬機做壞事, 則整個服務器都受到影響。而AMD和Intel 都在致力于新的處理器升級開發(fā)以滿足新增加的虛擬化方面的需求。這些升級減少(甚至是消除) 了客戶操作系統(tǒng)之間的資源爭奪和限制, 從而極大改善了虛擬機實例的安全性和性能。

還有一種需求是從硬件廠商的角度出發(fā), 由于Hypervisor 提供給虛擬機很多訪問基礎硬件設備的方法, 而如果一個虛擬機由于操作不慎訪問了不該訪問的底層硬件控制接口, 就會對其他計算機造成影響, 所以硬件廠商需要提供特殊的接口以確保虛擬機之間在硬件層面互不干擾。

Intel – VT 技術被Intel 認為是一項針對高端個人計算機及服務器的新技術。只有高端的Intel CPU 才加入這種技術。而AMD 的AMD – V 技術浴被廣泛應用于AMD 新推出的CPU中, 比如Phenom II 羿龍。

不管是Intel 還是AMD 它們的硬件輔助虛擬化技術, 對于開發(fā)人員而言最后就是一組CPU 指令集。但不同廠商間的CPU 指令集不能兼容。比如Intel – VT 的Flex Migration (動態(tài)遷移) 功能允許在虛擬化平臺中快速、方便地在多個支持Intel – VT 指令集的物理服務器之間遷移虛擬機。但這項擴展的遷移功能無法適用于AMD 處理器平臺。在不同處理器廠商平臺之間的遷移, 可能會導致嚴重的性能問題, 甚至發(fā)生系統(tǒng)故障。所以在搭建云基礎設施時既要考慮到成本問題又要考慮到基礎設施兼容性問題。

在實際的工作中, 全虛擬化與半虛擬化技術應用比較廣泛, 我們將挑選幾類較為常見而恰比較容易獲得的虛擬化產(chǎn)品著重介紹。

分享到

zhangcun

相關推薦