Virtualization虛擬化技術介紹

Virtualization即虛擬化技術,在計算機方面通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。CPU的虛擬化技術可以單CPU模擬多CPU并行,允許一個平臺同時運行多個操作系統,并且應用程序都可以在相互獨立的空間內運行而互不影響,從而顯著提高計算機的工作效率

本節索引:

一、虛擬化基本概念

二、虛擬化常見架構類型

三、Xen架構簡介

四、CPU虛擬化原理介紹

五、內存虛擬化原理介紹

 

一、虛擬化基本概念

什么是虛擬化?

虛擬化是把物理的事物轉換成為邏輯的方式表現出來

常見的虛擬化

內存虛擬化:內存頁面Page File

磁盤虛擬化:RAID,Volume

網絡虛擬化:vlan,vxlan

FusionSphere-x86/x64服務器的虛擬化

計算能力:CPU/Memory的虛擬化

存儲:VIMS文件系統

網絡:分布式虛擬交換機

 

虛擬化的優勢

傳統物流服務器

操作系統與物理服務器綁定

1.難以遷移

2.難以擴展

3.空間占用高

4.可靠性難以控制

5.資源利用率低

6.難以管理

 

虛擬化服務器

操作系統與物理服務器分離

1.易于遷移、擴展、資源整合

2.標準化的虛擬硬件

3.由一系列文件組成,易于保護

 

 

虛擬化常見概念

Guset OS:運行在虛擬機上的OS

Guset Machine:虛擬出來的虛擬機

Hypervisor:也叫VMM (Virtual Machine Monitor)虛擬機監控器,

Host OS:運行在物理機上的OS

Host Machine:物理機

 

模擬:emulation

x86 -> arm

sata -> scsi

完全虛擬化:Full Virtualization

開發人員直接針對物理平臺開發即可,性能能達到硬件IDE的40%

CPU:

BT

HVM

半虛擬化:Para Virtualization

也叫不完全虛擬化,開發人員需針對虛擬化平臺開發,性能能達到硬件IDE的80%

建議:生產環境一般使用半虛擬化技術:簡單、性能好、易遷移上云

 

IAASCloudOS上部署xen或kvm這樣的虛擬機,基礎架構即服務

PAASCloudOS上直接提供一個容器作為平臺,不需要用戶安裝操作系統,平臺即服務

SAAS本機只需運行個瀏覽器,其他全交給云來解決,軟件即服務

以此延伸,近些年還出現了:

DBaas:數據庫即服務

LBaas:負載均衡即服務

……

 

 

二、虛擬化常見架構類型

根據在整個系統中的位置不同,虛擬化架構分為以下幾種:

1.寄居虛擬化架構

2.裸金屬虛擬化架構

3.操作系統虛擬化架構

4.混合虛擬化架構

 

(一)寄居虛擬化架構

寄居虛擬化架構指在宿主操作系統之上安裝和運行虛擬化程序,依賴于宿主操作系統對設備的支持和物理

資源的管理。(類似 Vmware Workstation 的程序)

寄居虛擬化

優點:簡單、易于實現

缺點:1.安裝和運行應用程序依賴主機操作系統對設備的支持;

2.管理開銷較大,性能損耗大

代表產品:VMware Workstation

 

 

2)裸金屬虛擬化架構

裸金屬虛擬化架構指直接在硬件上面安裝虛擬化軟件,再在其上安裝操作系統和應用,依賴虛擬層內核和

服務器控制臺進行管理。

裸金屬虛擬化

優點:1.虛擬機不依賴操作系統

2.支持多種操作系統,多種應用

缺點:虛擬層內核開發難度大

代表產品:WNware ESXServer、Citrix XenServer

 

(三)操作系統虛擬化架構

操作系統虛擬化架構在操作系統層面增加虛擬服務器功能。操作系統虛擬化架構把單個的操作系統劃分為

多個容器,使用容器管理器來進行管理。

宿主操作系統負責在多個虛擬服務器(即容器)之間分配硬件資源,并且讓這些服務器彼此獨立。

操作系統虛擬化

優點:1.簡單、易于實現

2.管理開銷非常低

缺點:隔離性查,多容器共享同一操作系統

代表產品:Docker

 

(四)混合虛擬化架構

混合虛擬化架構將一個內核級驅動器插入到宿主操作系統內核。這個驅動器作為虛擬硬件管理器來協調虛

擬機和宿主操作系統之間的硬件訪問。

混合虛擬化

優點:1.相對于寄居虛擬化架構,沒有冗余,性能高;

2.可支持多種操作系統

缺點:需底層硬件支持虛擬化拓展功能

代表產品:Redhat KVM

 

 

三、Xen架構簡介

1Q~X45X(T2{UT1@E8GY{7NW

Domain U運行在Xen Hypervisor上的普通虛擬機

Domain 0運行在Xen Hypervisor上的特權虛擬機。它擁有訪問物理I/O資源的權限,同時和系統上運

行的其他虛擬機進行交互。Domain 0必須要在其他Domain啟動之前啟動。

 

虛擬機復用有限的外設資源:

1)Hypervisor截獲虛擬機對物理硬件的訪問請求,然后通過軟件的方式來模擬真實設備的效果;

2)前端設備驅動將數據通過VMM提供的接口轉發到后端驅動

3)后端驅動VM的數據進行分時分通道的處理

 

 

四、CPU虛擬化原理介紹

(一)基于軟件的CPU的虛擬化

