天天看點

半虛拟化與半虛拟化

半虛拟化和全虛拟化的差別

全虛拟化(full virtualization), 也稱為原始虛拟化技術, 是另一種虛拟化方法. 該模型使用虛拟機協調客戶作業系統和原始硬體(見圖2). 這裡"協調"是一個關鍵詞, 因為vmm在客戶作業系統和裸硬體之間用于工作協調. 一些受保護的指令必須由hypervisor(虛拟機管理程式)來捕獲和處理. 因為作業系統是通過hypervisor來分享底層硬體.

半虛拟化與半虛拟化

  圖2. 全虛拟化: 使用hypervisor分享底層硬體

  全虛拟化的運作速度要快于硬體模拟, 但是性能方面不如裸機, 因為hypervisor需要占用一些資源. 全虛拟化最大的優點是作業系統沒有經過任何修改. 它的唯一限制是作業系統必須能夠支援底層硬體(比如, powerpc).

  老機器上的hypervisors

  一些老的硬體如x86, 全虛拟化遇到了問題. 比如, 一些敏感的指令需要由vmm來處理(vmm不能設定陷阱). 是以, hypervisors必須動态掃描和捕獲特權代碼來處理問題.

  半虛拟化

  半虛拟化(paravirtualization)是另一種類似于全虛拟化的熱門技術. 它使用hypervisor(虛拟機管理程式)分享存取底層的硬體, 但是它的客戶作業系統內建了虛拟化方面的代碼. 該方法無需重新編譯或引起陷阱, 因為作業系統自身能夠與虛拟程序進行很好的協作.

半虛拟化與半虛拟化

  圖3. 半虛拟化: 通過客戶作業系統分享程序

  上面提到過, 半虛拟化需要客戶作業系統做一些修改(配合hypervisor), 這是一個不足之處. 但是半虛拟化提供了與原始系統相近的性能. 與全虛拟化一樣, 半虛拟化可以同時能支援多個不同的作業系統.

有這樣的疑問:

在半虛拟化的環境中,不能運作未經修改核心的作業系統,那麼,cpu不支援vt,在宿主系統上跑的虛拟環境就可以稱為半虛拟化環境了,那麼在cpu不支援vt的機器上vmwera可以運作xp,這個互相沖突,為什麼就可以運作呢?

pv vs. fv

pv(para-vritralization)和fv(full-vritralization)的差别,主要以guest os的硬體仿真程度做區分。

fv:fv是一般較常看到的作法,所有的guest os完全不會看到實際的硬體為何,隻能使用由supervisor所提供的所有虛拟硬體,是以,在這種機制下,guest os動作的性能一定會大受虛拟接口的影響。另外還有一個特點,就是因為完全仿真的關系,不支援新的技術,連acpi開關機的機制都無法使用,也就是當使用者在fv的guest os下,若直接觸動關機的按鈕(這裡的按鈕是由vmm所提供的,不是主機上的)會直接斷電,而不會進行關機程式。

pv:至于pv的作法,有鑒于一般virtual machine工具都是以完全仿真的方式,造成性能上的降低,是以,xen在設計上,希望各作業系統可以在開發時就已經将xen的技術包括進去,這樣在使用時,就可以用局部仿真的方式,讓作業系統可以直接使用到硬體中的cpu、記憶體等,而不需要通過xen做仿真的操作。

這樣,若硬體都是由virtual machine仿真出來的,性能自然會變得比較慢,是以xen所主推的概念就是,當作業系統預設支援xen時就可以通過xen的機制,直接使用到底層的硬體,而不是每個os都要通過hypervisor的接口,性能上就可大為提高。

在pv與fv的安裝上,對cpu的要求是有差異的。以pv而言,因為os原本就支援xen,是以不需要經過特殊的處理步驟,是以,對cpu來于,沒有特殊的要求,基本上都可以使用。

但fv就不同,因為fv模式是以完全仿真的方式進行,是以cpu必須要特别将此功能加入到cpu的核心中,是以,cpu是有特殊需求的。在intel與amd中針對virtual machine所加入的功能名稱不同,分别為intel vt與amd-v。

在目前linux的世界,xen并不是唯一的,除了xen這一架構外,另外還有一個kvm(kernel based vitrual machine),從2.6.20版本之後的linux kernel就支援其功能。因為kvm的做法是以原本kernel為依據,隻要将其module加載即可使用,唯一較xen弱勢的是kvm以單一full virtuallization為服務方式。

