自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

NFV關(guān)鍵技術(shù):計(jì)算虛擬化概述

開發(fā) 開發(fā)工具 數(shù)據(jù)中心
所謂計(jì)算虛擬化,從狹義角度可理解為對單個物理服務(wù)器的虛擬化,主要包括對服務(wù)器上的CPU、內(nèi)存、I/O設(shè)備進(jìn)行虛擬化,目的就是實(shí)現(xiàn)多個虛擬機(jī)能各自獨(dú)立、相互隔離地運(yùn)行于一個服務(wù)器之上。從廣義角度還可延伸到云資源池下,各類資源池組網(wǎng)場景下的CPU、內(nèi)存、I/O設(shè)備等資源進(jìn)行整合、抽象和虛擬化。

Labs 導(dǎo)讀

所謂計(jì)算虛擬化,從狹義角度可理解為對單個物理服務(wù)器的虛擬化,主要包括對服務(wù)器上的CPU、內(nèi)存、I/O設(shè)備進(jìn)行虛擬化,目的就是實(shí)現(xiàn)多個虛擬機(jī)能各自獨(dú)立、相互隔離地運(yùn)行于一個服務(wù)器之上。從廣義角度還可延伸到云資源池下,各類資源池組網(wǎng)場景下的CPU、內(nèi)存、I/O設(shè)備等資源進(jìn)行整合、抽象和虛擬化。

1、服務(wù)器虛擬化平臺概念回顧

在上一篇文章《虛擬化基礎(chǔ)》中,我們介紹虛擬化基礎(chǔ)的一些基本概念,這里我們按照服務(wù)器平臺虛擬化后的一個分層結(jié)構(gòu)來簡單回顧下。如下:

一個完整的服務(wù)器虛擬化平臺從下到上包括以下幾個部分:

  • 底層物理資源:包括網(wǎng)卡、CPU、內(nèi)存、存儲設(shè)備等硬件資源,一般將包含物理資源的物理機(jī)稱為宿主機(jī)(Host)。
  • 虛擬機(jī)監(jiān)控器(Virtual Machine Monitor,VMM):VMM是位于虛擬機(jī)與底層硬件設(shè)備之間的虛擬層,直接運(yùn)行于硬件設(shè)備之上,負(fù)責(zé)對硬件資源進(jìn)行抽象,為上層虛擬機(jī)提供運(yùn)行環(huán)境所需資源,并使每個虛擬機(jī)都能夠互不干擾、相互獨(dú)立地運(yùn)行于同一個系統(tǒng)中。
  • 抽象化的虛擬機(jī)硬件:即虛擬層呈現(xiàn)的虛擬化的硬件設(shè)備。虛擬機(jī)能夠發(fā)現(xiàn)哪種硬件設(shè)施,完全由VMM決定。虛擬設(shè)備可以是模擬的真實(shí)設(shè)備,也可以是現(xiàn)實(shí)中并不存在的虛擬設(shè)備,如VMware的vmxnet網(wǎng)卡。
  • 虛擬機(jī):相對于底層提物理機(jī),也稱為客戶機(jī)(Guest)。運(yùn)行在其上的操作系統(tǒng)則稱為客戶機(jī)操作系統(tǒng)(Guest OS)。每個虛擬機(jī)操作系統(tǒng)都擁有自己的虛擬硬件,并在一個獨(dú)立的虛擬環(huán)境中執(zhí)行。通過VMM的隔離機(jī)制,每個虛擬機(jī)都認(rèn)為自己作為一個獨(dú)立的系統(tǒng)在運(yùn)行。

同時,在上一篇文章《虛擬化基礎(chǔ)》中,我們提到過Hypervisor就是VMM。其實(shí),這個說法并不準(zhǔn)確,至少在VMware的虛擬化解決方案中不準(zhǔn)確,在VMware的ESX產(chǎn)品架構(gòu)中,VMM和Hypervisor還是有一定區(qū)別的,如下圖所示。

Hypervisor是位于虛擬機(jī)和底層物理硬件之間的虛擬層,包括boot loader、x86 平臺硬件的抽象層,以及內(nèi)存與CPU調(diào)度器,負(fù)責(zé)對運(yùn)行在其上的多個虛擬機(jī)進(jìn)行資源調(diào)度。而VMM則是與上層的虛機(jī)一一對應(yīng)的進(jìn)程,負(fù)責(zé)對指令集、內(nèi)存、中斷與基本的I/O設(shè)備進(jìn)行虛擬化。當(dāng)運(yùn)行一個虛擬機(jī)時,Hypervisor中的vmkernel會裝載VMM,虛擬機(jī)直接運(yùn)行于VMM之上,并通過VMM的接口與Hypervisor進(jìn)行通信。而在KVM和Xen架構(gòu)中,虛擬層都稱為Hypervisor,也就是VMM=Hypervisor。

