天天看點

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

一、定義

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

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

二、虛拟化的類别

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

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

硬體-->host-->vmm(emulation)-->virtulization host

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5、庫虛拟化:wine

6、應用程式虛拟化:jvm

虛拟化的實作方式:

兩種類型:

type-i:hypervisor;在虛拟機的管理上更加的徹底和可靠。

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

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

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

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

vmm:對io的驅動有三種模式:

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

混合vmm:借助于os提供驅動;

依賴于外部os實作特權域

自我提供特權域

寄宿式vmm:

五、虛拟化網絡

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

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

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

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

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

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

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

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

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

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

如有錯誤;懇請糾正。

繼續閱讀