內(nèi)容提要:
2021年,距離第一個EC2實例上線已經(jīng)過了十五年了,漫長的發(fā)展歷程中,自然會有很多EC2實例都是基于老服務器來打造的,隨著時間的推移,老服務器總是要淘汰的,硬件變了實例也不得不變,但不是所有用戶都想遷移到新實例的。
為了不強迫用戶進行遷移,亞馬遜云科技(以下簡稱AWS)讓Nitro進行了許多騷操作,用新服務器繼續(xù)提供舊的實例類型,讓用戶能繼續(xù)用一直就在用的實例。AWS的這一做法讓用戶用的更放心,少給用戶找麻煩,又掃除了一個用戶上云的擔憂點。
正文:
很多人都經(jīng)歷過計劃報廢。
PC時代經(jīng)典的“安迪比爾定律”逼著你不斷買新電腦,裝新的微軟操作系統(tǒng)。智能手機時代,過保的iOS用戶深刻體會到了老系統(tǒng)有多香,新系統(tǒng)有多坑。
總之一句話,老的產(chǎn)品服務終將淘汰。
2021年,云計算也發(fā)展了十幾年了,云計算的更多問題也浮出水面,雖然說云服務的用戶不用管理服務器硬件了,但硬件總是要有人管的,硬件會老化,會出問題,很難想象一臺十幾年工齡的服務器還能矜矜業(yè)業(yè)正常工作。
于是問題就出現(xiàn)了,用戶難免會擔心,那些基于老服務器打造的實例能否繼續(xù)提供服務呢?因為有些應用運行的好好的,就不想做任何改動。
云廠商也在頭疼,運行這些老硬件越來越麻煩,新員工看見這些快趕上自己年齡的硬件也頭疼,萬一壞了,想買個配件都搜不到了,多麻煩?。?/p>
在正式介紹前,介紹個有趣的人:
下圖中的這個男人是一位杰出工程師,他有一艘名為“Dirona”的船,船上住著他的妻子和一只貓,這艘船偶爾會停在AWS西雅圖總部的港口,他被成為“工程師中的海賊王”,他就是AWS副總裁,杰出工程師James Hamilton。
圖片來自AWS視頻博客
James Hamilton有一個博客,博客的內(nèi)容有兩大類,一類是關(guān)于船的事兒,一類是關(guān)于AWS產(chǎn)品技術(shù)的事兒,AWS官方知乎博文里說James Hamilton是少數(shù)獲許在博客上發(fā)表自己重大想法的人之一。
作為AWS的一位傳奇人物,James Hamilton總給人神龍見首不見尾的感覺,最近,這個許久不更新的博客介紹了關(guān)于Nitro的新動向,關(guān)于Nitro為什么以及如何支持舊實例的。
從EC2誕生到Nitro出現(xiàn)
2006年8月25日,AWS第一個EC2實例開啟了公測,最開始這個服務連個名字都沒有,后來起了個名字叫“m1.Small”,熟悉云主機的朋友都知道,這一命名方式被借鑒的很廣泛了。
首批用戶能以每小時10美分的價格使用相當于1.7G主頻的至強處理器,1.75GB內(nèi)存以及160GB硬盤盒250Mb/s帶寬的主機,筆者本人對于這個價格沒有太大的直觀感受。
技術(shù)實現(xiàn)上,因為當時比較流行的虛擬化方案就是Xen,所以,該主機使用了Xen虛擬化技術(shù)來提供實例服務,后來的十多年里,由于用的人越來越多,EC2又發(fā)布了27個基于Xen技術(shù)的實例。
早期的實例用的都是用虛擬化或者仿真設備把硬件抽象成實例,當時用的也很好,但是隨著存儲和網(wǎng)絡的不斷發(fā)展,就需要預留更多CPU核心來模擬這些設備,當規(guī)模比較小的時候問題不大,當規(guī)模大到一定程度,問題就變得非常明顯了,性能損耗的太多了。
2017年,AWS Nitro System發(fā)布,這是AWS虛擬化技術(shù)的領銜主演,Nitro可以把許多負載從CPU offload到專用設備上,提供高性能的網(wǎng)絡、存儲以及安全功能。
C5實例是第一個完全支持Nitro的EC2實例,隨后,AWS又陸續(xù)推出了45個采用Nitro的實例,這些實例的存儲和網(wǎng)絡性能大幅提升,安全性也大大提升。
博文中提到,AWS有120多萬個用戶仍在使用基于Xen技術(shù)的實例,AWS并沒有強行讓用戶進行遷移,還是挺尊重用戶意愿的,用戶對于采用Xen技術(shù)的實例性能表現(xiàn)很滿意,也不愿意升級操作系統(tǒng)來支持各種新技術(shù)。
眾所周知,早期的AMI不支持NVMe,也無法與現(xiàn)在的Nitro系統(tǒng)兼容,眼看著運維管理這些舊設備和舊系統(tǒng)越來越麻煩,EC2團隊通過改造Nitro來支持Xen實例,老用戶看到這里是不是應該鼓掌?
Nitro提供了解決之道,但這么做挑戰(zhàn)有很多:
半虛擬化(PV)設備——Xen實例通過半虛擬化設備來訪問網(wǎng)絡和存儲,然而,Nitro并不支持這些設備,Nitro需要在不影響當前工作負載的情況下,添加對這些PV設備的支持。
Hypervisor接口——半虛擬化(PV)設備是依賴于Hypervisor接口的軟件結(jié)構(gòu),這些接口可通過超級調(diào)用(hypercalls),或者guset系統(tǒng)和hypervsior之間共享的內(nèi)存進行訪問。所以,Nitro要想支持這些PV設備,就必須提供這些接口。
要想做到這點,就必須讓Xen實例和Nitro Hypervisior之間的交互與Xen實例和Xen Hypervisior之間的交互行為保持完全一致,讓guest系統(tǒng)看不到兩者之間有任何區(qū)別。幸運的是,Linux社區(qū)已經(jīng)完成了這方面的相關(guān)工作,使得Nitro能提供支持。
虛擬硬件環(huán)境—為了確保舊的AMI能正常工作,Nitro還必須得模仿舊硬件,而硬件仿真功能正是Nitro的關(guān)鍵功能之一。
與此同時,通過修改Nitro的Hypervisior來為實例提供一個與舊硬件完全相同的硬件環(huán)境。如果在Nitro上啟動舊實例,則CPU指令集、寄存器、網(wǎng)絡和I/O設備以及消息傳遞接口不會有任何差異。
硬件加速器–某些實例類型(如G2、G3、P2、P3和F1)使用了GPU或FPGA加速器。這些加速器沒有支持虛擬化,所以就很難進行模擬。于是,Nitro不支持這些含有GPU和FPGA加速器的舊實例類型。
新老用戶都能享受到
從2022年開始,新的M1、M2、M3、C1、C3、R3、I2和T1實例的用戶將用上Nitro技術(shù),現(xiàn)有的實例也將遷移到Nitro支持的實例上,用戶不會看到兩者之間的區(qū)別,所有工作負載都將繼續(xù)像以前一樣運行。
Xen on Nitro可以讓用戶繼續(xù)在老實例上運行舊的工作負載,而不用在實例之間做遷移。對于AWS來說,本來直接淘汰這些實例會更容易,但AWS因為怕為用戶帶來額外負擔選擇了一條更麻煩的道路。
亞馬遜云科技顧凡:創(chuàng)新的空間還大的很
亞馬遜云科技大中華區(qū)產(chǎn)品部總經(jīng)理顧凡在媒體溝通會上介紹稱,“從15年前首次推出Amazon EC2服務以來,亞馬遜云科技一直在快速地創(chuàng)新,如今提供超過475種不同的計算實例類型,遠超過其它任何云服務提供商。”
顧凡也表示,云計算創(chuàng)新的空間還大得很,亞馬遜云科技還想進一步幫助客戶在不同的負載下提供最佳性價比。為此,亞馬遜云科技必須更加深入地思考和重新定義計算實例,而這一切離不開芯片。
顧凡在演講中列舉了幾個自研芯片,第一個提到的就是Nitro產(chǎn)品線,如今Nitro已經(jīng)發(fā)展到了第四代,此外還提到了機器學習訓練和推理芯片,以及關(guān)注度極高的Graviton。