虛擬化技術中的重要名詞及技術解釋
隨著虛擬化技術的發展, 越來越多的名詞和術語出現在虛擬化技術中, 這些名詞一般跟虛擬化技術的某些特性相關, 了解它們對掌握具體的虛擬化技術以及選擇合適的虛擬化產品會大有幫助。
(1) Virtual Machine 虛擬機
一般是指通過虛擬化技術模擬的硬件。它為操作系統的運行提供了模擬的硬件環境。
(2) 客戶操作系統(Guest OS)
運行在虛擬機之上的操作系統稱之為客戶操作系統。“客”字可以理解為“做客”, 在虛擬機中啟動的計算機可以看成是在基礎操作系統中“做客”。
(3) Hypervisor 虛擬機管理程序
在虛擬化技術中, Hypervisor 就是提供管理與監控虛擬機的軟件, 它處於基礎物理層與客戶操作系統(Guest OS) 之間, 可允許虛擬機或應用程序共享硬件。有些人把它稱為VMM (Virtual Machine Monitor), 但筆者覺得稱為Hyperviosr 更加貼切, 因為它不僅僅可以監控, 同時還具有管理虛擬機以及協調虛擬機與硬件設備的能力。虛擬化技術中各組成部分的關系如圖2-1 所示。
(4) 完全虛擬化(Full virtualization)
在完全虛擬化中, Hypervisor 通過模擬一個相應的硬件設備使客戶機操作系統在虛擬機模擬的硬件環境中運行。這種方案正是1960 年IBM 大型機所使用的虛擬化技術。故也有人稱它為原始虛擬化。在這種技術中, 虛擬機扮演客戶操作系統(Guest OS) 和原始硬件之間協調者的角色。故硬件設備上的特定受保護指令必須被捕獲下來並在Hypervisor 中進行處理, 防止虛擬機同時訪問某些資源時造成操作沖突。
(5) 部分虛擬化(Partial virtualization)
Hypervisor 只模擬部分底層硬件, 因此客戶機操作系統不進行修改是無法在虛擬機中運行的。在計算機的歷史中, 部分虛擬化是通往全虛擬化道路上的重要裡程碑, 它最早出現在第一代的分時系統CTSS 和IBM M44/44X 實驗性的分時系統中。雖然有時候這並不被視為一般意義上的虛擬機, 但這在歷史上是非常重要的一頁。
(6) 半虛擬化(Para - virtualization)
半虛擬化(也有資料將para - virtualization 翻譯為平行虛擬化) Hypervisor 提供特殊的編程接口供客戶機操作系統使用, 故客戶機操作系統必須經過改造才能夠在半虛擬化環境中運行。由於半虛擬化技術使客戶操作系統直接與硬件交互, 故性能上會比全虛擬化要好。然而由於使用了Hypervisor 提供的特殊編程接口, 所以客戶操作系統必須定制, 從而失去了向不同硬件平台移植的方便性。同時, 因為客戶機使用特殊編程接口可直接與硬件交互, 當某一個客戶機對硬件操作不當時, 就將會影響該硬件上所有客戶操作系統的運行。
(7) 操作系統層虛擬化(OS - level virtualization)
在操作系統層虛擬化中, 獨立主機被虛擬化在操作系統層中, 可使得多個獨立虛擬化的服務器運行在一台計算機上。客戶操作系統環境與宿主服務器分享同一個操作系統, 例如,相同的系統內核被用來創建客戶機環境。程序運行在被視為獨立系統的客戶機環境中。簡單講就是將操作系統劃貳豹獨立分區供不同用戶使用, 用戶在使用的時候感覺像在使用一台獨立的計算機。操作系統層虛擬化不需要安裝客戶操作系統, 但只能虛擬與本操作系統相同的虛擬機。比如Sun 的Solaris 操作系統, 使用這種技術可在Solaris 操作系統中虛擬化多個彼此獨立的操作系統空間供用戶使用。
(8) 動態遷移(Live Migration)
動態遷移就是在一個虛擬機運行的狀態下, 將它從一台計算機遷移到另外一台計算機。試想這樣一種情況: 某組織有兩台服務器A 與B, 各有16 個CPU, 在服務器A 上運行著8個虛擬機, 每個虛擬機使用1 個CPU。而服務器B 上也同樣運行著8 個虛擬機, 且每個虛擬機也只用1 個CPU。而且這樣的狀況持續了相當長的時間, 兩台服務器的利用率都只有50%。如果服務器A、B 上的Hypervisor 支持動態遷移, 我們就可以把服務器B 上的所有虛擬機移動到服務器A 上, 並關閉服務器B。既提高了服務器A 的使用效率, 又節省了一個服務器的資源, 可謂是一種“綠色環保技術”(英語裡稱Green IT)。同時, 動態遷移還可發揮自動恢復的作用, 當硬件出稀筆題時, 自動遷移到之前配置的其他硬件上。
(9) 硬件輔助虛擬化
硬件輔助虛擬化需要硬件提供支持, 幫助創建虛擬機, 監視並允許客戶機操作系統獨立運行。硬件輔助虛擬化是在1972 年, 為了使用第一個虛擬機操作系統VM/370, 第一次由IBM System/370 引入。在2005 年與2006 年, Intel 和AMD 分別為虛擬化提供了額外的硬件支持。Intel 稱之為VT, AMD 稱之為AMD - V。硬件輔助虛擬化是指借助硬件(主要是主機處理器) 的支持來實現高效的全虛擬化。Guest OS 和Hypervisor 的執行環境自動地完全隔離開來, Guest OS 有自己的“全套寄存器”, 可以直接運行在最高級別。Intel - VT 和AMD - V是目前x86 體系結構上可用的兩種硬件輔助虛擬化技術。
對於硬件輔助虛擬化, 首先需要弄清楚在傳統平台下哪些因素限制了虛擬化性能的發揮。虛擬化技術使得人們可以在一台物理服務器上運行多個不同的虛擬機。這就要求一台物理服務器可以創建和管理多個虛擬系統。而虛擬化技術的核心在於Hypervisor, 它是成功完成多個虛擬化相關任務的關鍵。Hypervisor 同時管理多個不同的操作系統實例, 並且掌管這些實例間的進程切換, 從而保證每個虛擬機都可以訪問到底層的處理器、內存和本地磁盤等硬件資源。它通過競爭機制在不同的實例之間分配計算資源, 同時還要保證不同虛擬機之間的相對獨立性。
而在Intel 和AMD 推出相應的硬件輔助虛擬化技術之前, 虛擬化平台的性能問題主要集中於處理器中缺少對應的內部指令集, 因而無法保證處理器的虛擬化任務可以高效完成。這些虛擬化任務的分配是在軟件層面實現的, 因此會在虛擬機體驗、資源控制和效率等方面表現得非常差。簡單地講就是: 如果某個虛擬機做壞事, 則整個服務器都受到影響。而AMD和Intel 都在致力於新的處理器升級開發以滿足新增加的虛擬化方面的需求。這些升級減少(甚至是消除) 了客戶操作系統之間的資源爭奪和限制, 從而極大改善了虛擬機實例的安全性和性能。
還有一種需求是從硬件廠商的角度出發, 由於Hypervisor 提供給虛擬機很多訪問基礎硬件設備的方法, 而如果一個虛擬機由於操作不慎訪問了不該訪問的底層硬件控制接口, 就會對其他計算機造成影響, 所以硬件廠商需要提供特殊的接口以確保虛擬機之間在硬件層面互不干擾。
Intel - VT 技術被Intel 認為是一項針對高端個人計算機及服務器的新技術。只有高端的Intel CPU 才加入這種技術。而AMD 的AMD - V 技術浴被廣泛應用於AMD 新推出的CPU中, 比如Phenom II 羿龍。
不管是Intel 還是AMD 它們的硬件輔助虛擬化技術, 對於開發人員而言最後就是一組CPU 指令集。但不同廠商間的CPU 指令集不能兼容。比如Intel - VT 的Flex Migration (動態遷移) 功能允許在虛擬化平台中快速、方便地在多個支持Intel - VT 指令集的物理服務器之間遷移虛擬機。但這項擴展的遷移功能無法適用於AMD 處理器平台。在不同處理器廠商平台之間的遷移, 可能會導致嚴重的性能問題, 甚至發生系統故障。所以在搭建雲基礎設施時既要考慮到成本問題又要考慮到基礎設施兼容性問題。
在實際的工作中, 全虛擬化與半虛擬化技術應用比較廣泛, 我們將挑選幾類較為常見而恰比較容易獲得的虛擬化產品著重介紹。