技術(shù)漫談:虛擬化工作原理與虛擬化 |
發(fā)布時間: 2012/8/10 18:39:44 |
技術(shù)漫談:虛擬化工作原理與虛擬化虛擬化概念很早就已出現(xiàn)。簡單來說,虛擬化就是使用某些程序,并使其看起來類似于其他程序的過程。 將這個概念應(yīng)用到計算機系統(tǒng)中可以讓不同用戶看到不同的單個系統(tǒng)(例如,一臺計算機可以同時運行Linux 和 Microsoft? Windows?)。這通常稱為全虛擬化(full virtualization)。 虛擬化也可以使用更加復(fù)雜的格式,其中單個計算機看上去具有多個架構(gòu)(對于一個用戶來說,它是一個標(biāo)準(zhǔn)的 x86 平臺;對于另外一個用戶來說,它是 IBM Power PC? 平臺)。這種虛擬化形式通常被稱為 硬件仿真。 最后,更加簡單的一種虛擬化是操作系統(tǒng)虛擬化,其中一臺計算機可以運行相同類型的多個操作系統(tǒng)。這種虛擬化可以將一個操作系統(tǒng)的多個服務(wù)器隔離開來(這意味著全都必須使用相同類型和版本的操作系統(tǒng))。 虛擬化的工作原理 虛擬化解決方案的底部是要進行虛擬化的機器。這臺機器可能直接支持虛擬化,也可能不會直接支持虛擬化;那么就需要系統(tǒng)管理程序 層的支持。系統(tǒng)管理程序,或稱為 VMM,可以看作是平臺硬件和操作系統(tǒng)的抽象化。在某些情況中,這個系統(tǒng)管理程序就是一個操作系統(tǒng);此時,它就稱為主機操作系統(tǒng)。 系統(tǒng)管理程序之上是客戶機操作系統(tǒng),也稱為虛擬機(VM)。這些 VM 都是一些相互隔離的操作系統(tǒng),將底層硬件平臺視為自己所有。但是實際上,是系統(tǒng)管理程序為它們制造了這種假象。 目前使用虛擬化解決方案的問題是,并非所有硬件都可以很好地支持虛擬化。較老的 x86 處理器根據(jù)執(zhí)行范圍對特定指令會產(chǎn)生不同結(jié)果。這就產(chǎn)生了一個問題,因為系統(tǒng)管理程序應(yīng)該只能在一個最受保護的范圍中執(zhí)行。由于這個原因,諸如 VMWare 之類的虛擬化解決方案會提前掃描要執(zhí)行的代碼,從而將這些指令替換為一些陷阱指令(trap instruction),這樣系統(tǒng)管理程序就可以正確地處理它們。Xen 可以支持一種協(xié)作的虛擬化方法,它不需要任何修改,因為客戶機知道自己正在進行虛擬化,并已經(jīng)進行了修改。KVM 會簡單地忽略這個問題,如果您希望進行虛擬化,就強制必須在更新的硬件上運行。 虛擬化的類型 實現(xiàn)虛擬化的方法不止一種。實際上,有幾種方法都可以通過不同層次的抽象來實現(xiàn)相同的結(jié)果。本節(jié)將介紹 Linux 中常用的 3 種虛擬化方法,以及它們相應(yīng)的優(yōu)缺點。業(yè)界有時會使用不同的術(shù)語來描述相同的虛擬化方法。本文中使用的是最常用的術(shù)語,同時給出了其他術(shù)語以供參考。 硬件仿真 毫無疑問,最復(fù)雜的虛擬化實現(xiàn)技術(shù)就是硬件仿真。在這種方法中,可以在宿主系統(tǒng)上創(chuàng)建一個硬件 VM 來仿真所想要的硬件 正如您所能預(yù)見的一樣,使用硬件仿真的主要問題是速度會非常慢。由于每條指令都必須在底層硬件上進行仿真,因此速度減慢 100 倍的情況也并不稀奇。若要實現(xiàn)高度保真的仿真,包括周期精度、所仿真的 CPU 管道以及緩存行為,實際速度差距甚至可能會達到 1000 倍之多。 硬件仿真也有自己的優(yōu)點。例如,使用硬件仿真,您可以在一個 ARM 處理器主機上運行為 PowerPC? 設(shè)計的操作系統(tǒng),而不需要任何修改。您甚至可以運行多個虛擬機,每個虛擬器仿真一個不同的處理器。 完全虛擬化 完全虛擬化(full virtualization),也稱為原始虛擬化,是另外一種虛擬化方法。這種模型使用一個虛擬機,它在客戶操作系統(tǒng)和原始硬件之間進行協(xié)調(diào)(參見圖 3)。"協(xié)調(diào)"在這里是一個關(guān)鍵,因為 VMM 在客戶操作系統(tǒng)和裸硬件之間提供協(xié)調(diào)。特定受保護的指令必須被捕獲下來并在 hypervisor 中進行處理,因為這些底層硬件并不由操作系統(tǒng)所擁有,而是由操作系統(tǒng)通過 hypervisor 共享。 雖然完全虛擬化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因為中間經(jīng)過了 hypervisor 的協(xié)調(diào)過程。完全虛擬化的最大優(yōu)點是操作系統(tǒng)無需任何修改就可以直接運行。惟一的限制是操作系統(tǒng)必須要支持底層硬件(例如 PowerPC)。 超虛擬化 超虛擬化(paravirtualization)是另外一種流行的虛擬化技術(shù),它與完全虛擬化有一些類似。這種方法使用了一個 hypervisor 來實現(xiàn)對底層硬件的共享訪問,還將與虛擬化有關(guān)的代碼集成到了操作系統(tǒng)本身中(參見圖 4)。這種方法不再需要重新編譯或捕獲特權(quán)指令,因為操作系統(tǒng)本身在虛擬化進程中會相互緊密協(xié)作。 正如前面介紹的一樣,超虛擬化技術(shù)需要為 hypervisor 修改客戶操作系統(tǒng),這是它的一個缺點。但是超虛擬化提供了與未經(jīng)虛擬化的系統(tǒng)相接近的性能。與完全虛擬化類似,超虛擬化技術(shù)可以同時支持多個不同的操作系統(tǒng)。 操作系統(tǒng)級的虛擬化 我們要介紹的最后一種技術(shù)是操作系統(tǒng)級的虛擬化,它使用的技術(shù)與前面所介紹的有所不同。這種技術(shù)在操作系統(tǒng)本身之上實現(xiàn)服務(wù)器的虛擬化。這種方法支持單個操作系統(tǒng),并可以將獨立的服務(wù)器相互簡單地隔離開來。 操作系統(tǒng)級的虛擬化要求對操作系統(tǒng)的內(nèi)核進行一些修改,但是其優(yōu)點是可以獲得原始性能。 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |