傳統的集中式存儲架構已經難以支撐海量數據的高并發訪問和實時處理需求,分布式存儲憑借其卓越的擴展性和靈活性,正迅速成為構建現代化數據基礎設施的核心選擇。然而,分布式存儲的性能瓶頸往往在于網絡。如何構建一個高帶寬、超低時延、零丟包的無損網絡,是釋放分布式存儲全部潛力、賦能企業關鍵業務(如實時數據庫、AI訓練、高性能計算)的關鍵挑戰。
本文將深入探討基于RoCEv2技術構建高性能分布式存儲網絡的最佳實踐,幫助企業駕馭數據洪流,贏得市場先機。
駕馭數據洪流:構建媲美InfiniBand的高性能RoCE分布式存儲網絡
傳統的集中式存儲(SAN/NAS)雖然成熟穩定,但其擴展性瓶頸難以支撐海量數據存儲和高并發訪問的洪流。分布式存儲,憑借其彈性擴展(可達上千節點、PB/EB級容量)和線性增長的性能優勢,正成為構建現代化數據基礎設施的基石。
然而,分布式存儲的性能潛力能否充分發揮,網絡是核心命脈。傳統的TCP/IP以太網在分布式I/O場景下會消耗大量CPU資源,成為性能瓶頸。進入全閃存時代,對網絡帶寬和時延的要求更是達到了極致。


為何選擇RoCEv2?性能與成本的最優解
為了解決分布式存儲的長I/O路徑和TCP性能瓶頸,高帶寬、超低時延的RDMA(遠程直接內存訪問)技術已成為業界共識。RDMA允許服務器網卡直接讀寫對方內存,繞過操作系統內核,極大提升效率。

目前RDMA網絡主要有兩大陣營:
- InfiniBand (IB):性能優異,但需要專用網卡、交換機和線纜,部署和管理成本高昂。
- RoCEv2 (RDMA over Converged Ethernet v2):基于開放的標準以太網傳輸IB流量,充分利用現有以太網生態,部署成本優勢顯著。
RoCEv2的核心價值在于:
- 媲美IB的性能: 采用經過優化的RoCE網絡設備(如星融元CX-N系列交換機),可實現端到端的超低時延(<500ns)和高吞吐,性能表現足以替代甚至局部超越IB(見下圖實測數據)。

- 顯著的成本優勢: 復用標準以太網硬件(網卡、交換機、線纜),大幅降低初始投入和運維復雜度。
- 開放生態: 基于成熟的以太網標準,兼容性強,技術門檻相對較低。
構建高性能分布式存儲網絡:架構與選型
組網架構:分離與冗余是關鍵

計算存儲分離: 推薦部署兩張獨立的Spine-Leaf物理網絡:
- 存儲后端網: 專用于分布式存儲集群內部通信(如多副本同步、數據重建),確保快速無阻塞。
- 存儲前端網 + 業務網: 承載應用訪問存儲的流量及其他業務流量。
高可靠接入: 存儲節點至關重要,應采用雙歸或多歸 (Multi-homing) 方式接入網絡,避免單點故障。

