跳至內容

硬件虛擬化

維基百科,自由的百科全書

計算機科學中,硬件虛擬化(英語:Hardware virtualization)是一種對計算機或作業系統的虛擬。虛擬化對用戶隱藏了真實的計算機硬件,表現出另一個抽象計算平台。

簡介

[編輯]

虛擬化這個概念,在1960年為了描述虛擬機(實驗性的IBM M44/44X系統)被第一次提出。對虛擬機的架設和管理被稱為平台虛擬化,現在也被稱為伺服器虛擬化。

平台虛擬化表現為在一個給定硬件平台的宿主機上創造一個模擬的計算機環境(虛擬機)提供給客戶機。客戶機軟件對於用戶應用程式沒有限制;許多宿主機允許運行真實的作業系統。客戶機就好像直接運行在計算機硬件上,伴隨着幾個明顯的警告。虛擬機對硬件資源(如網絡、顯示器、鍵盤、硬盤)的訪問被統一管理在一個比處理器和系統內存更有限制性的層次上。客戶軟件經常被限制訪問計算機周邊設備,或者被限制在較低的設備性能上,這取決於宿主機硬件訪問策略設定。[1][2]

虛擬化的原因

[編輯]

計算機集群中,許多小型伺服器正在被一個大型伺服器取代以增加硬件資源的利用率(如CPU等)。雖然硬件正在被整合,但是典型的作業系統仍然是獨立的。取而代之地,每一個運行在獨立的伺服器上的作業系統被轉移到在虛擬機中。大型的伺服器可以「寄宿」許多這樣的「客戶」虛擬機。這就是物理到虛擬(Physical-to-Virtual, P2V)的轉換。

虛擬機比真實的機器可以被更容易從外部被控制和檢查,並且可以配置更靈活。這在內核開發與作業系統課程教學中尤為有用。[3]

創建一個新的虛擬機不需要預先購買硬件。同時,一個新的虛擬機可以容易地從一台計算機轉移到另一台上。舉例來說,一個銷售員可以複製一個包含試用版軟件的虛擬機到他的筆記本電腦去訪問他的客戶而不用更換電腦。類似的,虛擬機中的故障不會對宿主機產生損害,所以不會令筆記本上的作業系統死機。

由於可以被容易地遷移,虛擬機可以被用於遠距離災難恢復方案。

平台虛擬化的方案有很多。

全虛擬化

[編輯]

全虛擬化(full virtualization)中,虛擬機模擬一個足夠強大的硬件使客戶機作業系統獨立運行。這種方案最早在1966年被虛擬機家族的先鋒IBM CP-40與CP-67使用。支持完全虛擬化的虛擬機軟件包括Parallels WorkstationParallels Desktop for MacVirtualBoxVirtual IronOracle VMMicrosoft Virtual PCVMware Workstation、VMware Server(原GSX Server)、QEMUAdeosMac-on-LinuxWin4BSDWin4Lin Pro、以及Egenera vBlade technology等。

硬件輔助虛擬化

[編輯]

硬件輔助虛擬化(hardware-assisted virtualization)中,硬件提供結構支持幫助創建虛擬機監視並允許客戶機作業系統獨立運行。硬件輔助虛擬化在1972年開始運行,它在IBM System/370上運行,使用了第一個虛擬機作業系統VM/370。在2005年與2006年,Intel和AMD為虛擬化提供了額外的硬件支持。支持硬件輔助虛擬化的有 Linux KVM, VMware Workstation, VMware Fusion, Microsoft Virtual PC, Xen, Parallels Desktop for Mac,VirtualBox和Parallels Workstation。

支持完整的虛擬化技術的硬件平台包括:

x86與x86_64:AMD-V (代號Pacifica), Intel VT-x(代號Vanderpool),以及後來的SLAT(Second Level Address Translation,Intel稱為EPT)[4]

IOMMU:由AMD和Intel共同開發,Intel稱為VT-d。

Power Architecture (IBM/Power.org)

Virtage (Hitachi)

UltraSPARC T1, T2 及 T2+ (Sun)

部分虛擬化

[編輯]

在部分虛擬化(partial virtualization)中(包括地址空間虛擬化),虛擬機模擬數個(但不是全部)底層硬件環境,特別是地址空間。這樣的環境支持資源共享和線程獨立,但是不允許獨立的客戶機作業系統。雖然這並不被視為一般意義上的虛擬機,但這在歷史上是非常重要的一頁。

平行虛擬化

[編輯]

在平行虛擬化(paravirtualization)中,虛擬機不需要模擬硬件,而是提供只能被特製的客戶機作業系統(或特製的驅動程式)使用的API。KVMVMwareHyper-V都支援平行虛擬化,如KVM的VirtIO。

作業系統層虛擬化

[編輯]

作業系統層虛擬化(OS-level virtualization)中,獨立主機被虛擬化在作業系統層中,這使得多個獨立且安全虛擬化的伺服器運行在一台計算機上。客戶作業系統環境與宿主伺服器分享同一個作業系統,例如,相同的系統內核被用來創建客戶機環境。程序運行在被視為獨立系統的客戶機環境中。這種方式由FreeBSD jail首創;類似的例子包括Solaris Containers, OpenVZ, Linux-VServer, AIX Workload Partitions, Parallels Virtuozzo Containers, 以及 iCore Virtual Accounts, LXC。

相關條目

[編輯]

參考

[編輯]
  1. ^ Turban, E; King D, Lee J, Viehland D. Electronic Commerce A Managerial Perspective (PDF) 5th edition. Prentice-Hall: P27. 2008 [2010-01-10]. (原始內容存檔 (PDF)於2009-05-21).  |chapter=被忽略 (幫助)
  2. ^ Virtualization in education (PDF). IBM. October 2007 [12 September 2009]. 
  3. ^ Examining VMware 互聯網檔案館存檔,存檔日期2008-12-03. Dr. Dobb’s Journal August 2000 By Jason Nieh and Ozgur Can Leonard
  4. ^ 存档副本. [2019-09-24]. (原始內容存檔於2019-07-18).