半虛擬化和全虛擬化

本文轉自:原文鏈接

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

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖1. 全虛擬化: 使用Hypervisor分享底層硬件

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

老機器上的Hypervisors

一些老的硬件如x86, 全虛擬化遇到了問題. 比如, 一些敏感的指令需要由VMM來處理(VMM不能設置陷阱). 因此, Hypervisors必須動態掃描和捕獲特權代碼來處理問題.

半虛擬化

半虛擬化(Paravirtualization)是另一種類似于全虛擬化的熱門技術. 它使用Hypervisor(虛擬機管理程序)分享存取底層的硬件,如圖2, 但是它的客戶操作系統集成了虛擬化方面的代碼. 該方法無需重新編譯或引起陷阱, 因為操作系統自身能夠與虛擬進程進行很好的協作.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖2. 半虛擬化: 通過客戶操作系統分享進程

上面提到過, 半虛擬化需要客戶操作系統做一些修改(配合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查看幫助

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,673評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,668評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,004評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,173評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,705評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,426評論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,656評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,833評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,371評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,621評論 2 380

推薦閱讀更多精彩內容

  • 虛擬化(Virtualization)這種起源于上世紀60年代IBM大型機系統的技術在處理器性能大幅度提升的當下,...
    古斟布衣閱讀 4,549評論 0 7
  • 原文鏈接1 Xen概述 1.1 簡介Xen是由劍橋大學計算機實驗室開發的一個開源項目。是一個直接運行在計...
    Quinton_Lau閱讀 2,134評論 0 5
  • 從接觸虛擬化技術到現在從事Openstack相關的開發已經好幾年了,最初很多模模糊糊的概念現在看似也很簡單,但是總...
    cheneydc閱讀 7,603評論 3 16
  • 前言 隨著云計算技術與服務的發展和進步,越來越多的客戶選擇將業務部署到云端。但由于引入了虛擬化層,在業務部署過程中...
    UCloud云計算閱讀 1,437評論 0 2
  • 引入 jsx 語法內容時,需要指定 type為 text/babel 或者 ...jxs ReactDOM.r...
    LorenaLu閱讀 297評論 0 0