編者按:跟一些行業(yè)內朋友聊天,大家經常提到裸金屬機的概念,實際上指的是物理機。與我理解的,如AWS等云廠商提到的,裸金屬(Bare Metal)機,其實不是一回事。
那什么是裸金屬機?以及物理機、虛擬機及裸金屬機的優(yōu)勢劣勢、區(qū)別和聯系到底是什么?今天這篇文章,我們一起探討。(注:本文提到的物理機、虛擬機和裸金屬機,均指的是公有云場景下的相應云服務器。)
1 物理機的優(yōu)勢和劣勢
物理機,顧名思義,是把物理的服務器完全交付給客戶。物理機唯一的優(yōu)勢在于,所有的資源完全交付給客戶。算力服務提供商不占用此服務器的硬件計算資源。
物理機的劣勢,主要總結如下:
資源利用率低,成本高。沒有資源共享,沒有資源充分利用,資源浪費嚴重。多租戶場景,需要實現租戶之間的系統(tǒng)隔離;由于整臺服務器都交付給了客戶,因此隔離工作需要在外部交換機或其他主機上實現;額外的資源消耗成本較高,并且安全性較低。
2 虛擬機的優(yōu)勢和劣勢
虛擬機,是公有云最常見的產品形態(tài),沒有之一。通過虛擬化技術,實現基于宿主機(Host)的虛擬機器,為客戶提供更靈活更低成本的云主機服務。大體上,物理機的劣勢,就是虛擬機的優(yōu)勢;反過來,物理機的優(yōu)勢,也即虛擬機的劣勢。
虛擬(云)機的優(yōu)勢主要總結如下:
- 主機可控。虛擬機在宿主機側都有完整的管理監(jiān)控,以及網絡、存儲等I/O后臺設備模擬和工作任務處理。整個虛擬機的運行情況處于可控狀態(tài),可以實時為客戶虛擬機提供可能的服務,比如硬件出現問題的時候實時熱遷移。支持高可用。如果服務器出現故障,運行于服務器的業(yè)務會自動熱遷移到其他運行正常的服務器,業(yè)務客戶對服務器硬件的故障無感。支持資源彈性??蛻粼浦鳈C,可以支持從1-N個彈性資源的選擇,并且在主機創(chuàng)建之后仍可以對主機資源進行擴縮容。更低成本。通過虛擬化實現硬件資源的共享,通過自定義不同資源配比實現盡可能最高的資源利用率低,從而極致的均攤硬件成本,降低客戶開銷。此外,租戶隔離不需要額外硬件配套,虛擬網絡交換機在服務器本地,不額外消耗其他的硬件資源。
而虛擬機的劣勢,則主要是性能的問題。虛擬機性能的額外損耗主要來源于兩點:
- 虛擬化的損耗。虛擬化分為完全軟件虛擬化、類虛擬化(也稱之為半虛擬化)和完全硬件虛擬化。軟件虛擬化CPU資源消耗較大,類虛擬化次之,完全硬件虛擬化幾乎不需要額外的CPU消耗。目前,主流的CPU芯片都支持CPU處理器和內存的完全硬件虛擬化,網絡和存儲等I/O仍然是CPU軟件虛擬化或類虛擬化。網絡和存儲兩個主要I/O的后臺工作任務的額外資源消耗。
(注:為了簡化問題,這里僅涉及CPU,沒有涉及GPU等業(yè)務加速處理器,下同。)
3 強強聯合,物理機和虛擬機的優(yōu)勢合并
既然物理機和虛擬機都不完美,都存在這樣或那樣的問題。那么,能不能把兩者的優(yōu)勢結合起來?使得物理機像虛擬機一樣功能強大;同樣的,虛擬機也能像物理機一樣,沒有額外的資源消耗,實現裸機級別的性能。答案是肯定的。
3.1 方案一,物理機實現虛擬機的強大能力,即真正的裸金屬機
虛擬機的優(yōu)勢,如資源彈性、高可用等,主要是虛擬化系統(tǒng)提供的。要想物理機也實現這樣的能力,則需要物理機也“支持”虛擬化。虛擬化系統(tǒng)主要分為兩層:宿主機(Host)側和客戶機側(Guest VM)。通過DPU,可以實現虛擬化系統(tǒng)宿主機側所有任務的完全卸載。在傳統(tǒng)虛擬機模式下,這部分工作是在CPU中完成,而在裸金屬機的模式下,這部分工作卸載到了DPU中,并把性能敏感的任務進行了加速優(yōu)化。
3.2 方案二,虛擬機實現物理機般極致的性能
前面我們分析過,虛擬機的性能損耗主要來自于非硬件虛擬化的CPU資源消耗,以及網絡、存儲兩個主要I/O的后臺工作任務(網絡主要是VPC處理,存儲主要存儲虛擬化映射)的CPU資源消耗。
通過DPU,可以實現整個宿主機側計算任務的卸載,這樣就可以實現:
- I/O的完全硬件虛擬化(也可以理解為I/O模擬任務的卸載)。虛擬出來多個邏輯的硬件設備,直通到虛擬機中。這樣,VM所在的Guest主機,實現所有計算機資源,即CPU處理器、內存和I/O設備,的完全硬件虛擬化(CPU核內存的硬件虛擬化由CPU芯片支持,I/O設備的硬件虛擬化由CPU和DPU共同支持)。實現完全接近物理裸機的性能。同時,網絡和存儲等工作負載實現從CPU到DPU的卸載和加速。在CPU中完全沒有了這些“額外”的資源消耗,CPU完全交付給業(yè)務客戶。
需要注意的是,在此種方案下,在CPU側仍存在Hypervisor。這個Hypervisor比較輕量,主要是實現虛擬機的創(chuàng)建、銷毀和遷移等操作。Hypervisor幾乎不干擾虛擬機的穩(wěn)定運行,也就幾乎不會從Guest Mode切換到Host Mode,也就沒有了額外的CPU資源消耗,從而實現虛擬機“獨占”CPU。
4 更進一步,虛擬機和裸金屬機的統(tǒng)一
既然可以實現物理機像虛擬機一樣功能強大,虛擬機像物理機一樣性能極致,那么接下來就會有一個新的問題:站在客戶的視角,為什么要區(qū)分虛擬機和物理機?兩者不可以統(tǒng)一嗎?答案同樣是肯定的。
系統(tǒng)可以自由的在虛擬機和裸金屬機之間切換:
- 創(chuàng)建后的虛擬機,如果發(fā)現資源不夠用,就可以在不改變系統(tǒng)環(huán)境的情況下,持續(xù)擴容,最終變成裸金屬機。例如,在一臺具有50核CPU的機器上,最開始申請了20個核的虛擬機。當發(fā)現資源不夠用的時候,可以把此臺主機擴容,擴容到30核、40核,知道50核。當達到50核的時候,就獨占了此主機,也即從虛擬機形態(tài)變成了裸金屬形態(tài)。但使用主機的客戶,對此無感。同樣的,裸金屬的客戶,在發(fā)現此主機業(yè)務跑不滿的情況下,可以縮容,變成虛擬機。用同樣的例子,客戶申請了50個核的主機,此時為裸金屬機,客戶縮容到了40核,此刻給客戶呈現的主機形態(tài)仍然沒有變化。而技術上的來說,已經從裸金屬機變更成了虛擬機。
統(tǒng)一虛擬機和裸金屬機,可以實現客戶業(yè)務使用和技術實現之間的隔離:從技術角度,實現底層實現和上層呈現之間的隔離,便利客戶使用;l對客戶來說,客戶需要的是一個性能強勁、功能強大的云主機,用戶不需要關心到底是物理機或虛擬機。
5 總結
物理機和虛擬機是兩套獨立的體系,獨立的運維,物理機實例和虛擬機實例之間無法切換。這和我們一直講的算力資源池化是相悖的。
因此,除了優(yōu)化性能和優(yōu)化功能之外,還需要統(tǒng)一平臺,統(tǒng)一資源,簡化運維,簡化用戶的使用。這樣,我們可以簡單劃分云主機發(fā)展的三個階段:
- 第一階段,傳統(tǒng)的物理機和虛擬機階段。這個階段,各自獨立,物理機存在高可用等方面的問題,虛擬機存在性能方面的問題。第二階段,增強優(yōu)化階段。物理機具備了高可用等傳統(tǒng)虛擬機所具備的能力,虛擬機則優(yōu)化了性能,實現了極致接近硬件實際的性能。第三階段,物理機虛擬機統(tǒng)一形態(tài)階段。給客戶提供統(tǒng)一的云主機資源,在業(yè)務層次,不再區(qū)分虛擬機和物理機。
五種類型主機的特性總結,見下面表格。