本周二(12月5日),在北京朝陽悠唐皇冠假日酒店召開的2017中國存儲峰會上,張廣彬和曾智強代表企事錄技術(shù)服務(wù)公司發(fā)表了題為《網(wǎng)絡(luò)存儲“相對論》的演講,分享了最近測試高性能存儲和網(wǎng)絡(luò)的一些實踐。以下為演講實錄。

連續(xù)好幾年在存儲峰會的技術(shù)論壇上開場,以前講的都比較概念趨勢性一些。今天主要講的不是概念,而是我們最近在一些新技術(shù)上的探索和實踐。這一場將會由我和我的同事曾智強共同來完成,我先講前面的這一部分。

我們企事錄服務(wù)公司,主要致力于新技術(shù)、新產(chǎn)品的市場教育,手段通常是分析和測試。分析方面我和曾智強在幾年前寫過技術(shù)分析報告《數(shù)據(jù)中心2013》,率先提出“硬件重構(gòu)+軟件定義”的理念,并據(jù)此展開對前沿技術(shù)的解析,這幾年行業(yè)確實在向著這個方向前進,我們也在這個方向上去踐行理念,特別是指導(dǎo)我們的測試工作。這里列出了企事錄與幾家業(yè)內(nèi)知名企業(yè)合作的聯(lián)合實驗室,本次的NVMeoF測試就主要在和青云合作的混合云實驗室進行。

這個“相對論”當(dāng)然只是取一下(愛因斯坦)相對論字面上的意思,網(wǎng)絡(luò)和存儲一定程度上是相對的概念,是可以互相替代的。十多年前聽華中科技大學(xué)謝長生教授打過一個比喻——信息的傳輸,可以在空間維度,和時間維度上進行:比如烽火臺,把敵人入侵的信號通過烽火臺傳遞到很遠的地方,這是在空間維度上的傳輸;另外一種在時間維度上的傳輸,比如刻一個碑,幾百年甚至幾千年以后,這個碑沒有損壞,大家還是可以看到記錄下來的信息。前者就是網(wǎng)絡(luò),后者就是存儲,我覺得這個很有啟發(fā)。

兩者結(jié)合起來,就是網(wǎng)絡(luò)存儲?當(dāng)然,我們也可以更抽象的想一想,譬如1968年上映的科幻電影《2001太空漫游》,里面有一個宇宙高智慧結(jié)晶的代表,就是黑石,有好事者演算過這個黑石可以存儲多少數(shù)據(jù),而它還能夠自由移動,穿越時空,兼具網(wǎng)絡(luò)和存儲的特性。

十多年前的網(wǎng)絡(luò)存儲,跟現(xiàn)在不一樣,專有的存儲硬件架構(gòu),專有的存儲網(wǎng)絡(luò)(Fibre Channel)。但從使用的角度,通過網(wǎng)絡(luò)去訪問,其實跟訪問本地的硬盤,看起來沒什么區(qū)別。現(xiàn)在我們講軟件定義存儲(SDS)和超融合(HCI),軟件定義存儲的主流是分布式的,在通用服務(wù)器上,分布到多個節(jié)點來運行,用服務(wù)器集群來提供服務(wù)。存儲和計算分離的場景,兩個集群之間的網(wǎng)絡(luò)顯然是可見的,使用和部署的時候可以明顯感受到。而超融合,把計算和存儲放到了一起,計算看起來訪問的是本地存儲資源,但實際上也可能是通過網(wǎng)絡(luò)跨節(jié)點訪問,它的網(wǎng)絡(luò)不是很明顯,但實際上各個節(jié)點之間,也是通過網(wǎng)絡(luò)才成為一個整體。

超融合是這幾年企業(yè)級市場上很火的一個概念,我在去年的存儲峰會上也講過《超融合架構(gòu)的“逆流”?》(存儲峰會演講實錄)。超融合當(dāng)然有很多的優(yōu)點,最大的優(yōu)點就是部署簡單,這對大型企業(yè),和中小型企業(yè)都是適用的。但是,超融合架構(gòu)更多的適用于中小規(guī)模的部署。具體的例子如微軟的Azure Stack,微軟混合云藍圖中私有云的部分,與Cisco、華為、聯(lián)想、Dell、HPE的服務(wù)器硬件,整合成軟硬件一體的解決方案交付。一個集群最少4個節(jié)點,最多可以達到12個節(jié)點,下一步16個節(jié)點,這是典型的超融合部署。

