今天來研究一個有意思的話題,虛擬化(virtualization)。
開始前,先閑扯一下,最近一個詞比較火,“元宇宙(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”。啥是虛擬呢,通俗點說就是假的,不是物理上真實的。
虛擬化技術是一種廣泛使用的技術,比如在云計算業務,數據中心業務中。為什么處理器需要虛擬化,或者說虛擬化能帶來什么好處呢?
首先,在處理器設計和應用里,要提一個概念,就是“虛擬機(Virtual Machine)”。關于虛擬機,玩過Vmware的同學可能有一定了解。與虛擬機相對應的就是“真實機(Real Machine)”,有時也叫物理機。物理機好理解,比如我們買一臺電腦做家用機,那么這臺電腦的所有物理設備,比如硬盤,網卡等等,都是歸你自己使用。如果是服務器機,這種獨占的使用方式無疑是效率非常低下的。把服務器的巨大資源劃分成塊分配使用,或者是按照時間片輪流使用,就可以大大提高效率了。這就需要使用到虛擬化技術了。虛擬化技術就是要讓應用程序運行在虛擬機上,就像運行在真實機上一樣。歸納一下,虛擬化技術能帶來的好處有以下幾點:
隔離:即允許在相互不信任的計算環境之間共享物理系統。例如,兩個競爭對手可以在一個數據中心共享同一臺物理機器,而不能夠訪問彼此的數據。
高可用性:虛擬化技術允許在物理機器之間無縫且透明地遷移工作負載,通常用于將工作負載從可能需要維護和更換的故障硬件平臺遷移出去。
工作負載平衡:盡可能多地使用每個硬件平臺,這可以通過虛擬機的遷移來實現,或者通過在物理機上共同托管適當的工作負載來實現。
沙箱:虛擬機可用于為可能干擾其運行的機器其他部分的應用程序提供沙箱。在虛擬機中運行這些應用程序可以防止應用程序的錯誤或惡意部分干擾物理計算機上的其他應用程序或數據。
當然,虛擬化技術帶來的好處不止這些,此處就不一一列舉了。
如何把虛擬機和真實的物理設備隔絕呢,或者說如何實現虛擬化。聰明的行業前輩們想到了一個方法,在hardware之上加一層hypervisor。對于hypervisor,百度百科是這樣定義的,“一種運行在基礎物理服務器和操作系統之間的中間軟件層,可允許多個操作系統和應用共享硬件。也可叫做VMM(Virtual Machine Monitor ),即虛擬機監視器。Hypervisor是一種在虛擬環境中的“元”操作系統。他們可以訪問服務器上包括磁盤和內存在內的所有物理設備。Hypervisor不但協調著這些硬件資源的訪問,也同時在各個虛擬機之間施加防護。當服務器啟動并執行Hypervisor時,它會加載所有虛擬機客戶端的操作系統同時會分配給每一臺虛擬機適量的內存,CPU,網絡和磁盤”。
有了hypervisor,我們再來看一下系統如何構成。先以汽車芯片為例,如下圖。Hypervisor負責協調,控制所有的硬件資源。在hypervisor之上,把汽車行駛和安全相關的部分隔離成一部分,運行封閉操作系統(Closed OS);把與娛樂等相關的部分隔離成另一部分,運行開放操作系統(Open OS)。相對應的應用程序(APP)運行在各自操作系統之上。這樣就可以起到一個很好的隔離作用,用戶自己安裝的APP不會影響到汽車行駛安全。
圖1 汽車芯片中的虛擬化示意圖
再來看一個服務器的例子,如下圖。一臺服務器可能擁有很多的處理器,硬盤等。通過hypervisor,可以分配給不同的虛擬機以不同的硬件資源。比如對于VM1,可能要運行一些安全等級高的任務,這時就可以把Hardware0的資源只分配給VM1,其它的虛擬機不能訪問。對于Hardware1,同時分配給VM0,VM1,VM2等多個虛擬機,充分利用其資源。
圖2 服務器芯片中的虛擬化示意圖
Hypervisor分為兩大類,一類是standalone hypervisor,或者叫type1;另一類是hosted hypervisor,也叫type2。
圖3 type 1 hypervisor(standalone)
圖4 type 2 hypervisor(hosted)
兩者的區別是,type1的hypervisor是直接運行在硬件之上的,而type2的hypervisor是運行在Host OS之中的。type1相當于一個輕量級的操作系統,直接跑在宿主機的硬件上;而type2相當于一個應用軟件,運行在宿主機的操作系統之中。兩者相同的是,客戶操作系統(Guest OS)都是運行在hypervisor之上的。type1的hypervisor通常在性能上比Type2表現的更好,更為安全。type2相較于type1還有一個缺點就是延遲太高,這是因為hypervisor與硬件之間的交流還需要穿過操作系統這一層。Hosted hypervisor最多的應用場景是作為client hypervisor運行在終端用戶的電腦上,而這種場景下一般是不需要關心延遲問題的。大多數企業一般選擇type1類型的hypervisor用于數據中心的計算需求。
在Arm平臺上,type1 hypervisor比較典型的代表是Xen。Xen是由劍橋大學計算機實驗室開發的一個開源項目。是一個直接運行在計算機硬件之上的用以替代操作系統的軟件層,它能夠在計算機硬件上并發的運行多個Guest OS。Xen支持x86、x86-64、Power PC和Arm多種處理器。2014年03月11日,Xen發布4.4版本,更好地支持Arm架構。Xen是半虛擬化(Para-Virtualization)技術的典型代表。半虛擬化技術,主要解決的就是如何捕獲非特權指令的敏感指令。x86體系是導致半虛擬化技術產生的重要原因,因為x86體系結構中,部分敏感指令不是特權指令,這些指令不能自動產生異常,因此想要系統正常運行就必須要捕獲這些指令。于是Xen采用修改Guest OS內核的方法對這些有缺陷的指令進行替換。根據直覺,既然有半虛擬化,就一定有全虛擬化,對不對?沒錯,你很機智,確實有“完全虛擬化”,又稱“硬件虛擬化(Hardware Virtual Machine)”。簡單說,兩者的區別就是在半虛擬化中,Guest OS知道自己運行在Hypervisor上而不是硬件上,同時也可以識別出其他運行在相同環境中的客戶虛擬機。在全虛擬化中,Guest OS任務自己運行在硬件上,無法感知其他Guest OS。
在Arm平臺上,type2 hypervisor比較典型的代表是KVM。KVM(Kernel-basedVirtual Machine)是一個基于Linux環境的開源虛擬化解決方案,最早由以色列Qumranet公司開發,并于2007年2月被集成到Linux 2.6.20內核中,成為內核的一部分。與VMware ESX/ESXi、微軟Hyper-V和Xen等虛擬化產品不同,KVM的思想是在Linux內核的基礎上添加虛擬機管理模塊,重用Linux內核中已經完善的進程調度、內存管理、IO管理等代碼,使之成為一個可以支持運行虛擬機的Hypervisor。
圖5 Xen和KVM對比示意圖
對于hypervisor感興趣的同學可以上網去搜搜,一大堆的文章,在此就不過多介紹了(其實我也是一知半解,哈哈)。我們更關心的是,芯片要支持虛擬化,我們要做哪些工作。
審核編輯:湯梓紅
-
處理器
+關注
關注
68文章
19436瀏覽量
231306 -
操作系統
+關注
關注
37文章
6899瀏覽量
123803 -
虛擬機
+關注
關注
1文章
949瀏覽量
28465 -
VMware
+關注
關注
1文章
298瀏覽量
21782 -
元宇宙
+關注
關注
13文章
1396瀏覽量
11579
原文標題:Arm系列--虛擬化(一)
文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
WAN中的虛擬化
簡要分析AArch64的虛擬化
ARM系列虛擬化資料分享
探討一下ARM處理器平臺的虛擬化
深入了解AArch64虛擬化
虛擬化和云計算之間的關系
ARM對虛擬化下設備直通的支持
![ARM對<b class='flag-5'>虛擬</b><b class='flag-5'>化</b>下設備直通的支持](https://file.elecfans.com/web2/M00/15/FE/poYBAGFP21SAWupzAAAQRUE3SF8464.png)
評論