簡介
虛擬化在1960年為了描述虛擬機(實驗性的IBM M44/44X系統)這個概念被第一次提出。對虛擬機的架設和管理被稱為平台虛擬化,現在也被稱為伺服器虛擬化。
平台虛擬化表現為在一個給定的硬體平台上宿主機創造一個模擬的計算機環境(虛擬機)提供給客戶機。客戶機軟體對於用戶應用程式沒有限制;許多宿主機允許運行真實的作業系統。客戶機就好像直接運行在計算機硬體上,伴隨著幾個明顯的警告。虛擬機對硬體資源(如網路,顯示器,鍵盤,硬碟)的訪問被統一管理在一個比處理器和系統記憶體更有限制性的層次上。客戶軟體經常被限制訪問計算機周邊設備,或者被限制在較低的設備性能上,這取決於宿主機硬體訪問策略設定。
虛擬化的原因
在計算機集群中,許多小型伺服器正在被一個大型伺服器取代以增加硬體資源的利用率(如CPU等)。雖然硬體正在被整合,但是典型的作業系統仍然是獨立的。取而代之地,每一個運行在獨立的伺服器上的作業系統被轉移到在虛擬機中。大型的伺服器可以“寄宿”許多這樣的“客戶”虛擬機。這就是物理到虛擬(Physical-to-Virtual, P2V)的轉換。
虛擬機比真實的機器可以被更容易從外部被控制和檢查,並且可以配置更靈活。這在核心開發與作業系統課程教學中尤為有用。
創建一個新的虛擬機不需要預先購買硬體。同時,一個新的虛擬機可以容易地從一台計算機轉移到另一台上。舉例來說,一個銷售員可以複製一個包含試用版軟體的虛擬機到他的筆記本電腦去訪問他的客戶而不用更換電腦。類似的,虛擬機中的故障不會對宿主機產生損害,所以不會令筆記本上的作業系統當機。
由於可以被容易地遷移,虛擬機可以被用於遠距離災難恢複方案。
平台虛擬化的方案有很多。
完全虛擬化
在完全虛擬化(full virtualization)中,虛擬機模擬一個足夠強大的硬體使客戶機作業系統獨立運行。這種方案最早在1966年被虛擬機家族的先鋒IBM CP-40與CP-67使用。支持完全虛擬化的虛擬機軟體包括Parallels Workstation, Parallels Desktop for Mac, VirtualBox, Virtual Iron, Oracle VM, Virtual PC, Virtual Server, Hyper-V, VMware Workstation, VMware Server (formerly GSX Server), QEMU, Adeos, Mac-on-Linux, Win4BSD, Win4Lin Pro, 以及 Egenera vBlade technology。
硬體輔助虛擬化
在硬體輔助虛擬化(hardware-assisted virtualization)中,硬體提供結構支持幫助創建虛擬機監視並允許客戶機作業系統獨立運行。硬體輔助虛擬化在1972年,為了使用第一個虛擬機作業系統VM/370,第一次由IBM System/370引入。在2005年與2006年,Intel和AMD為虛擬化提供了額外的硬體支持。支持硬體輔助虛擬化的有 Linux KVM, VMware Workstation, VMware Fusion, Microsoft Virtual PC, Xen, Parallels Desktop for Mac,VirtualBox and Parallels Workstation。
支持完整的虛擬化技術的硬體平台包括:
x86 (and x86_64)—AMD-V (代號Pacifica), Intel VT (代號Vanderpool)
IOMMU 由AMD和Intel共同開發。
Power Architecture (IBM/Power.org)
Virtage (Hitachi)
UltraSPARC T1, T2 及 T2+ (Sun)
部分虛擬化
在部分虛擬化(partial virtualization)中(包括地址空間虛擬化),虛擬機模擬數個(但不是全部)底層硬體環境,特別是地址空間。這樣的環境支持資源共享和執行緒獨立,但是不允許獨立的客戶機作業系統。雖然這並不被視為一般意義上的虛擬機,但這在歷史上是非常重要的一頁。這項技術曾被用於CTSS(試驗性的IBM M44/44X),以及爭議性的系統比如MVS及Commodore 64(兩個都是“task switch”程式)。
平行虛擬化
在平行虛擬化(paravirtualization)中,虛擬機不需要模擬硬體,而是提供一個特殊的API只能被特製的客戶機作業系統使用。
作業系統層虛擬化
在作業系統層虛擬化(OS-level virtualization)中,獨立主機被虛擬化在作業系統層中,這使得多個獨立且安全虛擬化的伺服器運行在一台計算機上。客戶作業系統環境與宿主伺服器分享同一個作業系統,例如,相同的系統核心被用來創建客戶機環境。程式運行在被視為獨立系統的客戶機環境中。這種方式由FreeBSD jails首創;類似的例子包括Solaris Containers, OpenVZ, Linux-VServer, AIX Workload Partitions, Parallels Virtuozzo Containers, 以及 iCore Virtual Accounts。