超融合部署的另外一個優(yōu)勢是,利用計算和存儲一體的特點,可以把計算節(jié)點經(jīng)常訪問的數(shù)據(jù),就近放在所在的節(jié)點本地,盡量避免跨網(wǎng)絡(luò)訪問。這在網(wǎng)絡(luò)狀況不太好的時候,有很好的效果。如圖所示,超融合市場的開創(chuàng)者Nutanix就提供這個功能。

公有云上也有類似的例子,譬如阿里云的第一代塊存儲是2010年做的,當(dāng)時阿里云尚處于起步階段,用的網(wǎng)絡(luò)還是千兆以太網(wǎng),就利用超融合的部署方式,來降低網(wǎng)絡(luò)性能的不利影響。

我們后面也會提到,現(xiàn)在高速的存儲,譬如NVMe和3D XPoint這種低延遲存儲的出現(xiàn),存儲性能大幅提升以后,網(wǎng)絡(luò)性能如果跟不上來的話,可以用類似的數(shù)據(jù)本地化的方法,譬如微軟的S2D(Storage Spaces Direct),或者VMware vSAN,都有計劃加入數(shù)據(jù)本地化的功能。

剛才說到阿里云,實際上超融合架構(gòu)在大型云計算環(huán)境下的一個問題,就是計算和存儲資源緊耦合的方式不夠靈活。譬如阿里云上線了一個集群,可能計算資源很快賣空了,但存儲資源還剩很多,那這就是很不經(jīng)濟的一種做法。所以阿里云從第二代塊存儲技術(shù)開始,就采用了計算和存儲分離的方式,包括到現(xiàn)在的第三代也是采用分離部署的方式。

另一個例子是AWS的EBS。EBS主要為EC2計算實例服務(wù),AWS有很多類型的EC2實例,C開頭的是計算優(yōu)化的實例,前不久推出了最新一代的C5實例。AWS起步比較早,其虛擬化采用的是Xen,但是最新的一代C5轉(zhuǎn)向了KVM。上周的re:Invent 2017大會上,AWS為了介紹C5,把以前幾代實例的計算和存儲架構(gòu)都大致回顧了一下。

這張是C3實例的架構(gòu)圖,左邊是硬件架構(gòu),右邊是軟件架構(gòu),畫出了對應(yīng)的映射關(guān)系。很多IaaS公有云的實例都有本地存儲的選項,本地存儲的問題在于,其就在實例(通常是VM)所在的物理主機上,如果云主機重啟或遷移,本地存儲的數(shù)據(jù)就會丟失。所以本地存儲雖然快,但并不被視為持久化存儲。持久化的塊存儲,于AWS就是EBS(Elastic Block Storage,彈性塊存儲),黃色的虛線框里就是EBS,是一個共享的存儲,通過網(wǎng)絡(luò)訪問。從圖上的架構(gòu)可以看到,存儲和網(wǎng)絡(luò)一樣,通過網(wǎng)絡(luò)來訪問。這就可以看到C3實例在存儲架構(gòu)上的問題:存儲的流量和網(wǎng)絡(luò)的流量,沒有有效的區(qū)隔,所以存儲的性能可能無法保證。

從2013年底到2015年初,過了一年多,AWS升級到了C4實例。黃色虛線框里還是EBS,注意存儲的訪問路徑,已經(jīng)和網(wǎng)絡(luò)區(qū)隔開了,所以C4實例的EBS存儲,性能和QoS有保證。這也說明了網(wǎng)絡(luò)和存儲的一些聯(lián)系:有時候存儲的變化,實際上是網(wǎng)絡(luò)的變化。

這是我畫的一個圖,橫軸是時間線,縱軸是SSD或HDD(硬盤)的大致數(shù)量。可以看到這是一個發(fā)展的曲線,左下角的是已經(jīng)發(fā)生的事情。我們原來為什么會有磁盤陣列?因為硬盤性能太差了,所以要把很多硬盤堆在一起,形成磁盤陣列提供更高的性能(有時是更大的容量)。隨著SSD的逐漸發(fā)展,剛開始用SSD給硬盤當(dāng)緩存,使用服務(wù)器內(nèi)置存儲,SSD加HDD組成緩存或分層的方案,還可以是純SSD(全閃存),就可以滿足應(yīng)用的需求。

由于SSD的加入提高了存儲的性能,服務(wù)器本地的存儲就能滿足所承載應(yīng)用的存儲性能需求,所以我們可以做成超融合的方案。這個黃色的圓圈的意思是,前幾年到未來幾年的這個時間區(qū)域內(nèi),服務(wù)器內(nèi)置存儲可以用超融合的方案,一個服務(wù)器有10幾20幾個硬盤或SSD(SSD+HDD或者全閃)。

