服務(wù)器虛擬化技術(shù)要追述到IBM大型機(jī)的虛擬化 z/VM,在z系列大型機(jī)(非虛擬化操作系統(tǒng)是z/OS)上實現(xiàn)服務(wù)器虛擬化。基于z/VM可以運(yùn)行上百個虛擬機(jī)。后來在Power上的KVM技術(shù)是PowerKVM;以及AIX虛擬化PowerVM,支持vSCSI和NPIV兩種技術(shù)(虛擬出系統(tǒng)叫VIOS)。今天的內(nèi)容覆蓋了CPU虛擬化、內(nèi)存虛擬化、Intel硬件輔助技術(shù)、IO虛擬化和GPU虛擬化等,技術(shù)深度科普文章;請老司機(jī)們讓車,忽略今天的內(nèi)容。
很多讀者可能認(rèn)為服務(wù)器虛擬化技術(shù)遭到了容器技術(shù)的沖擊,可能已經(jīng)過時了,事實上在很多場景下,虛擬化技術(shù)并非容器所能夠替代的。所以作為要踏入云計算領(lǐng)域的初學(xué)者們,還是有必要深入了解服務(wù)器虛擬化。下面我們看看虛擬化發(fā)展歷程和外在因素和推動力。
分區(qū)技術(shù)使得虛擬化層為多個虛擬機(jī)劃分服務(wù)器資源的能力;使您能夠在一臺服務(wù)器上運(yùn)行多個應(yīng)用程序,每個操作系統(tǒng)只能看到虛擬化層為其提供的虛擬硬件。
虛擬機(jī)隔離讓虛擬機(jī)是互相隔離,一個虛擬機(jī)的崩潰或故障(例如,操作系統(tǒng)故障、應(yīng)用程序崩潰、驅(qū)動程序故障等等)不會影響同一服務(wù)器上的其它虛擬機(jī)。
封裝意味著將整個虛擬機(jī)(硬件配置、BIOS 配置、內(nèi)存狀態(tài)、磁盤狀態(tài)、CPU 狀態(tài))儲存在獨(dú)立于物理硬件的一小組文件中。這樣,您只需復(fù)制幾個文件就可以隨時隨地根據(jù)需要復(fù)制、保存和移動虛擬機(jī)。
CPU虛擬化發(fā)展
服務(wù)器虛擬化按照虛擬化程度可分為全虛擬化、半虛擬化、硬件輔助虛擬化。
CPU虛擬化的條件和技術(shù)難點,CPU本身有不同運(yùn)行級別,這些級別對應(yīng)不同權(quán)限。虛擬機(jī)執(zhí)行到這些敏感指令的時候,很有可能出現(xiàn)錯誤,將會影響到整個機(jī)器的穩(wěn)定,所以不允許VM直接執(zhí)行。那就需要虛擬化平臺解決這個問題。
全虛擬化: VMM在軟件堆棧中的位置是傳統(tǒng)意義上操作系統(tǒng)所處的位置,而操作系統(tǒng)的位置是傳統(tǒng)意義上應(yīng)用程序所處的位置。每個Guest OS對特殊指令訪問通信需要進(jìn)行二進(jìn)制轉(zhuǎn)換,以便提供到物理資源(如處理器、內(nèi)存、存儲、顯卡和網(wǎng)卡等)的接口,模擬硬件環(huán)境。
半虛擬化: Guest OS的部分代碼被改變,從而使Guest OS會將和特權(quán)指令相關(guān)的操作都轉(zhuǎn)換為發(fā)給VMM的Hypercall(超級調(diào)用),由VMM繼續(xù)進(jìn)行處理并返回結(jié)果。
硬件輔助虛擬化: 引入新的指令和運(yùn)行模式,使VMM和Guest OS分別運(yùn)行在不同模式(ROOT模式和非ROOT模式)下,且Guest OS運(yùn)行在Ring 0下運(yùn)行。使得Guest OS的核心指令可以直接下達(dá)到計算機(jī)系統(tǒng)硬件執(zhí)行,而不需要經(jīng)過VMM。