網絡硬件選型:面向未來,滿足嚴苛要求
- 高密度高速接口: 100G/200G/400G端口,減少設備數量,簡化架構。
- 超低時延與無損特性: 端口轉發時延<500ns,原生支持RoCEv2及關鍵無損網絡特性(PFC流量控制、ECN顯式擁塞通知)。
- 彈性擴展能力: 全盒式設備,支持構建超大規模(數千節點)、超扁平網絡(任意兩點≤3跳) 的存儲/計算集群。
- 開放性與自動化: 開放的軟件架構和API,為未來自動化運維奠定基礎。
RoCE無損網絡配置與管理:從手動到自動化
RoCE網絡要發揮媲美IB的性能,關鍵在于“無損”配置(Zero Loss)。這涉及精細化的PFC、ECN、緩沖區等參數調整,確保高優先級存儲流量無阻塞、零丟包、低時延傳輸。
傳統方式:手動配置(復雜但精細)
需要在每臺交換機和服務器網卡上進行一系列復雜配置,包括:
- 啟用RoCEv2模式。
- 劃分流量優先級(DSCP/PCP)。
- 在指定隊列啟用PFC(流量控制)和ECN/DcqCN(擁塞管理)。
- 精細調整緩沖區大小、PFC觸發門限、ECN標記門限等參數。
- 配置QoS策略(DiffServ Map, Class Map, Policy Map)并綁定到接口。
#確保服務器網卡工作在 RoCEv2 模式下 #為業務流量配置 PCP 或 DSCP,并啟用 ECN。 #設置網卡RDMA CM的工作模式 [root@server ~]# cma_roce_mode -d mlx5_0 -p 1 -m #設置網卡的優先級類型為DSCP [root@server ~]# mlnx_qos -i enp1s0f0 –trust=dscp DCBX mode: OS controlled Priority trust state: dscp #在隊列3上開啟PFC [root@server ~]# mlnx_qos -i enp1s0f0 -f 0,0,0,1,0,0,0,0 #在隊列3上開啟DCQCN [root@server ~]# echo 1 > /sys/class/net/enp1s0f0/ecn/roce_np/enable/3 [root@server ~]# echo 1 > /sys/class/net/enp1s0f0/ecn/roce_rp/enable/3 #設置CNP DSCP [root@server ~]# echo 48 > #在交換機端口配置以啟用 PFC 和 ECN 功能并指定隊列 #在交換機的指定隊列(與服務器上的隊列匹配)上啟用 PFC 和 ECN #調整緩沖區和閾值 # 設置PFC門限值 sonic(config)# buffer-profile pg_lossless_100000_100m_profile sonic(config-buffer-profile-pg_lossless_100000_100m_profile)# mode lossless dynamic -2 size 1518 xon 0 xoff 46496 xon-offset 13440 sonic(config-buffer-profile-pg_lossless_100000_100m_profile)# exit # 在3、4隊列開啟PFC功能(AsterNOS的PFC功能默認使能3、4隊列,無需配置) sonic(config)# priority-flow-control enable 3 sonic(config)# priority-flow-control enable 4 sonic(config)# exit # 設置ECN門限值 sonic(config)# wred roce-ecn sonic(config-wred-roce-ecn)# mode ecn gmin 15360 gmax 750000 gprobability 10 sonic(config-wred-roce-ecn)# exit # 配置Diffserv map sonic(config)# diffserv-map type ip-dscp roce-dmap sonic(config-diffservmap-roce-dmap)# ip-dscp 48 cos 6 # 配置Class map sonic(config)# class-map roce-cmap sonic(config-cmap-roce-cmap)# match cos 3 4 sonic(config-cmap-roce-cmap)# exit # 配置Policy map sonic(config)# policy-map roce-pmap sonic(config-pmap-roce-pmap )# class roce-cmap sonic(config-pmap-c)# wred roce-ecn sonic(config-pmap-c)# priority-group-buffer pg_lossless_100000_100m_profile sonic(config-pmap-c)# exit sonic(config-pmap-roce-pmap )# set cos dscp diffserv roce-dmap sonic(config-pmap-roce-pmap )# exit # 進入以太網接口視圖,綁定策略,將RoCE網絡配置在接口上使能 sonic(config)# interface ethernet 0/0 sonic(config-if-0/120)# service-policy roce-pmap
創新之道:自動化配置(高效且可靠 - EasyRoCE方案)

面對手動配置的挑戰,EasyRoCE Toolkit 提供了革命性的解決方案,讓RoCE部署和管理變得前所未有的簡單高效:
- 1行命令啟用RoCE: 業務級命令行封裝,基于最佳實踐模板一鍵完成復雜配置。
- 開箱即用的可視化監控: 內置RoCE Exporter容器,無縫對接Prometheus/Grafana,實時監控關鍵RoCE指標(時延、丟包、PFC狀態、ECN標記等),網絡健康一目了然。
- 集中配置視圖: 統一展示全網RoCE相關配置,簡化排障流程,提升運維效率。

- 免費開放: 該工具套件對星融元簽約客戶免費提供。
性能驗證:科學測試,數據說話
部署完成后,嚴謹的性能測試至關重要。
關鍵指標
- IO時延 (Latency): 單次IO請求的響應時間(越低越好)。
- IOPS: 每秒處理的IO請求數(越高越好)。
- 吞吐量 (Throughput): 單位時間傳輸的數據量(如MB/s, GB/s)。
- 測試模式: 需區分順序IO(連續大塊數據,高吞吐場景)和隨機IO(小塊分散數據,高IOPS場景,如數據庫),通常隨機寫是最嚴苛的負載。讀寫比例(如70%讀/30%寫)和IO大小(4K小IO, 64K/1M大IO)需模擬真實業務。
常用測試工具
- 網絡層: iperf (帶寬), ib_read/write_bw (RDMA帶寬), ib_read/write_lat (RDMA時延)。
- 存儲系統層: fio (Flexible I/O Tester) - 存儲性能測試的瑞士軍刀,可高度定制化模擬各種負載。
- 業務層: 如數據庫用swingbench/hammerdb,對象存儲用cosbench。
FIO測試參數解讀 (示例:模擬OLTP小IO負載)