判斷一個VMM能否有效確保服務(wù)器系統(tǒng)實(shí)現(xiàn)虛擬化功能,必須具備以下三個基本特征:

  • 等價性(Equivalence Property):一個運(yùn)行于VMM控制之下的程序(虛擬機(jī)),除了時序和資源可用性可能不一致外,其行為應(yīng)該與相同條件下運(yùn)行在物理服務(wù)器上的行為一致。
  • 資源可控性(Resource Control Property):VMM必須能夠完全控制虛擬化的資源。
  • 效率性(Efficiency Property):除了特權(quán)指令,絕大部分機(jī)器指令都可以直接由硬件執(zhí)行,而無需VMM干涉控制。

上述三個基本特征也是服務(wù)器虛擬化實(shí)現(xiàn)方案的指導(dǎo)思想。

2、x86平臺虛擬化面臨的問題與挑戰(zhàn)

基于x86的操作系統(tǒng)在一開始就被設(shè)計(jì)為能夠直接運(yùn)行在裸機(jī)硬件環(huán)境之上,所以自然擁有整個機(jī)器硬件的控制權(quán)限。為確保操作系統(tǒng)能夠安全地操作底層硬件,x86平臺使用了特權(quán)模式和用戶模式的概念對內(nèi)核程序與用戶應(yīng)用程序進(jìn)行隔離。在這個模型下,CPU提供了4個特權(quán)級別,分別是Ring0、1、2和3。如下圖所示:

Ring 0是最高特權(quán)級別,擁有對內(nèi)存和硬件的直接訪問控制權(quán)。Ring 1、2和3權(quán)限依次降低, 無法執(zhí)行操作訥河系統(tǒng)級別的指令集合。相應(yīng)的,運(yùn)行于Ring 0的指令稱為“特權(quán)指令”;運(yùn)行于其他級別的稱為“非特權(quán)指令”。常見的操作系統(tǒng)如Linux與Windows都運(yùn)行于Ring 0,而用戶級應(yīng)用程序運(yùn)行于Ring 3。如果低特權(quán)級別的程序執(zhí)行了特權(quán)指令,會引起“ 陷入”(Trap)內(nèi)核態(tài),并拋出一個異常。

當(dāng)這種分層隔離機(jī)制應(yīng)用于虛擬化平臺,為了滿足VMM的“資源可控” 特征,VMM必須處于Ring 0級別控制所有的硬件資源,并且執(zhí)行最高特權(quán)系統(tǒng)調(diào)用。而虛擬機(jī)操作系統(tǒng)Guest OS則要被降級運(yùn)行在Ring 1級別,故Guest OS在執(zhí)行特權(quán)指令時都會引起”陷入“。如果VMM能夠正常捕獲異常,模擬Guest OS發(fā)出的指令并執(zhí)行,就達(dá)到了目的。這就是IBM的Power系列所采用的特權(quán)解除和陷入模擬的機(jī)制,支持這種特性的指令集合通常被認(rèn)為是“可虛擬化的”。

但是...但是...但是...x86平臺的指令集是不虛擬化的。為什么這么說?首先我們來看下x86平臺指令集分類,x86平臺的指令集大致分為以下4類:

  • 訪問或修改機(jī)器狀態(tài)的指令。
  • 訪問或修改敏感寄存器或存儲單元的指令, 比如訪問時鐘寄存器和中斷寄存器。
  • 訪問存儲保護(hù)系統(tǒng)或內(nèi)存、地址分配系統(tǒng)的指令(段頁之類)。
  • 所有I/O指令。

其中,1~4在x86平臺都屬于敏感指令,第1、4類指令屬于敏感指令中的特權(quán)指令,由操作系統(tǒng)內(nèi)核執(zhí)行,Guest OS在執(zhí)行兩類指令時,因?yàn)椴惶幱赗ing 0級別,所以會陷入,并拋出異常,這個異常會被VMM捕獲,然后模擬Gust OS去執(zhí)行,并將執(zhí)行結(jié)果返回給Guest OS。到此為止,一切都OK。但是,第2、3類指令屬于非特權(quán)指令,可以由應(yīng)用程序調(diào)用,也就是可以在Ring 3級別執(zhí)行,并調(diào)用Guest OS內(nèi)核進(jìn)程來完成。當(dāng)應(yīng)用程序調(diào)用這些指令時,由于要修改內(nèi)存和內(nèi)部寄存器,這些狀態(tài)修改需要由Guest OS完成,而Guse OS此時運(yùn)行在Ring 1級別,雖然也會發(fā)生陷入,但是不會拋出異常,這樣VMM就捕獲不到,也就無法模擬完成。因此,當(dāng)Guest OS執(zhí)行這些指令就會導(dǎo)致虛擬機(jī)狀態(tài)異常,甚至影響服務(wù)器的狀態(tài)。在x86平臺下,這類指令共有19個,我自己稱之為x86平臺敏感指令中的邊界指令。

