今天來(lái)研究一個(gè)有意思的話(huà)題,虛擬化(virtualization)。
開(kāi)始前,先閑扯一下,最近一個(gè)詞比較火,“元宇宙(Metaverse)”。在維基百科里面是這么定義元宇宙的,“The Metaverse is a collective virtual shared space, created by the convergence of virtually enhanced physical reality and physically persistent virtual space, including the sum of all virtual worlds, augmented reality, and the Internet”。啥是虛擬呢,通俗點(diǎn)說(shuō)就是假的,不是物理上真實(shí)的。
虛擬化技術(shù)是一種廣泛使用的技術(shù),比如在云計(jì)算業(yè)務(wù),數(shù)據(jù)中心業(yè)務(wù)中。為什么處理器需要虛擬化,或者說(shuō)虛擬化能帶來(lái)什么好處呢?
首先,在處理器設(shè)計(jì)和應(yīng)用里,要提一個(gè)概念,就是“虛擬機(jī)(Virtual Machine)”。關(guān)于虛擬機(jī),玩過(guò)Vmware的同學(xué)可能有一定了解。與虛擬機(jī)相對(duì)應(yīng)的就是“真實(shí)機(jī)(Real Machine)”,有時(shí)也叫物理機(jī)。物理機(jī)好理解,比如我們買(mǎi)一臺(tái)電腦做家用機(jī),那么這臺(tái)電腦的所有物理設(shè)備,比如硬盤(pán),網(wǎng)卡等等,都是歸你自己使用。如果是服務(wù)器機(jī),這種獨(dú)占的使用方式無(wú)疑是效率非常低下的。把服務(wù)器的巨大資源劃分成塊分配使用,或者是按照時(shí)間片輪流使用,就可以大大提高效率了。這就需要使用到虛擬化技術(shù)了。虛擬化技術(shù)就是要讓?xiě)?yīng)用程序運(yùn)行在虛擬機(jī)上,就像運(yùn)行在真實(shí)機(jī)上一樣。歸納一下,虛擬化技術(shù)能帶來(lái)的好處有以下幾點(diǎn):
隔離:即允許在相互不信任的計(jì)算環(huán)境之間共享物理系統(tǒng)。例如,兩個(gè)競(jìng)爭(zhēng)對(duì)手可以在一個(gè)數(shù)據(jù)中心共享同一臺(tái)物理機(jī)器,而不能夠訪問(wèn)彼此的數(shù)據(jù)。
高可用性:虛擬化技術(shù)允許在物理機(jī)器之間無(wú)縫且透明地遷移工作負(fù)載,通常用于將工作負(fù)載從可能需要維護(hù)和更換的故障硬件平臺(tái)遷移出去。
工作負(fù)載平衡:盡可能多地使用每個(gè)硬件平臺(tái),這可以通過(guò)虛擬機(jī)的遷移來(lái)實(shí)現(xiàn),或者通過(guò)在物理機(jī)上共同托管適當(dāng)?shù)墓ぷ髫?fù)載來(lái)實(shí)現(xiàn)。
沙箱:虛擬機(jī)可用于為可能干擾其運(yùn)行的機(jī)器其他部分的應(yīng)用程序提供沙箱。在虛擬機(jī)中運(yùn)行這些應(yīng)用程序可以防止應(yīng)用程序的錯(cuò)誤或惡意部分干擾物理計(jì)算機(jī)上的其他應(yīng)用程序或數(shù)據(jù)。
當(dāng)然,虛擬化技術(shù)帶來(lái)的好處不止這些,此處就不一一列舉了。
如何把虛擬機(jī)和真實(shí)的物理設(shè)備隔絕呢,或者說(shuō)如何實(shí)現(xiàn)虛擬化。聰明的行業(yè)前輩們想到了一個(gè)方法,在hardware之上加一層hypervisor。對(duì)于hypervisor,百度百科是這樣定義的,“一種運(yùn)行在基礎(chǔ)物理服務(wù)器和操作系統(tǒng)之間的中間軟件層,可允許多個(gè)操作系統(tǒng)和應(yīng)用共享硬件。也可叫做VMM(Virtual Machine Monitor ),即虛擬機(jī)監(jiān)視器。Hypervisor是一種在虛擬環(huán)境中的“元”操作系統(tǒng)。他們可以訪問(wèn)服務(wù)器上包括磁盤(pán)和內(nèi)存在內(nèi)的所有物理設(shè)備。Hypervisor不但協(xié)調(diào)著這些硬件資源的訪問(wèn),也同時(shí)在各個(gè)虛擬機(jī)之間施加防護(hù)。當(dāng)服務(wù)器啟動(dòng)并執(zhí)行Hypervisor時(shí),它會(huì)加載所有虛擬機(jī)客戶(hù)端的操作系統(tǒng)同時(shí)會(huì)分配給每一臺(tái)虛擬機(jī)適量的內(nèi)存,CPU,網(wǎng)絡(luò)和磁盤(pán)”。
有了hypervisor,我們?cè)賮?lái)看一下系統(tǒng)如何構(gòu)成。先以汽車(chē)芯片為例,如下圖。Hypervisor負(fù)責(zé)協(xié)調(diào),控制所有的硬件資源。在hypervisor之上,把汽車(chē)行駛和安全相關(guān)的部分隔離成一部分,運(yùn)行封閉操作系統(tǒng)(Closed OS);把與娛樂(lè)等相關(guān)的部分隔離成另一部分,運(yùn)行開(kāi)放操作系統(tǒng)(Open OS)。相對(duì)應(yīng)的應(yīng)用程序(APP)運(yùn)行在各自操作系統(tǒng)之上。這樣就可以起到一個(gè)很好的隔離作用,用戶(hù)自己安裝的APP不會(huì)影響到汽車(chē)行駛安全。
圖1 汽車(chē)芯片中的虛擬化示意圖
再來(lái)看一個(gè)服務(wù)器的例子,如下圖。一臺(tái)服務(wù)器可能擁有很多的處理器,硬盤(pán)等。通過(guò)hypervisor,可以分配給不同的虛擬機(jī)以不同的硬件資源。比如對(duì)于VM1,可能要運(yùn)行一些安全等級(jí)高的任務(wù),這時(shí)就可以把Hardware0的資源只分配給VM1,其它的虛擬機(jī)不能訪問(wèn)。對(duì)于Hardware1,同時(shí)分配給VM0,VM1,VM2等多個(gè)虛擬機(jī),充分利用其資源。
圖2 服務(wù)器芯片中的虛擬化示意圖
Hypervisor分為兩大類(lèi),一類(lèi)是standalone hypervisor,或者叫type1;另一類(lèi)是hosted hypervisor,也叫type2。
圖3 type 1 hypervisor(standalone)
圖4 type 2 hypervisor(hosted)
兩者的區(qū)別是,type1的hypervisor是直接運(yùn)行在硬件之上的,而type2的hypervisor是運(yùn)行在Host OS之中的。type1相當(dāng)于一個(gè)輕量級(jí)的操作系統(tǒng),直接跑在宿主機(jī)的硬件上;而type2相當(dāng)于一個(gè)應(yīng)用軟件,運(yùn)行在宿主機(jī)的操作系統(tǒng)之中。兩者相同的是,客戶(hù)操作系統(tǒng)(Guest OS)都是運(yùn)行在hypervisor之上的。type1的hypervisor通常在性能上比Type2表現(xiàn)的更好,更為安全。type2相較于type1還有一個(gè)缺點(diǎn)就是延遲太高,這是因?yàn)閔ypervisor與硬件之間的交流還需要穿過(guò)操作系統(tǒng)這一層。Hosted hypervisor最多的應(yīng)用場(chǎng)景是作為client hypervisor運(yùn)行在終端用戶(hù)的電腦上,而這種場(chǎng)景下一般是不需要關(guān)心延遲問(wèn)題的。大多數(shù)企業(yè)一般選擇type1類(lèi)型的hypervisor用于數(shù)據(jù)中心的計(jì)算需求。
在Arm平臺(tái)上,type1 hypervisor比較典型的代表是Xen。Xen是由劍橋大學(xué)計(jì)算機(jī)實(shí)驗(yàn)室開(kāi)發(fā)的一個(gè)開(kāi)源項(xiàng)目。是一個(gè)直接運(yùn)行在計(jì)算機(jī)硬件之上的用以替代操作系統(tǒng)的軟件層,它能夠在計(jì)算機(jī)硬件上并發(fā)的運(yùn)行多個(gè)Guest OS。Xen支持x86、x86-64、Power PC和Arm多種處理器。2014年03月11日,Xen發(fā)布4.4版本,更好地支持Arm架構(gòu)。Xen是半虛擬化(Para-Virtualization)技術(shù)的典型代表。半虛擬化技術(shù),主要解決的就是如何捕獲非特權(quán)指令的敏感指令。x86體系是導(dǎo)致半虛擬化技術(shù)產(chǎn)生的重要原因,因?yàn)閤86體系結(jié)構(gòu)中,部分敏感指令不是特權(quán)指令,這些指令不能自動(dòng)產(chǎn)生異常,因此想要系統(tǒng)正常運(yùn)行就必須要捕獲這些指令。于是Xen采用修改Guest OS內(nèi)核的方法對(duì)這些有缺陷的指令進(jìn)行替換。根據(jù)直覺(jué),既然有半虛擬化,就一定有全虛擬化,對(duì)不對(duì)?沒(méi)錯(cuò),你很機(jī)智,確實(shí)有“完全虛擬化”,又稱(chēng)“硬件虛擬化(Hardware Virtual Machine)”。簡(jiǎn)單說(shuō),兩者的區(qū)別就是在半虛擬化中,Guest OS知道自己運(yùn)行在Hypervisor上而不是硬件上,同時(shí)也可以識(shí)別出其他運(yùn)行在相同環(huán)境中的客戶(hù)虛擬機(jī)。在全虛擬化中,Guest OS任務(wù)自己運(yùn)行在硬件上,無(wú)法感知其他Guest OS。
在Arm平臺(tái)上,type2 hypervisor比較典型的代表是KVM。KVM(Kernel-basedVirtual Machine)是一個(gè)基于Linux環(huán)境的開(kāi)源虛擬化解決方案,最早由以色列Qumranet公司開(kāi)發(fā),并于2007年2月被集成到Linux 2.6.20內(nèi)核中,成為內(nèi)核的一部分。與VMware ESX/ESXi、微軟Hyper-V和Xen等虛擬化產(chǎn)品不同,KVM的思想是在Linux內(nèi)核的基礎(chǔ)上添加虛擬機(jī)管理模塊,重用Linux內(nèi)核中已經(jīng)完善的進(jìn)程調(diào)度、內(nèi)存管理、IO管理等代碼,使之成為一個(gè)可以支持運(yùn)行虛擬機(jī)的Hypervisor。
圖5 Xen和KVM對(duì)比示意圖
對(duì)于hypervisor感興趣的同學(xué)可以上網(wǎng)去搜搜,一大堆的文章,在此就不過(guò)多介紹了(其實(shí)我也是一知半解,哈哈)。我們更關(guān)心的是,芯片要支持虛擬化,我們要做哪些工作。
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19259瀏覽量
229648 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6801瀏覽量
123282 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
914瀏覽量
28160 -
VMware
+關(guān)注
關(guān)注
1文章
297瀏覽量
21624 -
元宇宙
+關(guān)注
關(guān)注
13文章
1393瀏覽量
11399
原文標(biāo)題:Arm系列--虛擬化(一)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論