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

1、定義
前端

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

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

2、虛擬化的類別服務器

虛擬化的類別有不少,定義也很寬泛;沒法作到全面詳述。這裏將簡單說明:網絡

一、模擬:emulation(底層和模擬架構不須要一致);經過軟件模擬是須要模擬環Ring0/1/2/3層;可是性能差;因此使用相對較少。架構

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

wKioL1N_J5TR_vMDAACDYwE0MrQ142.jpg

二、徹底虛擬化(full-virtualization):只虛擬出環ring0(以CPU虛擬化來講明)jvm

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

    • 優勢:不用修改GuestOS內核能夠直接使用;應用普遍。性能

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

wKiom1N--0ijluewAAEXHEtbiKI317.jpg

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

wKiom1N_J07iWHAwAADvRaoKB_k779.jpg

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

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

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

wKiom1N_KKrjTaCSAAD_2hk9qbc060.jpg

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

wKioL1N_KI_AHoWGAAC9M2bvM64680.jpg

五、庫虛擬化:wine

六、應用程序虛擬化:jvm

虛擬化的實現方式:

兩種類型:

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

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

wKiom1N_KNjyDJAkAADRN569B0s251.jpg

3、內存(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的支持。


4、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:

5、虛擬化網絡

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

wKiom1N_LSzCDWemAACuqbbH7aA345.jpg

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

wKioL1N_LRrC1KNHAACza0CcBBQ242.jpg

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

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

wKiom1N_LYOTSt9bAADynOCm8dM545.jpg

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

wKioL1N_LZ7x6XYKAADRs68eZZQ940.jpg

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




若有錯誤;懇請糾正。

相關文章
相關標籤/搜索