但是,隨著NVMe SSD逐漸普及,以及服務器本身能支持的SSD數量進一步增加,可能又會往另外一個方向變化:一臺服務器裝滿了SSD以后,本地的計算能力(運行的應用負載)已經不能完全發揮SSD的全部性能,所以又要把SSD放到單獨設備里面,把存儲獨立出來,供很多主機訪問,還有更高的靈活性。所以往右上角發展,比如說幾百片閃存放在一起,甚至將來有可能會上千個閃存放在一起。就像這張NVMe over Fabrics(NVMeoF)規劃的遠景,將來可以支持千個級別的SSD。NVMe over Fabrics現在已經走向了一些原型階段,或者是有一些產品出來了。
NVMe over Fabrics要解決的是,計算和存儲分離了以后,距離沒有產生美,帶來的卻是帶寬和延遲上的挑戰。怎么解決這個挑戰,接下來的這一部分,有請我們企事錄負責測試的合伙人曾智強來講一講這方面的情況。
大家好,我是曾智強,我在企事錄主要負責(新)技術、產品及解決方案的評估和驗證。閃存的出現,確實加大了對存儲網絡的挑戰。業內已經開始著手解決網絡的問題,比如NVMe over Fabrics,我們也對NVMeoF做了一些探索和嘗試,取得一些成果,今天就給大家分享一下企事錄在NVMe over Fabrics方面獲得的一些實踐經驗。
說到NVMe over Fabrics,這是NVMe over Fabrics的一個總體架構示意圖。NVMe實際上一個寄存器級的邏輯接口,專為SSD等非易失性存儲開發,數據傳輸通常在PCIe之上。所以在NVMe over Fabrics 1.0規范里面,把NVMe SSD比作是NVMe over PCIe,既然是over在PCIe上面,那是不是也可以over在其他的網絡上?比如說企業數據中心最常用的Fibre Channel(FC),或者更常見的以太網,乃至其他更高速的網絡上?比如InfiniBand(IB)。InfiniBand和新一代以太網有一個非常好的功能即RDMA(Remote Direct Memory Access,遠程直接內存訪問),可以有效降低軟件層導致的延遲。InfiniBand的帶寬一向很高(40Gbps以上),現在以太網的帶寬也很高,比如新一代的25GbE,以及100GbE,而且也支持RDMA功能,比如RoCE(RDMA over Converged Ethernet)或iWARP(internet Wide Area RDMA Protocol)。這不僅能顯著降低延遲,也有助于提升帶寬。
中間紅色部分,就是支持RDMA的軟件堆棧,包括InfiniBand和以太網,最右邊粉色部分,實際上就是Fibre Channel。NVMe over PCIe或者NVMe SSD上的訪問規則是由NVMe規范來定義的。
從規范來看,NVMe over Fabrics實際上有兩種模式,第一個是Memory模式,所有的NVMe SSD就是使用這種模式;另外就是Message模式,通過對NVMe命令進行再次封裝,以此實現在其他網絡上傳輸,如果在Fibre Channel上傳輸的話就使用message模式。此外,比較例外的就是RDMA上,支持RDMA功能實際上有InfiniBand和以太網,而以太網又有RoCE和iWARP兩種。NVMe over Fabrics都是支持的,并且memory模式和message都能用在RDMA上。
從邏輯架構上看的話,NVMe over PCIe和NVMe over RDMA上,在軟件開銷上的增加很小,可以近似的認為跨網絡訪問和本地訪問的延遲幾乎是一樣的。所以如果用RDMA的話,雖然經過了網絡,但其延遲可以非常接近于本地的水平。為了驗證NVMe over Fabrics,我們在企事錄和青云聯合的混合云實驗室里設計了一個測試方案。
Oracle數據庫服務器通過兩臺交換機與最下面的存儲服務器相連。右邊這臺就是100Gb/s交換機,是Mellanox提供的SN2100;左邊是Mellanox SX1024交換機,是10Gb/s交換機。最下面的是存儲服務器,采用Intel雙路Xeon Gold 6154處理器,這是一款高主頻的處理器,適合驅動高性能的NVMe SSD,作為存儲服務器,也配置了256GB內存。與Oracle數據庫服務器一樣,也有一張100Gb/s和兩張10Gb/s的Mellanox網卡。在存儲方面,使用了4個U.2接口的Intel DC P4500SSD,每片SSD的容量是2TB。同時還使用了1片750GB的Intel DC P4800X,這就是傳說中的Optane,采用3D XPoint技術,一種全新介質的SSD。
這個表是Intel DC P4500 SSD的性能參數,單片SSD大約能提供51.5萬IOPS,這是一個穩定狀態下的值。而我們拿到的是全新的SSD,所以在測試的時候,有一定的誤差,單片SSD的隨機讀性能大約是54萬IOPS,兩片P4500的性能大約在100萬左右,4片則在185萬左右。單片P4500的帶寬在3.2GB/s,隨著SSD數量的增加,其帶寬基本是線性增長的。
在延遲方面的測試,我們使用了Intel DC P4800X SSD。這種采用3D XPoint技術、俗稱Optane的SSD,最引人注目的就是延遲極低,Intel官方公布的延遲指標在10微秒左右,我們在NVMeoF測得其讀寫延遲分別為34微秒和35微秒,相比官方數據,有一定的增加,但還是在同一個數量級,NVMeoF的延遲表現確實非常優秀。
這里需要說明,Intel DC P4500 SSD有獨立供閃存控制器使用的DRAM,作為寫緩存,以加速SSD的寫操作,所以寫延遲比讀延遲還要低。為了保證DRAM里面的數據在突發掉電情況下也能寫入到NAND閃存里,所以P4500里面還有兩顆電容,來防止數據丟失。而Optane的寫入特性很高,數據直接“落盤”的性能不遜于讀取時,自然也就不需要DRAM及電容保護。