虛擬化概述

虛擬化簡介

1、虛擬化是什麼:虛擬化是一種技術,是一種能夠將物理資源轉變爲靈活使用的資源的技術。使用虛擬化技術,咱們能夠在一臺物理服務器上模擬出多個獨立的服務器來一般,應用程序須要安裝在操做系統上,而一臺物理服務器只能同時 運行一個操做系統,使用了虛擬化之後,這些模擬出來的每一個服務器均可以有本身獨立的操做系統。這樣,至關於在一臺服務器服務器上同時能夠運行多個操做系統了。器上模擬出多個獨立的服務器來
常見虛擬化名詞:
虛擬化概述前端

虛擬化技術的核心——Hypervisor(虛擬機監視器),也能夠被稱爲 VMM(Virtual Machine Manager)
在一個 Host Machine 之上能夠創建並運行多個 Guest Machine。windows

2、計算虛擬化的分類:
根據 Hypervisor 的不一樣類型,咱們將虛擬化分爲 I 型和 II 型兩種後端

  • Ⅰ型是裸機型,直接運行在硬件設備上的服務器上直接部署Hypervisor,而後部署虛擬機,每一個虛擬機上跑操做系統Linux或者win.好比fusionsphare(華爲),VMware EsxServer
  • Ⅱ型一種是主機託管型,運行在具備虛擬化功能的操做系統上的好比windows上的虛擬化軟件就有VMware workstation(VMware公司),hyper-v(微軟公司),MacBook上虛擬化軟件:VMware fusion
    虛擬化概述
    Hypervisor (虛擬機監視器)主要實現兩個基本功能:首先是識別、捕獲和響應虛擬機所發出的 CPU 特權指令或保護指令;其次,它負責處理虛擬機隊列和調度,並將物理硬件的處理結果返回給相應的虛擬機

3、虛擬化特色:不管是 I 型仍是 II 型虛擬化,都具有分區、隔離、封裝和獨立的特色。服務器

  • 分區:對物理機分區,可實如今單一物理機上同時運行多個虛擬機;
  • 隔離:同一物理機上多個虛擬機相互隔離相互不受影響
  • 封裝:封裝意味着將整個虛擬機(硬件配置、BIOS 配置、內存狀態、磁盤狀態、CPU 狀態)儲存在獨立於物理硬件的一小的文件或文件夾中只需複製幾個文件就能夠隨時隨地根據須要復 制、保存和移動虛擬機。
  • 獨立:虛擬機在封裝爲獨立文件後,虛擬機遷移只須要把虛擬機設備文件和配 置文件或磁盤文件複製到另外一臺主機上運行便可

4、cpu虛擬化
1)CPU的分級保護域:
虛擬化概述
CPU 架構分紅 4 個層級——Ring0、Ring一、Ring2 和 Ring3,Ring0 的權限最高,Ring3 最低。
Ring0 的權限能夠直接操做硬件,通常只有操做系統和驅動會容許擁有此權限。Ring3 的權限最低,全部的應用程序均可以擁有此權限
2)操做系統通常發出的命令分爲兩種類型:特權指令和普通指令架構

  • 特權指令:必須在Ring 0級別才能運行
  • 普通指令:在Ring 3 級別上就能運行
    在虛擬化的環境下還有一種指令叫作敏感指令。敏感指令是修改虛擬機的運行模式或宿主機狀態的命令,也就是說是將 Guest OS 中本來須要在 Ring 0 模式下才能運行的特權指 令剝奪特權後,交給 VMM 所執行的指令。
    3)大型機的 CPU 虛擬化方式:大型機 CPU 虛擬化採起的是「特權解除」和「陷入模擬」方法,這種方法也被稱爲經典虛擬化方式即精簡指令集 RISC 計算機架構。
    Risc架構:它的基本原理是,將 Guest OS 運行在非特權級(即特權解除),而將 VMM 運行於最高特權級(即徹底控制系統資源)
    若是虛擬機 Guest OS 發出特權操做指令怎麼執行呢?由於所 有虛擬機的系統都被解除了特權,因而「陷入模擬」就發揮做用了,它解除了 Guest OS 的特 權後,Guest OS 的大部分指令仍能夠在硬件上直接運行,只有當執行到特權指令時,纔會陷入 到 VMM 模擬執行(陷入-模擬)。由 VMM 代替虛擬機向真正的硬件 CPU 發出特權操做指令
    虛擬化概述虛擬化概述
    4)x86() 架構的 CPU 指令集是不一樣於 RISC 架構的 CISC 架構

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、華爲的 FusionSphere
虛擬化概述blog

相關文章
相關標籤/搜索