基于軟件的 CPU 虛擬化,故名思議,就是通過軟件的形式來模擬每一條指令。通過前面的文章我們知道常

用的軟件虛擬化技術有兩種:優先級壓縮和二進制代碼翻譯。這兩種是通用技術,可以用在所有虛擬化類

型中。我們就結合 intercept 和 virtualize 來看看 CPU 軟件虛擬化是怎么做的。

 

首先,一些必須的硬件知識要知道,X86 體系架構為了讓上層的軟件(操作系統、應用程序)能夠訪問硬

件,提供了四個 CPU 特權級別,Ring 0 是最高級別,Ring 1 次之,Ring 2 更次之,Ring 3 是最低級別。

 

一般,操作系統由于要直接訪問硬件和內存,因此它的代碼需要運行在最高級別 Ring 0 上,而應用程序的

代碼運行在最低級別 Ring 3 上,如果要訪問硬件和內存,比如設備訪問,寫文件等,就要執行相關的系統

調用,CPU 的運行級別發生從 Ring 3 到 Ring 0 的切換,當完成之后,再切換回去,我們熟悉的用戶態和

內核態切換的本質就來自這里。

 

虛擬化的實現也是基于這個思想,VMM 本質上是個 Host OS,運行在 Ring 0 上,Guest OS 運行在 Ring 1

上,再往上是相應層次的應用程序運行在 Ring 2 和 Ring 3 上。

CPU軟件虛擬化

 

(二)基于硬件的CPU虛擬化

上面的這種截獲再模擬的純軟件的虛擬化方式,勢必是性能非常低的。那怎么樣提高性能呢,有一種改進

的方式是修改 Guest OS 中關于特權指令的相關操作,將其改為一種函數調用的方式,讓 VMM 直接執

行,而不是截獲和模擬,這樣就能在一定程度上提高性能。

 

但這種方式并不通用,要去改 Guest OS 的代碼,只能看作是一種定制。為了能夠通用,又能夠提高性

能,就只能從硬件上去做文章了。所以,后來,以 Intel 的 VT-x 和 AMD 的 AMD-V 為主的硬件輔助的

CPU 虛擬化就被提出來(Intel VT 包括 VT-x (支持 CPU 虛擬化)、EPT(支持內存虛擬化)和 VT-

d(支持 I/O 虛擬化)。

 

CPU 硬件輔助虛擬化在 Ring 模式的基礎上引入了一種新的模式,叫 VMX 模式。它包括根操作模式

(VMX Root Operation)和非根操作模式(VMX Non-Root Operation)。

這兩種模式都有 Ring 0 – Ring 3 的特權級。所以,在描述某個應用程序時,除了描述其屬于哪個特權級,

還要指明其處于根模式還是非根模式。

 

引入這種模式的好處就在于,Guest OS 運行在 Ring 0 上,就意味著它的核心指令可以直接下達到硬件層

去執行,而特權指令等敏感指令的執行則是由硬件輔助,直接切換到 VMM 執行,這是自動執行的,應用

程序是感知不到的,性能自然就提高了。

CPU硬件虛擬化

KVM 是一種硬件輔助的虛擬化技術,支持 Intel VT-x 和 AMD-v 技術。

 

五、內存虛擬化原理介紹

通過各種內存復用技術(零頁共享、內存氣泡和內存交換)與合理的調度,使主機上的虛擬機對內存的

訪問及時響應,減少內存復用開啟情況下的虛擬機性能損耗

(一)零頁共享

將主機上的多個虛擬機的零頁內存在物理內存中進行合并,釋放出更多的物理內存供虛擬機使用。

 

(二)內存氣泡

Hypervisor通過內存氣泡將較空閑虛擬機內存釋放給內存使用率較高的虛擬機,用來提升內存利用率。

內存氣泡技術對虛擬機性能影響較小,但是在內存減少時,用戶能感知到

 

(三)內存交換

當虛擬機的內存壓力較大時,將虛擬機內存頁交換到磁盤中從而釋放內存;

當虛擬機內存頁交換到磁盤后,虛擬機的性能將下降比較明顯

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104073

(3)
wangxczwangxcz
上一篇 2018-07-27
下一篇 2018-07-28

相關推薦

  • shell腳本進階-課后練習題答案

    答案不唯一,不足之處請各位大佬多多支教

    2018-05-05
  • Linux之下的文件權限

    文件的屬性 文件屬性 Linux下的文件類型 -:普通文件 d:?目錄文件 b: 塊設備 c:?字符設備 l:?符號鏈接文件 p:?管道文件pipe s:?套接字文件socket …… 權限表示法 文件的權限 在文件權限中,一共有十字符,第一個字符為文件的類型。接下來的字符分為三組,分別是文件所有者、所屬組、其他人。每一組分別由rwx?三個參數組合。其中,r…

    Linux筆記 2018-04-08
  • 三劍客 sed

    三劍客之一

    Linux筆記 2018-08-07
  • Linux系統上命令的使用格式

    命令的語法通用格式: ~]# COMMAND OPTIONS ARGUMENTS ifconfig命令格式 ifconfig [interface] [options] | address   Echo命令格式 echo [options] …[string]… tty命令格式 tty [options] startx命令格…

    Linux筆記 2018-05-13
  • Linux-標準IO和管道

    打開的文件都有一個fd:file description(文件描述符) [root@centos7 data]#exec 8<>/data/hosts [root@centos7 data]#ll /proc/$$/fd total 0 lrwx——. 1 root root 64 Mar 30 14:22 0 ->…

    2018-04-05
欧美性久久久久