就是因?yàn)閤86平臺指令集有上述缺陷,所以為了計(jì)算虛擬化技術(shù)在x86平臺應(yīng)用,各大虛擬化廠商推出了五花八門的虛擬化技術(shù),其目的都是圍繞“如何捕獲模擬這19條邊界指令”這一命題來設(shè)計(jì)。在很長一段時間,都是通過軟件的方式來解決這個問題,其中包括無需修改內(nèi)核的全虛擬化與需要修改內(nèi)核的半虛擬化。盡管半虛擬化要求修改Guest OS內(nèi)核的方式在一定程度上并不滿足“ 等價性”要求,但是在性能上卻明顯優(yōu)于全虛擬化。直到2005年Intel與AMD公司分別推出了VT-d與AMD-V,能夠在芯片級別支持全虛擬化時,虛擬化技術(shù)才得到徹底完善,這就是現(xiàn)在稱之為的硬件輔助虛擬化技術(shù)。

3、x86平臺計(jì)算虛擬化解決方案

3.1 全虛擬化

全虛擬化(Full Virtualization)與半虛擬化(Para- Virtualization)的劃分,是相對于是否修改Guest OS而言的。如下圖所示,全虛擬化通過一層能夠完整模擬物理硬件環(huán)境的虛擬軟件,使得Guest OS與底層物理硬件徹底解耦。因此,Guest OS無需任何修改,虛擬化的環(huán)境對其完全透明,也就是說在全虛方案中,虛擬機(jī)感知不到自己處于虛擬化環(huán)境中,認(rèn)為自己一直運(yùn)行在物理硬件上。如下圖所示:

在實(shí)現(xiàn)上,通常是結(jié)合特權(quán)指令的二進(jìn)制翻譯機(jī)制與一般指令的直接執(zhí)行的方式。具體來說, 對于Guest OS發(fā)出的特權(quán)指令和邊界指令,VMM會進(jìn)行實(shí)時翻譯,并緩存結(jié)果(目的是提高虛擬化性能),而對于一般級別的指令,則無需VMM干涉,可以直接在硬件上執(zhí)行。異常-捕獲-模擬的過程如下圖所示:

由于虛擬化環(huán)境對Guest OS是完全透明的,全虛擬化模式對于虛擬機(jī)的遷移以及可移植性是最佳解決方案,虛擬機(jī)可以無縫地從虛擬環(huán)境遷移到物理環(huán)境中。但是,軟件模擬實(shí)現(xiàn)的全虛擬化無疑會增加VMM的上下文切換,因?yàn)檫@種方案實(shí)現(xiàn)的虛擬機(jī)性能不如半虛擬化方案。VMware的ESX系列產(chǎn)品 和Workstations系列產(chǎn)品是全虛擬化技術(shù)的典型產(chǎn)品。

3.2 半虛擬化如前所述,x86平臺上一直存在一些Ring 3級別可以執(zhí)行的邊界指令,盡管全虛擬化模式通過實(shí)時譯這些特殊指令解決了這一問題,但是實(shí)現(xiàn)開銷較大,性能并不如在實(shí)際物理機(jī)上運(yùn)行。為了改善性能,半虛擬化技術(shù)應(yīng)運(yùn)而生, “Para-Virtualization” 可理解為通過某種輔助的方式實(shí)現(xiàn)虛擬化。半虛擬化的解決方案如下圖所示。

半虛擬化在Guest OS和虛擬層之間增加了一個特殊指令的過渡模塊,通過修改Guest OS內(nèi)核,將執(zhí)行特權(quán)指令和邊界指令替換為對虛擬層進(jìn)行hypercall的調(diào)用方式來達(dá)到目的。同時,虛擬層也對內(nèi)存管理、中斷處理、時間同步提供了hypercall的調(diào)用接口。Hypercall調(diào)用過程如下圖所示:

