AWS正式把KVM投入使用 你需要知道些什么?

責(zé)任編輯:editor004

作者:楊賽

2017-11-10 11:23:41

摘自:INFOQ

如之前InfoQ中文站所報(bào)道,AWS在11月6日推出新的實(shí)例類(lèi)型C5,其中采用了新的虛擬化引擎——一款A(yù)WS自家定制的KVM。

AWS在11月6日推出新的實(shí)例類(lèi)型C5,其中采用了新的虛擬化引擎——一款A(yù)WS自家定制的KVM。這可能意味著AWS從2006年啟動(dòng)時(shí)就開(kāi)始使用并持續(xù)優(yōu)化至今的Xen技術(shù)棧,將逐漸淡出這一體量龐大的云計(jì)算平臺(tái)。

關(guān)于Xen與KVM

Xen最早是劍橋大學(xué)的一個(gè)研究項(xiàng)目。該項(xiàng)目在2003年以開(kāi)源協(xié)議發(fā)布后,先后經(jīng)歷了XenSource公司、Citrix公司、Linux基金會(huì)等組織的領(lǐng)導(dǎo),其技術(shù)陣營(yíng)包含了Citrix、IBM、Intel、HP、Novel、紅帽、Sun、Oracle、Amazon、AMD、Bromium、CA Technologies、Calxeda、Cisco、Google、三星、以及Verizon等業(yè)界巨頭。

KVM(Kernel-based Virtual Machine,直譯為“基于內(nèi)核的虛擬機(jī)”),最早是以色列初創(chuàng)企業(yè)Qumranet發(fā)布的開(kāi)源項(xiàng)目。該項(xiàng)目在2007年被合并入Linux內(nèi)核代碼——這對(duì)KVM而言是非常重要的一個(gè)節(jié)點(diǎn),該公司則在2008年被紅帽收購(gòu)。KVM技術(shù)差不多到2010年之后進(jìn)入成熟階段,該技術(shù)陣營(yíng)目前包括紅帽、SUSE、Linaro(ARM)、IBM、Intel、Google、Oracle等業(yè)界巨頭,國(guó)內(nèi)的華為、阿里巴巴、騰訊等也均有參與。

在AWS啟動(dòng)的2006年,Xen還是當(dāng)時(shí)最成熟的虛擬化引擎技術(shù)(對(duì)于Linux操作系統(tǒng)而言),而KVM項(xiàng)目還沒(méi)有出現(xiàn)在大家的視野中。因此,AWS在早期技術(shù)選型當(dāng)中采用了Xen,成為其彈性計(jì)算的底層基礎(chǔ)。(此外,2009年啟動(dòng)的阿里云也因?yàn)楫?dāng)時(shí)KVM還不成熟的原因采用了Xen,不過(guò)兩家一直未停止過(guò)對(duì)KVM的關(guān)注與投入,阿里云更是在數(shù)年前就已經(jīng)推出了基于KVM的主機(jī)。另外,2011年啟動(dòng)的Google Cloud從一開(kāi)始就采用了KVM引擎。)

AWS的用戶(hù)需要知道什么?

首先,AWS的用戶(hù)現(xiàn)在已經(jīng)可以將自己跑在C4實(shí)例上的主機(jī)切換到C5,前提是:

現(xiàn)在已經(jīng)推出C5的區(qū)域有US East (Northern Virginia)、US West (Oregon)、EU (Ireland) Regions,目前要用C5的話只能在這三個(gè)區(qū),其他區(qū)還得等等。AMI鏡像的操作系統(tǒng)必須包含ENA和NVMe的驅(qū)動(dòng),因?yàn)镃5的網(wǎng)絡(luò)和存儲(chǔ)功能是在硬件層面實(shí)施的。AWS平臺(tái)上提供的最新版AMI鏡像,包括Amazon Linux、Microsoft Windows (Windows Server 2012 R2 以及 Windows Server 2016)、Ubuntu、RHEL、CentOS、SLES、Debian、FreeBSD,現(xiàn)在都支持。同理,如果你制作自己的AMI,也是一樣的要求。