虛拟化最近幾年取得了長足的進步,首先由于有大量的開源虛拟機管理程式在不斷發展,這個改進幾乎排除了作業系統與大功率伺服器快速增長的利用之間的障礙,公司立即受益。知道最近,軟體仿真虛拟化一直是關注的焦點,兩個常見的軟體仿真虛拟化途徑是完全虛拟化和半虛拟化。對于完全虛拟化,通常調用管理程式或虛拟機螢幕,存在于虛拟作業系統和硬體層之間,這個層在作業系統執行個體之間多路複用競争系統資源。半虛拟化不同,管理程式在一個協作的環境中運作,因為每個客戶作業系統都知道它正運作在一個虛拟化環境中,是以每個使用管理程式的協作都在硬體下完成虛拟。

兩個途徑都有優勢也有劣勢,半虛拟化的主要優勢在于它運作盡可能快地基于軟體的虛拟化,以不支援有專利的作業系統為代價。完全虛拟化沒有這個限制,但是,完全虛拟化管理程式非常複雜。vmware,一個商業虛拟化解決方案,它就是一個完全虛拟化的例子,xen,使用者模式linux(uml)和其他提供的是半虛拟化解決方案。

簡單介紹一下基于硬體的虛拟化,這個線路已經變得模糊起來,随着intel的vt技術和amd的svm技術的出現,編寫一個管理程式變得更加簡單了,現在,保持管理程式複雜性到最小程度,對于完全虛拟化受益匪淺。

xen作為最優秀的半虛拟化引擎,在基于硬體的虛拟化的幫助下,現在也支援完全虛拟化ms windows了。kvm是一個相對較新的簡單的,但也非常強大的虛拟化引擎,它已經內建到linux核心中去了,讓核心天生有虛拟化的能力,因為kvm使用的是基于硬體的虛拟化技術,它不需要修改客戶作業系統,是以,部署在一個受支援的處理器上,它可以從linux支援任何平台。

一、xen是一款虛拟化軟體,支援半虛拟化和完全虛拟化。它在不支援vt技術的cpu上也能使用,但是隻能以半虛拟化模式運作。

二、半虛拟化的意思是需要修改被虛拟系統的核心,以實作系統能被完美的虛拟在xen上面。完全虛拟化則是不需要修改系統核心則可以直接運作在xen上面。

三、vmware是一款完全虛拟化軟體。完全虛拟的弱點是效率不如半虛拟化的高。半虛拟化系統性能可以接近在裸機上的性能。

四、 xen是由一個背景守護程序維護的,叫做xend,要運作虛拟系統,必須先将它開啟。它的配置檔案在/etc/xen/xend-config.sxp,内容包括宿主系統的類型,網絡的連接配接結構、宿主作業系統的資源使用設定,以及vnc連接配接的一些内容。(如果你想增加一個虛拟網絡裝置的話,是需要在這裡設定的)

五、/etc/xen/auto 的含義是如果你想讓被虛拟系統随着宿主系統一同啟動的話,就把虛拟系統的配置檔案放到這個目錄下面來。

六、/etc/xen/scripts 是些腳本檔案,用于初始化各種虛拟裝置,比如虛拟網橋等。(如果要增加一個虛拟網絡裝置,同樣需要在此處調節)

七、在/etc/xen下面會有些配置檔案,這就是虛拟系統引導時所必須的些檔案,裡面記錄了引導和硬體資訊。

八、xen的配置工具有許多,我使用的是virt-manager(gui)、virt-install和xm。第一個用于管理和安裝系統,第二個隻用于安裝系統,第三個用于啟動系統。

九、安裝半虛拟linux有兩種方法,一種是利用linux的網絡安裝方式安裝,http、ftp、nfs方式都是可以的(特别注意:半虛拟環境下安裝linux是不支援本地光驅或者iso鏡像安裝的!),并且rhel5會自動生成配置檔案。第二種是先建立鏡像檔案,并格式化,然後挂載到本地檔案系統上來,将虛拟系統需要用到的檔案拷貝進去并修改,然後手工建立配置檔案并啟動。

十、虛拟網絡裝置有三種模式:bridge橋模式、router路由模式和nat模式。其中橋模式是預設模式,在這種模式下,虛拟系統和宿主系統被認為是并列的關系,虛拟系統被配置ip或者dhcp後即可聯通網絡。

十一、原來的iptables無法對橋模式下的資料包做處理,rhel5的iptables中增加了一個physdev的子產品,可用iptables -m physdev -h檢視幫助

繼續閱讀