Linux中實現虛擬化的四種常用方法
(1)硬件仿真。毫無疑問,最復雜的虛擬化實現技術就是硬件仿真。在這種方法中,可以在宿主系統上創建一個硬件VM仿真所想要的硬件。正如所能預見的一樣,使用硬件仿真的主要問題是速度會非常慢。由于每條指令都必須在底層硬件上進行仿真,因此速度減慢100倍的情況也并不稀奇。若要實現高度的仿真,包括周期精度、所仿真的CPU管道以及緩存行為,實際速度差距甚至可能會達到1000倍之多。
硬件仿真也有自己的優點。例如,使用硬件仿真,可以在一個ARM處理器主機上運行為PowerPC設計的操作系統,而不需要任何修改。甚至可以運行多個虛擬機,每個虛擬器仿真一個不同的處理器。
(2)完全虛擬化。也稱為原始虛擬化,是另外一種虛擬化方法。這種模型使用一個虛擬機,它在客戶操作系統和原始硬件之間進行協調。"協調"在這里是一個關鍵,因為VMM在客戶操作系統和裸硬件之間提供協調。特定受保護的指令必須被捕獲下來并在虛擬控制程序(hypervisor)中進行處理,因為這些底層硬件并不由操作系統所擁有,而是由操作系統通過虛擬控制程序(hypervisor)共享。
雖然完全虛擬化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因為中間經過了虛擬控制程序(hypervisor)的協調過程。完全虛擬化的最大優點是操作系統無需任何修改就可以直接運行。唯一的限制是操作系統必須要支持底層硬件(如PowerPC)。
(3)超虛擬化。是另外一種流行的虛擬化技術,它與完全虛擬化有一些類似。這種方法使用了一個虛擬控制程序(hypervisor)來實現對底層硬件的共享訪問,還將與虛擬化有關的代碼集成到了操作系統本身中。這種方法不再需要重新編譯或捕獲特權指令,因為操作系統本身在虛擬化進程中會相互緊密協作。
正如前面介紹的一樣,超虛擬化技術需要為虛擬控制程序(hypervisor)修改客戶操作系統,這是它的一個缺點。但是超虛擬化提供了與未經虛擬化的系統相接近的性能。與完全虛擬化類似,超虛擬化技術可以同時支持多個不同的操作系統。
(4)操作系統級的虛擬化。它使用的技術與前面所介紹的有所不同。這種技術在操作系統本身之上實現服務器虛擬化。這種方法支持單個操作系統,并可以將獨立的服務器相互簡單地隔離開來。操作系統級的虛擬化要求對操作系統的內核進行一些修改,但是其優點是可以獲得原始性能。