Reddit網(wǎng)站上已經(jīng)有用戶(hù)在分享自己的切換過(guò)程,感興趣的讀者可以前往查看或提問(wèn)。Jeff Barr也會(huì)在那里回復(fù)一些問(wèn)題。

C5實(shí)例可以選擇的實(shí)例尺寸見(jiàn)下表:

Instance Name vCPUs RAM EBS Bandwidth Network Bandwidth
c5.large 2 4 GiB Up to 2.25 Gbps Up to 10 Gbps
c5.xlarge 4 8 GiB Up to 2.25 Gbps Up to 10 Gbps
c5.2xlarge 8 16 GiB Up to 2.25 Gbps Up to 10 Gbps
c5.4xlarge 16 32 GiB 2.25 Gbps Up to 10 Gbps
c5.9xlarge 36 72 GiB 4.5 Gbps 10 Gbps
c5.18xlarge 72 144 GiB 9 Gbps 25 Gbps

其次,如果你已經(jīng)用上了C5,想用它跑一些機(jī)器學(xué)習(xí)的推斷(inferencing)任務(wù)或者類(lèi)似的計(jì)算任務(wù),可以看一下這個(gè)Intel Math Kernel Library。C5的處理器用的是3.0 GHz Intel Xeon Platinum 8000系列,這款專(zhuān)為EC2做過(guò)優(yōu)化的處理器配合上面那個(gè)數(shù)學(xué)庫(kù)可能會(huì)有很好的性能。

此外,C5還增加了每個(gè)vCPU的內(nèi)存。對(duì)于兼容AVX-512指令集的代碼而言,矢量操作和浮點(diǎn)操作的性能甚至可以翻倍。

切換到C5之后,由于運(yùn)行在新虛擬化引擎上的實(shí)例是通過(guò)NVMe接口從EBS卷上啟動(dòng)的,而運(yùn)行在Xen上的實(shí)例是從一個(gè)模擬IDE硬盤(pán)上啟動(dòng)、再切換到Xen的半虛擬塊存儲(chǔ)驅(qū)動(dòng)上的,所以雖然操作系統(tǒng)(OS)能夠識(shí)別自己正運(yùn)行在哪個(gè)虛擬化引擎上,但如果軟件本身假設(shè)底層的虛擬化引擎是Xen并依賴(lài)于該假設(shè),則可能會(huì)引發(fā)一些問(wèn)題。

但總體來(lái)說(shuō),AWS表示只要OS層面能夠支持ENA網(wǎng)絡(luò)和NVMe存儲(chǔ),則大部分軟件都能正常工作。AWS還表示,其他的EC2功能并不會(huì)受到影響。

如果你是AWS EC2 API的重度用戶(hù),擔(dān)心這次虛擬化引擎的變更會(huì)對(duì)API造成什么變化,則不用擔(dān)心了:AWS在其FAQs頁(yè)面中表示其對(duì)外公開(kāi)的API完全不會(huì)因?yàn)橐胄碌奶摂M化引擎而有任何改變。

KVM在EC2上的正式啟用對(duì)AWS意味著什么?

作為計(jì)算資源服務(wù)的提供方,提升性能、降低成本是永恒的話題。

Xen最初設(shè)計(jì)時(shí),x86架構(gòu)尚未引入虛擬化擴(kuò)展功能,所以Xen為了實(shí)現(xiàn)Linux系統(tǒng)的虛擬化,就把Linux內(nèi)核給改了——這就相當(dāng)于在之后的十幾年里,Xen一直維護(hù)著一套自己的Linux內(nèi)核版本,所以上游Linux內(nèi)核社區(qū)的很多新的好東西,它要費(fèi)一番功夫才能移植進(jìn)來(lái),這就造成了很大的維護(hù)成本。

而另一方面,因?yàn)镵VM項(xiàng)目是合并在Linux內(nèi)核代碼中的,維護(hù)起來(lái)就非常容易。Linux內(nèi)核上游社區(qū)的研發(fā)勢(shì)能是非常大的,在這種情況下,KVM的發(fā)展速度迅猛,在穩(wěn)定性、性能方面的提升很快趕超了Xen,受到很多技術(shù)人與企業(yè)的青睞。