但是,隨著NVMe SSD逐漸普及,以及服務(wù)器本身能支持的SSD數(shù)量進一步增加,可能又會往另外一個方向變化:一臺服務(wù)器裝滿了SSD以后,本地的計算能力(運行的應(yīng)用負載)已經(jīng)不能完全發(fā)揮SSD的全部性能,所以又要把SSD放到單獨設(shè)備里面,把存儲獨立出來,供很多主機訪問,還有更高的靈活性。所以往右上角發(fā)展,比如說幾百片閃存放在一起,甚至將來有可能會上千個閃存放在一起。就像這張NVMe over Fabrics(NVMeoF)規(guī)劃的遠景,將來可以支持千個級別的SSD。NVMe over Fabrics現(xiàn)在已經(jīng)走向了一些原型階段,或者是有一些產(chǎn)品出來了。

NVMe over Fabrics要解決的是,計算和存儲分離了以后,距離沒有產(chǎn)生美,帶來的卻是帶寬和延遲上的挑戰(zhàn)。怎么解決這個挑戰(zhàn),接下來的這一部分,有請我們企事錄負責(zé)測試的合伙人曾智強來講一講這方面的情況。

大家好,我是曾智強,我在企事錄主要負責(zé)(新)技術(shù)、產(chǎn)品及解決方案的評估和驗證。閃存的出現(xiàn),確實加大了對存儲網(wǎng)絡(luò)的挑戰(zhàn)。業(yè)內(nèi)已經(jīng)開始著手解決網(wǎng)絡(luò)的問題,比如NVMe over Fabrics,我們也對NVMeoF做了一些探索和嘗試,取得一些成果,今天就給大家分享一下企事錄在NVMe over Fabrics方面獲得的一些實踐經(jīng)驗。

說到NVMe over Fabrics,這是NVMe over Fabrics的一個總體架構(gòu)示意圖。NVMe實際上一個寄存器級的邏輯接口,專為SSD等非易失性存儲開發(fā),數(shù)據(jù)傳輸通常在PCIe之上。所以在NVMe over Fabrics 1.0規(guī)范里面,把NVMe SSD比作是NVMe over PCIe,既然是over在PCIe上面,那是不是也可以over在其他的網(wǎng)絡(luò)上?比如說企業(yè)數(shù)據(jù)中心最常用的Fibre Channel(FC),或者更常見的以太網(wǎng),乃至其他更高速的網(wǎng)絡(luò)上?比如InfiniBand(IB)。InfiniBand和新一代以太網(wǎng)有一個非常好的功能即RDMA(Remote Direct Memory Access,遠程直接內(nèi)存訪問),可以有效降低軟件層導(dǎo)致的延遲。InfiniBand的帶寬一向很高(40Gbps以上),現(xiàn)在以太網(wǎng)的帶寬也很高,比如新一代的25GbE,以及100GbE,而且也支持RDMA功能,比如RoCE(RDMA over Converged Ethernet)或iWARP(internet Wide Area RDMA Protocol)。這不僅能顯著降低延遲,也有助于提升帶寬。

中間紅色部分,就是支持RDMA的軟件堆棧,包括InfiniBand和以太網(wǎng),最右邊粉色部分,實際上就是Fibre Channel。NVMe over PCIe或者NVMe SSD上的訪問規(guī)則是由NVMe規(guī)范來定義的。

NVMeoF實際是基于NVMe 1.2規(guī)范,對協(xié)議層進行了擴展。這張圖就是NVMeoF的架構(gòu),可以看到,其實是在NVMe協(xié)議中的NVMe Transport進行了擴展,用以支持InfiniBand和以太網(wǎng),以及Fibre Channel等等。

從規(guī)范來看,NVMe over Fabrics實際上有兩種模式,第一個是Memory模式,所有的NVMe SSD就是使用這種模式;另外就是Message模式,通過對NVMe命令進行再次封裝,以此實現(xiàn)在其他網(wǎng)絡(luò)上傳輸,如果在Fibre Channel上傳輸?shù)脑捑褪褂胢essage模式。此外,比較例外的就是RDMA上,支持RDMA功能實際上有InfiniBand和以太網(wǎng),而以太網(wǎng)又有RoCE和iWARP兩種。NVMe over Fabrics都是支持的,并且memory模式和message都能用在RDMA上。

