Virtualization-Cpu/Memory/IO虛擬化詳解

一、定義

虛擬化是指通過虛擬化技術將一臺計算機虛擬爲多臺邏輯計算機。在一臺計算機上同時運行多個邏輯計算機,每個邏輯計算機可運行不同的操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。CPU虛擬化技術可以單CPU模擬多CPU並行,允許一個平臺同時運行多個操作系統,並且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率。

二、虛擬化的類別

虛擬化的類別有很多,定義也很寬泛;無法做到全面詳述。這裏將簡單說明:

1、模擬:emulation(底層和模擬架構不需要一致);通過軟件模擬是需要模擬環Ring0/1/2/3層;但是性能差;所以使用相對較少。

硬件-->Host-->VMM(emulation)-->Virtulization host

wKioL1N_J5TR_vMDAACDYwE0MrQ142.jpg

2、完全虛擬化(full-virtualization):只虛擬出環ring0(以CPU虛擬化來說明)

  • BT:二進制翻譯技術(Binary Translate);將模擬的CPU直接翻譯成特權指令;限定虛擬結構平臺和底層物理架構必須保持一致。基於軟件的完全虛擬化。

    • 優點:不用修改GuestOS內核可以直接使用;應用廣泛。

    • 缺點:在VMM捕獲特權指令和翻譯過程會導致性能的下降。

wKiom1N--0ijluewAAEXHEtbiKI317.jpg

  • 硬件輔助虛擬化:5個指令環;在環0的底層加了環-1;環0的特權指令給了環-1;HVM(hardware virtulization machine);屬於硬件的完全虛擬化。

wKiom1N_J07iWHAwAADvRaoKB_k779.jpg

3、半虛擬化(para-virtulization):Guest明確知道自己運行在虛擬機上;;在執行特權指令時直接向hyper call調用;省去了特權指令的翻譯過程。

  • 優點:相對完全虛擬化;性能高;省去了特權指令的翻譯過程。

  • 缺點:需要對GuestOS內核的修改;應用有限制。

wKiom1N_KKrjTaCSAAD_2hk9qbc060.jpg

4、OS級別的虛擬化:硬件-->OS kernel-->多個用戶空間

wKioL1N_KI_AHoWGAAC9M2bvM64680.jpg

5、庫虛擬化:wine

6、應用程序虛擬化:jvm

虛擬化的實現方式:

兩種類型:

  • Type-I:Hypervisor;在虛擬機的管理上更加的徹底和可靠。

  • Type-II:宿主機運行在硬件上;可以依賴宿主機的各種管理軟件進行虛擬機管理。

wKiom1N_KNjyDJAkAADRN569B0s251.jpg

三、內存(Memory)虛擬化

內存虛擬化是虛擬機實現中的重要部分。在虛擬機中,虛擬出來的Guest OS和Host OS用的是相同的物理內存,卻不能讓它們相互影響到。如果OS在物理機上運行,只要OS提供頁表,MMU會在訪存時自動做虛擬地址(Virtual address, VA)到物理地址(Physical address, PA)的轉化。而如果虛擬機上運行時,Guest OS經過地址轉化到的“物理地址”並不是真實物理內存上的地址(GVA-->GPA),因此還需要使用軟件將其轉化爲真實物理內存地址(HPA)。也就是說Guest OS要訪問VA需要經過GVA-->GPA-->HPA的轉化。

  • MMU Virtualization:

    Guest完成GVA-->GPA第一層轉化,硬件同時完成GPA到HPA這第二層轉化。第二層轉化對於Guest OS來說是透明的。Guest OS訪問內存時和在物理機運行時是相同的,所以可以實現全虛擬化。這種特性Intel和AMD都有支持。Intel稱之爲Extended Page Tables (EPT),AMD稱之爲Nested Page Tables (NPT)。其優點是hypervisor節省了工作,缺點是需要硬件支持。

  • TLB Virtualization:tagged TLB

    TLB:轉換後援存儲器;原生只存儲VA-->PA的對應關係。所以在虛擬內存中的兩次轉換會導致TLB的命中率失效。致使性能降低。所以使用tagged TLB,它緩存了Guest對象和GVA-->HPA的對應關係。需要CPU的支持。


四、I/O虛擬化的方式

  • 模擬(完全虛擬):完全使用軟件來模擬真實硬件;模擬通常硬件;例如鍵盤鼠標;通過焦點捕獲;焦點被哪個主機捕獲就被哪個主機使用。性能很差。

  • 半虛擬化:對硬件驅動由前端(IO frontend)直接轉到後端(IO backend)調用;通常僅適用於硬盤和網卡。性能高。

  • IO-through:IO透傳;直接分配給虛擬機物理設備;例如直接分配一個硬盤或網卡給虛擬機;需要硬件具備IO透傳技術;在Xen下由Dom0分配;但是訪問使用直接使用;不經過Dom0。需要硬件支持。

I/O具體工作模式:

wKioL1N_K3TCmGevAAG_7ES5ySI305.jpg

VMM:對IO的驅動有三種模式:

  • 自主VMM:由VMM自行提供驅動和控制檯;

  • 混合VMM:藉助於OS提供驅動;

    依賴於外部OS實現特權域

    自我提供特權域

  • 寄宿式VMM:

五、虛擬化網絡

bridge:把原宿主機上的網卡當交換機;然後虛擬出一個橋來接收發往宿主機的數據包。

wKiom1N_LSzCDWemAACuqbbH7aA345.jpg

isolation mode:僅guest之間通信;不與外部網絡和宿主機通信。

wKioL1N_LRrC1KNHAACza0CcBBQ242.jpg

routed mode:與外部主機通信;依賴於靜態路由指定到各Guest需經過pnet0。

    host-only:不與外部主機通信。

wKiom1N_LYOTSt9bAADynOCm8dM545.jpg

nat:地址轉換;在虛擬網卡和物理網卡之間建立一個nat轉發服務器;對數據包進行源地址轉換。

wKioL1N_LZ7x6XYKAADRs68eZZQ940.jpg

到此基本虛擬化基礎以詳解完成。




如有錯誤;懇請糾正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章