測試時延時使用的是1v1的方式,測試存儲系統IOPS時分別用1v1、2v1的方式進行壓測。目標是測試服務器在假設的小IO業務場景中(100% 隨機,70% 讀,30% 寫,IO size 4K)的性能表現。
[root@server ~]# fio \ -filename=/root/randrw_70read_4k.fio \ -direct=1 \ -iodepth 1 \ -thread \ -rw=randrw \ -rwmixread=70 \ -ioengine=psync \ -bs=4k \ -size=5G \ -numjobs=8 \ -runtime=300 \ -group_reporting \ -name=randrw_70read_4k_local `-filename=/root/randrw_70read_4k.fio` 支持文件、裸盤、RBD image。該參數可以同時制定多個設備或文件,格式為:-filename=/dev/vdc:/dev/vdd(以冒號分割)。 `-direct=1` direct即使用直接寫入,繞過操作系統的page cache。 `-iodepth=1` iodepth是設置IO隊列深度,即單線程中一次給系統多少IO請求。如果使用同步方式,單線程中iodepth總是1;如果是異步方式,就可以提高iodepth,一次提交一批IO,使得底層IO調度算法可以進行合并操作,一般設置為32或64。 `-thread` fio默認是通過fork創建多個job,即多進程方式,如果指定thread,就是用POSIX的thread方式創建多個job,即使用pthread_create()方式創建線程。 `-rw=randrw` 設置讀寫模式,包括:write(順序寫)、read(順序讀)、rw(順序讀寫)、randwrite(隨機寫)、randread(隨機讀)、randrw(隨機讀寫)。 `-rwmixread=70` 設置讀寫IO的混合比例,在這個測試中,讀占總IO的70%,寫IO占比30%。 `-ioengine=psync` 設置fio下發IO的方式,本次測試使用的IO引擎為psync。 `-bs=4k` bs即block size(塊大小),是指每個IO的數據大小 `-size=5g` 測試總數據量,該參數和runtime會同時限制fio的運行,任何一個目標先達到,fio都會終止運行。在做性能測試時,盡量設置大點,比如設置2g、5g、10g或者更大,如果基于文件系統測試,則需要需要小于4g。 `-numjobs=8` 本次作業同時進行測試的線程或進程數,線程還是進程由前面提到的thread參數控制。 `-runtime=300` 測試總時長,單位是s。和size一起控制fio的運行時長,在做一般性性能測試的時候,該時間也盡量設置長點,比如5分鐘、10分鐘。 `-group_reporting` 多個jobs測試的時候,測試結果默認是單獨分開的,加上這個參數,會將所有jobs的測試結果匯總起來。 `-name=randrw_70read_4k_local` 本次測試作業的名稱。
成功實踐:中國TOP3公有云的信任之選
需要進行存儲區域擴容,來滿足政府、企業客戶對云服務更高網絡質量(超低時延、零丟包)和可靠性的嚴苛要求,還需保障供應鏈穩定和獲得專業及時的技術支持。
該方案部署 64 x 200GE 高性能數據中心交換機,用于提供大容量、超低時延轉發,構建基于RoCEv2的全無損以太網絡,通過PFC+ECN+DCBX技術組合,實現與IB媲美的零丟包、超低時延傳輸保障。利用該設備的原生開放特性,為未來自動化運維提供基礎。
-
無損
+關注
關注
0文章
7瀏覽量
9599 -
分布式存儲
+關注
關注
4文章
182瀏覽量
20168
發布評論請先 登錄
分布式軟件系統
使用分布式I/O進行實時部署系統的設計
HarmonyOS應用開發-分布式任務調度
分布式KVM坐席拼控系統解決方案
如何高效完成HarmonyOS分布式應用測試?
深度解讀分布式存儲技術之分布式剪枝系統
分布式存儲的7個特征
8K無損壓縮分布式系統,開創分布式新時代!
一鍵部署無損網絡:EasyRoCE助力分布式存儲效能革命
評論