天天看點

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

一、定義

虛拟化是指通過虛拟化技術将一台計算機虛拟為多台邏輯計算機。在一台計算機上同時運作多個邏輯計算機,每個邏輯計算機可運作不同的作業系統,并且應用程式都可以在互相獨立的空間内運作而互不影響,進而顯著提高計算機的工作效率。

虛拟化技術可以擴大硬體的容量,簡化軟體的重新配置過程。CPU的虛拟化技術可以單CPU模拟多CPU并行,允許一個平台同時運作多個作業系統,并且應用程式都可以在互相獨立的空間内運作而互不影響,進而顯著提高計算機的工作效率。

二、虛拟化的類别

虛拟化的類别有很多,定義也很寬泛;無法做到全面詳述。這裡将簡單說明:

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

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

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

BT:二進制翻譯技術(Binary Translate);将模拟的CPU直接翻譯成特權指令;限定虛拟結構平台和底層實體架構必須保持一緻。基于軟體的完全虛拟化。

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

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

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

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

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

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

4、OS級别的虛拟化:硬體-->OS kernel-->多個使用者空間

5、庫虛拟化:wine

6、應用程式虛拟化:jvm

虛拟化的實作方式:

兩種類型:

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

Type-II:主控端運作在硬體上;可以依賴主控端的各種管理軟體進行虛拟機管理。

三、記憶體(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具體工作模式:

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

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

混合VMM:借助于OS提供驅動;

依賴于外部OS實作特權域

自我提供特權域

寄宿式VMM:

五、虛拟化網絡

bridge:把原主控端上的網卡當交換機;然後虛拟出一個橋來接收發往主控端的資料包。

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

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

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

nat:位址轉換;在虛拟網卡和實體網卡之間建立一個nat轉發伺服器;對資料包進行源位址轉換。

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

如有錯誤;懇請糾正。

本文出自 “” 部落格,請務必保留此出處

繼續閱讀