传统的集中式存储架构已经难以支撑海量数据的高并发访问和实时处理需求,分布式存储凭借其卓越的扩展性和灵活性,正迅速成为构建现代化数据基础设施的核心选择。然而,分布式存储的性能瓶颈往往在于网络。如何构建一个高带宽、超低时延、零丢包的无损网络,是释放分布式存储全部潜力、赋能企业关键业务(如实时数据库、AI训练、高性能计算)的关键挑战。
本文将深入探讨基于RoCEv2技术构建高性能分布式存储网络的最佳实践,帮助企业驾驭数据洪流,赢得市场先机。
传统的集中式存储(SAN/NAS)虽然成熟稳定,但其扩展性瓶颈难以支撑海量数据存储和高并发访问的洪流。分布式存储,凭借其弹性扩展(可达上千节点、PB/EB级容量)和线性增长的性能优势,正成为构建现代化数据基础设施的基石。
然而,分布式存储的性能潜力能否充分发挥,网络是核心命脉。传统的TCP/IP以太网在分布式I/O场景下会消耗大量CPU资源,成为性能瓶颈。进入全闪存时代,对网络带宽和时延的要求更是达到了极致。
为了解决分布式存储的长I/O路径和TCP性能瓶颈,高带宽、超低时延的RDMA(远程直接内存访问)技术已成为业界共识。RDMA允许服务器网卡直接读写对方内存,绕过操作系统内核,极大提升效率。
目前RDMA网络主要有两大阵营:
RoCEv2的核心价值在于:
计算存储分离: 推荐部署两张独立的Spine-Leaf物理网络:
高可靠接入: 存储节点至关重要,应采用双归或多归 (Multi-homing) 方式接入网络,避免单点故障。
RoCE网络要发挥媲美IB的性能,关键在于“无损”配置(Zero Loss)。这涉及精细化的PFC、ECN、缓冲区等参数调整,确保高优先级存储流量无阻塞、零丢包、低时延传输。
需要在每台交换机和服务器网卡上进行一系列复杂配置,包括:
#确保服务器网卡工作在 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 Toolkit 提供了革命性的解决方案,让RoCE部署和管理变得前所未有的简单高效:
部署完成后,严谨的性能测试至关重要。
测试时延时使用的是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`
本次测试作业的名称。
需要进行存储区域扩容,来满足政府、企业客户对云服务更高网络质量(超低时延、零丢包)和可靠性的严苛要求,还需保障供应链稳定和获得专业及时的技术支持。
该方案部署 64 x 200GE 高性能数据中心交换机,用于提供大容量、超低时延转发,构建基于RoCEv2的全无损以太网络,通过PFC+ECN+DCBX技术组合,实现与IB媲美的零丢包、超低时延传输保障。利用该设备的原生开放特性,为未来自动化运维提供基础。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。