從邏輯架構(gòu)上看的話,NVMe over PCIe和NVMe over RDMA上,在軟件開銷上的增加很小,可以近似的認為跨網(wǎng)絡(luò)訪問和本地訪問的延遲幾乎是一樣的。所以如果用RDMA的話,雖然經(jīng)過了網(wǎng)絡(luò),但其延遲可以非常接近于本地的水平。為了驗證NVMe over Fabrics,我們在企事錄和青云聯(lián)合的混合云實驗室里設(shè)計了一個測試方案。

圖上就是測試部署的架構(gòu),圍繞數(shù)據(jù)庫應(yīng)用構(gòu)建的一個典型應(yīng)用場景。之所以選擇數(shù)據(jù)庫應(yīng)用,是因為數(shù)據(jù)庫對延遲的要求比較高,而Oracle數(shù)據(jù)庫也可以被認為是最關(guān)鍵的企業(yè)應(yīng)用之一。最上面的是Oracle數(shù)據(jù)庫服務(wù)器,配備的Intel雙路Xeon Platinum 8180處理器,是Intel新一代(SkyLake)處理器中最頂配的型號,配置了256GB內(nèi)存。這臺服務(wù)器上一共插了3張網(wǎng)卡,其中一張是Mellanox的CX5網(wǎng)卡,這是一張100Gb/s的網(wǎng)卡;另外兩張則是Mellanox的CX3網(wǎng)卡,是10Gb/s的。這三張網(wǎng)卡都支持RDMA功能,也就是RoCE。

Oracle數(shù)據(jù)庫服務(wù)器通過兩臺交換機與最下面的存儲服務(wù)器相連。右邊這臺就是100Gb/s交換機,是Mellanox提供的SN2100;左邊是Mellanox SX1024交換機,是10Gb/s交換機。最下面的是存儲服務(wù)器,采用Intel雙路Xeon Gold 6154處理器,這是一款高主頻的處理器,適合驅(qū)動高性能的NVMe SSD,作為存儲服務(wù)器,也配置了256GB內(nèi)存。與Oracle數(shù)據(jù)庫服務(wù)器一樣,也有一張100Gb/s和兩張10Gb/s的Mellanox網(wǎng)卡。在存儲方面,使用了4個U.2接口的Intel DC P4500SSD,每片SSD的容量是2TB。同時還使用了1片750GB的Intel DC P4800X,這就是傳說中的Optane,采用3D XPoint技術(shù),一種全新介質(zhì)的SSD。

這里要特別感謝一下海天起點公司提供的技術(shù)支持。海天起點是一家專注于提供數(shù)據(jù)庫服務(wù)的公司,在Oracle數(shù)據(jù)庫的運維、優(yōu)化和排錯方面有著非常豐富的經(jīng)驗。之前講過,我們這個測試是以O(shè)racle數(shù)據(jù)庫應(yīng)用來構(gòu)建的,之所以與海天起點合作,也是需要借助他們的經(jīng)驗來驗證Oracle數(shù)據(jù)庫在NVMeoF下的性能表現(xiàn)。同時,他們也非常關(guān)注NVMeoF,也希望跟我們一起探索,所以我們一拍即合,做了這個測試。

下面我們來看一下測試方面的情況。這張圖展示了在不同接口的大致帶寬,比如SATA、10GbE、25GbE、NVMe以及100GbE,我們看到,其帶寬基本是以倍數(shù)增長的。其中有一項是主流NVMe SSD的帶寬,采用PCIe x4通道,實際能達到的帶寬大約在3.2GB/s左右。而100GbE的帶寬大約在10GB/s左右,差不多是3片NVMe SSD相加的帶寬,所以在這個測試里面,我們使用了4片NVMe SSD,以確保存儲總帶寬超過網(wǎng)絡(luò),如下表。

這個表是Intel DC P4500 SSD的性能參數(shù),單片SSD大約能提供51.5萬IOPS,這是一個穩(wěn)定狀態(tài)下的值。而我們拿到的是全新的SSD,所以在測試的時候,有一定的誤差,單片SSD的隨機讀性能大約是54萬IOPS,兩片P4500的性能大約在100萬左右,4片則在185萬左右。單片P4500的帶寬在3.2GB/s,隨著SSD數(shù)量的增加,其帶寬基本是線性增長的。

下面我們來看一下在實際測試中的情況。在10GbE iSCSI情況下,其隨機讀寫的性能大約是6萬IOPS和5萬IOPS。需要注意的是,我們這兒采用的測試是Oracle數(shù)據(jù)庫典型的8KB數(shù)據(jù)塊。然后開啟RDMA,也就是使用NVMeoF之后,10GbE的隨機讀寫性能幾乎能夠翻倍,超過了13.5萬IOPS。從圖上可以看到,隨機寫與隨機讀的性能差不多,與我們的常識相?!贜AND Flash的SSD,寫性能是要弱于讀性能的。這是因為10GbE的帶寬已經(jīng)是瓶頸了,連1片P4500的性能極限都達不到,所以讀寫性能相差無幾。