EC2是AWS的基石,虛擬化引擎又是EC2的基石。由于AWS是一套構(gòu)建多年的、龐大而復(fù)雜的系統(tǒng),很多功能會(huì)對(duì)Xen有所依賴(lài),要讓這套系統(tǒng)同時(shí)穩(wěn)定的支持Xen與KVM,是一項(xiàng)非常復(fù)雜的工作。所以C5的推出,意味著AWS這套系統(tǒng)已經(jīng)脫離了對(duì)Xen的完全依賴(lài)。

對(duì)AWS而言,基于KVM的系統(tǒng)要比基于Xen的系統(tǒng)的維護(hù)成本更低,這是一方面。

另一方面,可能也與性能有關(guān)。按AWS首席布道師Jeff Barr在博客中所說(shuō),C5在性?xún)r(jià)比方面相比C4提升了25%,針對(duì)有些任務(wù)甚至可以達(dá)到50%——這是針對(duì)用戶(hù)而言。要知道對(duì)于AWS今天這樣的體量,哪怕是1%的節(jié)省都是巨大的;如果有25%這樣比例的性?xún)r(jià)比提升,則絕對(duì)是勢(shì)在必行,無(wú)論花費(fèi)多大代價(jià)也要上。當(dāng)然這其中的性能提升有多少是來(lái)自新的硬件,有多少是來(lái)自KVM,這就不一定了。

此外,AWS首先在“計(jì)算密集型實(shí)例”(compute-intensive)上正式采用KVM,而不是從通用型、內(nèi)存密集型等其他類(lèi)型上開(kāi)始,可能是因?yàn)榭紤]到計(jì)算密集型業(yè)務(wù)的I/O操作較少,比較獨(dú)立,耦合性比較小,因此更容易替換的原因。

這次改變對(duì)于業(yè)界有什么影響?

從市場(chǎng)占有率的角度來(lái)看,就是Xen的最后一個(gè)大體量的用戶(hù)對(duì)Xen說(shuō),以后我不再需要你了。

如果說(shuō)以前還有業(yè)界傳言說(shuō)AWS在Xen上投入太過(guò)巨大、依賴(lài)太重,所以AWS將一直支持Xen的話,那么現(xiàn)在這個(gè)傳言已經(jīng)宣告終結(jié)。畢竟,如果連AWS都以實(shí)際行動(dòng)表示切換到KVM的收益大于成本了,那么那些體量更小的Xen用戶(hù)還能對(duì)Xen有什么更多的期待呢?

所以對(duì)于未來(lái)的市場(chǎng)而言,這次改變也許象征著Xen的使命已經(jīng)結(jié)束了。對(duì)于過(guò)去的市場(chǎng)而言,Xen的使命就是讓那些仍然跑在Xen上的業(yè)務(wù)們能夠繼續(xù)平穩(wěn)運(yùn)行。不過(guò)這里面還有一個(gè)變數(shù)就是Unikernel,那就是另一個(gè)話題了。

從上游社區(qū)的角度,影響可能不大,因?yàn)锳mazon一直不是個(gè)活躍的開(kāi)源社區(qū)參與者。即使作為最大的Xen用戶(hù)那么多年,Amazon對(duì)Xen上游社區(qū)的代碼貢獻(xiàn)數(shù)量卻是屈指可數(shù)。所以對(duì)于KVM項(xiàng)目,可能我們未來(lái)也不大會(huì)看到很多來(lái)自Amazon的代碼貢獻(xiàn)。

從技術(shù)發(fā)展的角度,這是個(gè)大趨勢(shì)下技術(shù)更新?lián)Q代的必然——也許從KVM被合并到Linux內(nèi)核代碼的那時(shí)起就已經(jīng)種下了種子吧。

總結(jié)

關(guān)于AWS此次擁抱KVM的C5發(fā)布,目前公開(kāi)的信息就總結(jié)到此。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)