虛擬化的必要條件
虛擬機管理程序需要在以下三個維度上有良好的表現:
- 安全性:虛擬機管理程序應完全掌控虛擬資源。
- 保真性:程序在虛擬機上執行的行爲應與在裸機上相同。
- 高效性:虛擬機中運行的大部分代碼應不受虛擬機管理程序的干涉。
敏感指令:在內核態和用戶態執行的行爲不同。(進行 I/O 操作或修改 MMU 設置)
特權指令:在用戶態執行會導致陷入。
機器可虛擬化的一個必要條件是:敏感指令爲特權指令的子集。簡單來說,如果用戶態想要做不應該在用戶態做的事情,硬件必須陷入。
VT 技術的基本思想是創建可以運行虛擬機的容器。
第一類和第二類虛擬機管理程序
第一類虛擬機管理程序運行在裸機上;第二類虛擬機管理程序依賴於宿主操作系統的系統服務。
第一類虛擬機管理程序就像一個操作系統,因爲它是唯一一個運行在最高特權級的程序。它的工作是支持真實硬件的多個虛擬機拷貝,類似於不同操作系統支持的進程。
第二類虛擬機是一個依賴於 Windows、Linux 等操作系統分配和調度資源的程序,很像一個普通的進程。當然,第二類虛擬機管理程序仍僞裝成具有 CPU 和各種設備的完整計算機。
兩類虛擬機管理程序都必須以一種安全的方式執行機器指令。
運行在兩類虛擬機管理程序上的操作系統都稱作客戶操作系統。對於第二類虛擬機管理程序,運行在底層硬件上的操作系統稱作宿主操作系統。
- 第一類虛擬機管理程序:Xen、Hyper-V、vSphere
- 第二類虛擬機管理程序:VMare、Wine、Parallels
在不支持虛擬化的平臺上實現虛擬化
客戶機內核的敏感指令被替換爲對模擬這些指令的例程的調用。真實硬件不會直接執行客戶操作系統中的敏感指令。這些敏感指令被轉爲對虛擬機管理程序的調用,虛擬機管理程序模擬了這些指令的功能。
二進制翻譯:虛擬機管理程序在運行中改寫了部分代碼,將有問題的指令替換成了安全的指令序列,模擬原指令的功能。由於進行了改寫操作,因此可以替換掉不屬於特權指令的敏感指令。其他的指令可以直接執行。(例如,一條不安全的 I/O 指令會被替換成一個陷入操作,經過安全性檢查之後,執行等價的指令並返回結果)
雲
雲的五條必要特徵:
- 按需自助服務:無需人爲操作就能自動爲用戶提供資源。
- 普適的網絡訪問:所有資源都可以通過網絡用標準化的機制訪問,以支持各種異構設備。
- 資源池:雲提供商擁有的資源可以服務多個用戶並動態再分配,用戶通常不知道他們使用的資源的具體位置。
- 快速可伸縮:能根據用戶需求彈性甚至是自動地獲取和釋放資源。
- 服務可計量:雲提供商按服務類型計量用戶使用的資源。
雲即服務:雲的功能是提供一個用戶可以直接訪問並任意使用的虛擬機。因而,同一個雲中可能運行着不同的操作系統。這種雲稱作基礎設施即服務。
- 基礎設置即服務(IAAS)
- 平臺即服務(PAAS)
- 軟件即服務(SAAS)
- 網絡即服務(NAAS)