最后則是100GbE NVMeoF下的性能,隨機讀寫性能為120萬和60萬IOPS,分別是10GbE iSCSI下的20倍和12倍??梢?00GbE的優(yōu)勢非常明顯,能夠有效地提升NVMe SSD的性能表現(xiàn)。

接下來是在帶寬方面的性能表現(xiàn),我們使用的是64KB數(shù)據(jù)塊進行順序讀寫。在10GbE iSCSI情況下,其帶寬約為1.2GB/s,在NVMeoF下,其帶寬差不多,都在1.2GB/s左右,10GbE的帶寬已經(jīng)成為瓶頸。而在100GbE的NVMeoF下,其順序讀帶寬提升了將近10倍,達到了11GB/s;寫帶寬也提升了5倍,接近6GB/s,差不多已經(jīng)接近4片P4500 SSD的極限性能。

100GbE能夠有效的發(fā)揮NVMe SSD的IOPS和帶寬,那么在延遲方面呢?下面我們進行了另外一個測試。先看一眼各種存儲介質(zhì)的延遲表現(xiàn):DRAM最小,在納秒(ns)級別;然后是SCM(存儲級內(nèi)存),延遲增加了一個數(shù)量級;接著是SSD,延遲在微秒(μs)級別,相比DRAM又增加了三個數(shù)量級;最后是HDD,延遲在毫秒(ms)級別,相比SSD,延遲又增加了3個數(shù)量級。這些存儲介質(zhì)的延遲差距都是指數(shù)級的。

在延遲方面的測試,我們使用了Intel DC P4800X SSD。這種采用3D XPoint技術(shù)、俗稱Optane的SSD,最引人注目的就是延遲極低,Intel官方公布的延遲指標在10微秒左右,我們在NVMeoF測得其讀寫延遲分別為34微秒和35微秒,相比官方數(shù)據(jù),有一定的增加,但還是在同一個數(shù)量級,NVMeoF的延遲表現(xiàn)確實非常優(yōu)秀。

然后是P4500的延遲,這個是在本地測的,讀寫延遲分別為101微秒和31微秒。這也可以看出RDMA的延遲非常低,即使是跨網(wǎng)絡(luò)了,其延遲仍與本地SSD的延遲相差不多。可能有人注意到了,不是說SSD的寫性能不如讀性能嗎?為什么你這上面P4500的寫延遲比讀延遲還低不少,甚至也低于P4800X呢?

這里需要說明,Intel DC P4500 SSD有獨立供閃存控制器使用的DRAM,作為寫緩存,以加速SSD的寫操作,所以寫延遲比讀延遲還要低。為了保證DRAM里面的數(shù)據(jù)在突發(fā)掉電情況下也能寫入到NAND閃存里,所以P4500里面還有兩顆電容,來防止數(shù)據(jù)丟失。而Optane的寫入特性很高,數(shù)據(jù)直接“落盤”的性能不遜于讀取時,自然也就不需要DRAM及電容保護。

這張圖則是在企事錄測試架構(gòu)下P4500的延遲表現(xiàn),可以看到,由于加了32隊列深度,在10GbE iSCSI模式下,延遲就比較高了,讀寫延遲分別為9毫秒和10毫秒。但在使用NVMeoF之后,即使是10GbE,其延遲也一下降到了3.7毫秒。仍然受限于10GbE的帶寬瓶頸,所以其讀寫延遲相差無幾。而在100GbE的NVMeoF情況下,延遲又降回到了微秒級別,比10GbE iSCSI模式低了一個數(shù)量級。

由于時間關(guān)系,企事錄實驗室的這個測試其實還沒有做完,因為我們最終的目標是要評估NVMeoF在Oracle數(shù)據(jù)庫應(yīng)用場景下的性能表現(xiàn),但我們的測試正在進行中,還沒有獲得進一步的結(jié)果,所以我們今天的分享就到此為止。但是,即使是這樣,我們也看到NVMeoF的潛力巨大,確實能夠較為充分的利用NVMe SSD的高性能,讓跨網(wǎng)絡(luò)的存儲訪問獲得與訪問本地存儲相近的性能。我們相信隨著NVMeoF技術(shù)不斷發(fā)展成熟,這肯定是未來的方向。

分享到

崔歡歡

相關(guān)推薦