03.03 雲計算與虛擬化技術核心是什麼?

我們知道雲計算平臺上面的雲主機實際上都是虛擬機,但我們感覺不出來,用起來和一臺真實的服務器沒什麼區別,這都要歸功於虛擬化技術(Virtualization)。可以說虛擬化技術是實現雲計算基礎架構層面(IaaS)的核心技術。那麼這種虛擬化技術究竟是怎麼回事?

雲計算所使用的虛擬化技術,其實並不是一項新技術。1998年成立的VMWare(威睿)公司就是做虛擬機軟件的,後來被數據存儲技術公司EMC(易安信)收購了,再後來EMC又被Dell收購了。

我們先不談VMware公司的歷史,重點說一下他們的虛擬機軟件:VMware Workstation。這個軟件允許多個x86虛擬機同時被創建和運行。每個虛擬機實例可以運行其自己的客戶機操作系統(Guest OS),如Windows、Linux、BSD等。說白了就是,VMware Workstation允許一臺真實的計算機同時運行好幾個操作系統。

從底層操作系統來看,每個虛擬機都是一個用戶進程;從虛擬機中的的Guest OS來看,自己擁有整個計算機。

一、虛擬機的類型

虛擬機軟件解決了一個關鍵的技術問題:就是如何讓Guest OS認為自己正運行在一個真實的計算機上。

服務器虛擬化有兩種常見的類型

1、寄居架構(Hosted Architecture)

雲計算與虛擬化技術核心是什麼?

寄居架構

作為應用安裝在OS之上

基於現有操作系統

兼容性好

性能較差

功能單一

2、裸金屬架構(Bare Metal Architecture)

雲計算與虛擬化技術核心是什麼?

裸金屬

直接安裝在硬件之上,本身就是OS

基於裸機(Bare Metal)

硬件兼容性要求高

性能好

有許多高級功能。

二、多個操作系統虛擬機如何管理?

在沒有VMM的時候,系統中有兩種內存地址:虛擬地址(virtual address)和物理地址(physical address)。從虛擬地址到物理地址的轉換有兩種方式。方式一:在TLB(translate lookside buffer,硬件實現)查找。方式二:在頁表(page table)中查找,找到之後把結果放到TLB中去。系統會先嚐試方式一,要是找不到(TLB miss),就用方式二。

雲計算與虛擬化技術核心是什麼?

在有了VMM之後,系統中有三種內存地址:虛擬地址(virtual address),物理地址(physical address)和機器地址(machine address)。機器地址才是真正與內存條上的地址一一對應的。物理地址只是操作系統認為的物理地址。

雲計算與虛擬化技術核心是什麼?

當操作系統試著要使用特權指令來完成一個虛擬地址到物理地址的轉換時(TLB miss),VMM就介入了(VMM監視著所有對特權寄存器的操作)。VMM會先使用操作系統內的代碼來先完成虛擬地址到物理地址的轉化(因為VMM並不知道這個映射關係)。然後,操作系統認為自己已經完成了轉化,嘗試去更新TLB(特權操作)。這個時候,VMM會介入,用一個叫個pmap的映射表找到物理地址對應的機器地址,用機器地址替換掉物理地址,然後把TLB更新為虛擬地址到機器地址的映射。之後,所有對這個虛擬地址的訪問都會被轉換為對相應機器地址的訪問。(注意,MIPS用的是software-reloaded TLB,x86用的是hardware-reloaded TLB)

多個VM之間是怎麼分享資源的?或者說,1GB內存怎麼當2GB用?

我們知道,每一個虛擬機都要佔用大量的內存空間。在內存有限的情況下,怎麼在一臺機器運行更多的虛擬機?幸運的是,不用的虛擬機之間在內存中數據可能會完全一致(比如,系統文件在內存中的緩存)。如要我們可以只在內存中保留一份數據,我們就行節省很多空間。Disco使用虛擬IO設備和虛擬網絡設備來節省內存空間。

雲計算與虛擬化技術核心是什麼?

虛擬IO設備:當兩個虛擬機從同一個磁盤上讀同一個文件時,VMM會intercept DMA,然後就會發現這兩個VM在使用同樣的數據。這份數據只需要在機器內存裡保存一份,然後修改pmap,使得兩個VM的物理地址指向同一個機器地址就可以了。當任何一個VM更新這份數據,VMM會給它一份新的拷貝,原來的那份不做更改(copy on write機制)。

虛擬網絡設備:當使用NFS從VM1向VM2複製文件時,文件並沒有被真正地複製。虛擬網絡設備會更新VM2上的pmap,使之指向在內存中的文件,使得VM2上的操作系統認為自己已經有了這個文件。後來,VMWare還有用hash來找相同的內存頁然後再共享的技術。


分享到:


相關文章: