1、虛擬化是什麼:虛擬化是一種技術,是一種能夠將物理資源轉變爲靈活使用的資源的技術。使用虛擬化技術,咱們能夠在一臺物理服務器上模擬出多個獨立的服務器來一般,應用程序須要安裝在操做系統上,而一臺物理服務器只能同時 運行一個操做系統,使用了虛擬化之後,這些模擬出來的每一個服務器均可以有本身獨立的操做系統。這樣,至關於在一臺服務器服務器上同時能夠運行多個操做系統了。器上模擬出多個獨立的服務器來
常見虛擬化名詞:前端
虛擬化技術的核心——Hypervisor(虛擬機監視器),也能夠被稱爲 VMM(Virtual Machine Manager)
在一個 Host Machine 之上能夠創建並運行多個 Guest Machine。windows
2、計算虛擬化的分類:
根據 Hypervisor 的不一樣類型,咱們將虛擬化分爲 I 型和 II 型兩種後端
3、虛擬化特色:不管是 I 型仍是 II 型虛擬化,都具有分區、隔離、封裝和獨立的特色。服務器
4、cpu虛擬化
1)CPU的分級保護域:
CPU 架構分紅 4 個層級——Ring0、Ring一、Ring2 和 Ring3,Ring0 的權限最高,Ring3 最低。
Ring0 的權限能夠直接操做硬件,通常只有操做系統和驅動會容許擁有此權限。Ring3 的權限最低,全部的應用程序均可以擁有此權限
2)操做系統通常發出的命令分爲兩種類型:特權指令和普通指令架構
CISC 架構的 CPU 指令集的特權指令和敏感指令並不徹底重合,具體來 說,基於 x86 的 CISC 指令集有 19 條敏感指令不屬於特權指令的範疇,這部分敏感指令運行在 CPU 的 Ring 1 用戶態上。這部分的命令不屬於特權命令所以沒法被VMM捕獲,所以x86 沒法使用「特權解除陷入模擬」的虛擬化技術。
所以架構師提出了三種新方法:全虛擬化、半虛擬化、硬件輔助虛擬化
全虛擬化(Vmware提出):將全部虛擬機發出的操做系統請求轉發到虛擬機監視器(VMM)虛擬機監視器對指令進行二進制翻譯若是指令是特權指令或敏感指令則進入VMM模擬執行,而後調度到 CPU 特權級別Ring0上執行,若是隻是應用程序指令則直接在 CPU 非特權級別上執行
半虛擬化(Xen提出):經過修改虛擬機操做系統Guest OS 虛擬機操做系統會使用」(Hypercall)超級調用來替換虛擬化中的敏感指令 若是虛擬機發出的指令是這些用Hypercall 那就直接交給虛擬機監視器VMM ,虛擬機監視器在調度指令到硬件CPU上執行
硬件輔助虛擬化:即CPU 直接支持虛擬化功能,而且能夠識別敏感指令
目前主流的 x86 主機的 CPU 都支持硬件虛擬化技術,Intel 研發VT-x 的 CPU,AMD 推出 AMD-V 的 CPU這兩種技術都爲 CPU 增長了新的執行模式 root 模式,可讓虛擬化監視器 VMM 運 行在 root 模式下,而 root 模式位於 CPU 指令級別 Ring 0 的下面。特權和敏感指令自動在 Hypervisor 上執行ide
5、內存虛擬化:
一般狀況下物理主機在使用內存地址空間時都是按照
一、內存地址都是從物理地址0開始的 二、內存地址空間都是連續分配的
引入虛擬化後出現了問題:首先是要求內存地址空間都從物理地址 0 開始,顯然物理地址爲0的內存地址空間只有一個,沒法同時知足全部虛擬機內存使用都要從 0 開始的要求; 其次,地址連續分配問題。即便能夠爲虛擬機分配連續的物理地址,可是內存使用效率不高,缺少靈活性。
因此引入內存虛擬化技術,。內存虛擬化就是把物理機的真實物理 內存統一管理,包裝成多份虛擬的內存給若干虛擬機使用。內存虛擬化技術的核心在於引入一層 新的地址空間——客戶機物理地址空間,客戶機(Guest)覺得本身運行在真實的物理地址空間 中,實際上它是經過 VMM 訪問真實的物理地址的,在 VMM 中保存客戶機地址空間和物理機 地址空間之間的映射表,操作系統
6、I/O虛擬化:
一、全虛擬化:經過 VMM 爲虛擬機模擬出一個與真實設備相似 的虛擬 I/O 設備,當虛擬機對 I/O 設備發起 I/O 請求時,VMM 截獲虛擬機下發的 I/O 訪問請 求,再由 VMM 將真實的訪問請求發送到物理設備進行處理
二、半虛擬化:它須要創建一個特權級別的 虛擬機,即特權虛擬機。半虛擬化方式要求各個虛擬機運行前端驅動程序,當須要訪問 I/O 設備 時,虛擬機經過前端驅動程序把 I/O 請求發送給特權虛擬機,由特權虛擬機的後端驅動收集每一個 虛擬機所發出的 I/O 請求,再由後端驅動對多個 I/O 請求進行分時分通道處理。特權虛擬機運行 真實的物理 I/O 設備驅動,將 I/O 請求發送給物理 I/O 設備,I/O 設備處理完成後再將結果返回 給虛擬機。即主動讓虛擬機把 I/O 請求發送給特權虛擬機,再由特權虛 擬機訪問真實的 I/O 設備
Domain 0 就是特權虛擬機,Domain U 則爲用戶虛擬機翻譯
3.硬件輔助虛擬化:硬件輔助虛擬化不一樣於前面兩種方式,它是直接將 I/O 設備驅動直接 安裝在虛擬機操做系統中3d
7、主流的計算虛擬化:主流的虛擬化技術有不少,通常咱們會使用開源和閉源來進行分類。開源的包含 KVM 和 Xen,閉源的包括微軟的 Hyper-v、VMware 的 vSphere、華爲的 FusionSphereblog