通過這種方式,虛擬機(jī)運(yùn)行的性能得以顯著提升。但是,對于某些無法修改內(nèi)核的操作系統(tǒng),比如:Windows,則不能使其運(yùn)行于半虛擬化環(huán)境中。而且,由于需要修改Guest OS內(nèi)核,無法保證虛擬機(jī)在物理環(huán)境與虛擬環(huán)境之間的透明切換。開源項(xiàng)目Xen和華為6.3版本之前的虛擬化解決方案Fusion Compute就是通過修改Linux內(nèi)核以及提供I/O虛擬化操作的Domain 0的特殊虛擬機(jī),使得運(yùn)行于虛擬化環(huán)境上的虛擬機(jī)性能可以接近運(yùn)行于物理環(huán)境的性能,屬于半虛擬化技術(shù)方案的典型產(chǎn)品。但是,隨著業(yè)務(wù)規(guī)模的增大,特殊虛機(jī)Domain 0是這種解決方案擴(kuò)展性和性能方面的瓶頸。

3.3 硬件輔助虛擬化所謂“解鈴還須系鈴人”,針對敏感指令引發(fā)的一系列虛擬化問題,處理器硬件廠商最終給出了自己的解決方案。2005年Intel與AMD公司都效法IBM大型機(jī)虛擬化技術(shù)分別推出VT-x和AMD-V技術(shù)。如下圖所示:

第一代VT-x與AMD-V都試圖通過定義新的運(yùn)行模式,使Guest OS恢復(fù)到Ring 0,而讓VMM運(yùn)行在比Ring 0低的級別(可以理解為Ring -1)。比如:Intel公司的VT-x解決方案中,運(yùn)行于非根模式下的Guest OS可以像在非虛擬化平臺下一樣運(yùn)行于Ring 0級別,無論是Ring 0發(fā)出的特權(quán)指令還是Ring 3發(fā)出的敏感指令都會被陷入到根模式的虛擬層。VT-x解決方案具體如下圖所示:

VT-x與AMD-V推出之后,完美解決解決x86平臺虛擬化的缺陷,且提升了性能,所以各個虛擬化廠商均快速開發(fā)出對應(yīng)的產(chǎn)品版本,用于支持這種技術(shù)。比如:KVM-x86、Xen 3.0與VMware ESX 3.0之后的虛擬化產(chǎn)品。隨后Intel和AMD在第二代硬件輔助虛擬化技術(shù)中均推出了針對I/O的硬件輔助虛擬化技術(shù)VT-d和IOMMU。

總結(jié):x86平臺下的三種虛擬化技術(shù),都是圍繞x86在虛擬化上的一些缺陷產(chǎn)生的。下圖對三種虛擬化技術(shù)進(jìn)行了比較。

從圖中可以看出,全虛擬化與半虛擬化的Guest OS的特權(quán)級別都被壓縮在Ring 1中,而硬件虛擬化則將Guest OS恢復(fù)到了Ring 0級別。在半虛擬化中,Guest OS的內(nèi)核經(jīng)過修改,所有敏感指令和特權(quán)指令都以Hypercall的方式進(jìn)行調(diào)用,而在全虛擬化與硬件虛擬化中,則無需對Guest OS進(jìn)行修改。全虛擬化中對于特權(quán)指令和敏感指令采用了動態(tài)二進(jìn)制翻譯的方式,而硬件虛擬化由于在芯片中增加了根模式的支持,并修改了敏感指令的語義,所有特權(quán)指令與敏感指令都能夠自動陷入到根模式的VMM中。

【本文為51CTO專欄作者“移動Labs”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:未麗燕 來源: 移動Labs
相關(guān)推薦

2022-04-12 14:11:27

存儲虛擬化軟件定義服務(wù)器

2021-12-21 15:46:16

NFV內(nèi)存虛擬化計(jì)算虛擬化

2021-05-17 14:57:22

NFV虛擬化數(shù)據(jù)

2021-12-21 15:37:46

NFV虛擬化IO虛擬化

2019-10-30 15:35:08

虛擬化云計(jì)算封裝

2019-01-09 13:20:51

2022-05-09 15:08:56

存儲廠商NFV領(lǐng)域華為

2011-12-28 10:44:02

PowerVM虛擬化

2013-04-28 14:34:02

服務(wù)器虛擬化

2022-04-15 15:03:42

云計(jì)算容器Linux

2021-08-20 11:12:31

NFVX86架構(gòu)地址

2021-08-20 11:22:05

X86架構(gòu)NFV虛擬化

2018-07-09 22:37:19

2010-02-04 09:51:53

虛擬交換機(jī)

2015-09-09 17:25:06

2025-02-17 09:00:00

DeepSeek人工智能AI

2023-09-20 20:11:07

Java

2010-03-16 16:56:45

云計(jì)算

2011-03-21 15:29:46

2010-03-30 16:58:55

云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號