NVMe over Fabrics:FC-NVMe、NVMe/TCP、NVMe/RoCE 及其光模块 · 存储系统 · 技术 · 文档 · CodingBox
CodingBox 文档

NVMe over Fabrics:FC-NVMe、NVMe/TCP、NVMe/RoCE 及其光模块

NVMe 在服务器内部取代了 SCSI,因为闪存足够快,能够暴露出协议本身的开销; NVMe over Fabrics(NVMe-oF)将同一套命令集扩展到网络之上,让共享存储也能跟上这一速度。它运行在三种传输方式之上,分别对应三类网络——因而也对应三类光模块和三套物理层规则。本文比较这三者,并说明每一种对链路提出的要求。

为什么选择 NVMe-oF

方面SCSI 时代(FCP、iSCSI)NVMe-oF
命令队列单队列,约 32–256 条命令最多 64k 个队列 × 64k 条命令;设计上即为并行
每次 I/O 的协议开销数十 µs 的 CPU 时间数 µs;RDMA 传输绕过 CPU
网络增加的延迟典型 100–200 µs10–30 µs(RDMA/FC)、30–80 µs(TCP)
最适合HDD 和早期闪存阵列全闪存、解耦存储、GPU 数据管道

传输方式

传输方式网络无损?延迟说明
FC-NVMe(FC-NVMe-2)Fibre Channel 16/32/64GFC是,通过信用机制很低与 SCSI FCP 运行在同一网络和同一批 SFP 上;分区和名称服务器不变(FC 协议基础)
NVMe/RoCE v2带 RDMA NIC 的 25/100/200/400G 以太网需要 PFC/ECN(DCQCN)很低RDMA verbs 运行在 UDP/IP 之上;需要端到端的无损配置(无损以太网)
NVMe/TCP任意以太网/IP否——丢包由 TCP 处理低到中无需特殊 NIC 或交换机功能;可路由;企业环境中的主流选择
NVMe/IBInfiniBand是,通过信用机制很低HPC/AI 存储(InfiniBand)

四者共享同一套 NVMe-oF 架构:发现控制器告诉主机存在哪些子系统;主机将队列 连接到 I/O 控制器;ANA(非对称命名空间访问)负责处理多路径。

每种传输对物理层的要求

传输方式链路要求光模块
FC-NVMe干净的 FC 链路——CRC/ITW 接近零,信用未耗尽FC SFP 16/32/64GFC,经过厂商验证(FC 光模块)
NVMe/RoCE零丢包:开启 FEC,在 RoCE 类别上开启 PFC,无 CRC 错误(每丢失一帧都会以 go-back-N 重传方式卡住 RDMA 队列)25G SFP28 / 100G QSFP28 / 400G;机柜内用 DAC,同排用 SR/AOC,跨机房用 LR/DR;FEC 按 PMD 而定
NVMe/TCP普通链路;丢包影响的是延迟,而非正确性任意以太网光模块
NVMe/IB与 InfiniBand 网络相同IB 线缆和光模块(IB 布线)

RoCE 是最敏感的一个:接收光功率偏低或接口不洁净的链路会产生 CRC 错误,这类错误在 TCP 下会被默默吸收,但会明显卡住 RDMA 队列。存储延迟出现尖峰、且与端口错误计数器同步变化,就是这一问题的信号(接收光功率与链路预算、 VDM 与 FEC 指标)。

如何选择

场景合适的传输方式
已有 FC SAN、全闪存阵列FC-NVMe——同一网络,同一批光模块,按目标逐个启用
新建以太网存储、多厂商混用、跨站点路由NVMe/TCP
延迟敏感、单一厂商以太网、内部具备无损网络经验NVMe/RoCE
采用 IB 网络的 HPC/AI 集群NVMe/IB,或基于 IB 的并行文件系统
采用以太网横向扩展的 GPU 集群NVMe/RoCE,或在独立存储网络上使用 NVMe/TCP(GPU 网络)

运维要点

  • 分离组网:存储与计算尽可能分开建网——至少划分独立的流量类别;RoCE 需要专属的无损流量类别。
  • MTU:以太网传输上设为 9000;全程保持一致。
  • 多路径:两张网络,或两组 VLAN/leaf;启动器需支持 ANA。
  • 监控:按端口监控 CRC/FEC 和暂停帧计数器,再加上 DDM 趋势——衰退中的光模块会先表现为尾部延迟升高,早于其彻底故障(监控)。
  • 固件:NIC/HBA 与阵列的固件兼容性矩阵,和光模块兼容性同样重要(SAN 中的光模块)。

在 CodingBox 中

NVMe-oF 网络所用的光模块,就是普通的 FC、以太网或 IB 模块;区别在于该传输方式对错误的容忍度有多低。安装前在工作台上读取识别信息、测量基线 DDM (Check transceiver(检测光模块)、 DDM),以及写入阵列和交换机厂商能够接受的识别信息(厂商锁定),是这项工作中涉及编程器的部分。

这些网络所运行的适配器——100G/200G NIC、其笼位、PCIe 限制和模块策略:带光口的 NIC。


如果您发现本资料中有不准确之处或错误,请选中相应片段并按 Ctrl+Enter,即可。