摘要

  • NVM Express, Inc. 是一个管理 NVMe 规范系列的非营利行业联盟,并非制造 SSD、控制器、交换机或存储系统的公司。
  • NVMe 用大量提交队列和完成队列取代了 HDD 时代狭窄串行队列的假设,以适应并行闪存和多核 CPU。
  • 同一控制器、子系统、命名空间的含义,在本地 PCIe 中,以及通过 NVMe over Fabrics 的 TCP 或 RDMA 中均可使用。
  • NVMe 2.x 是模块化结构。2026 年 8 月 4 日发布的 2.4 版本集合,整合了 Base、PCIe/RDMA/TCP 传输、NVMe-MI、Boot 以及多个专用命令集。
  • NVMe 使容量变得可组合,但不定义文件系统、耐久性、RAID、纠删码、网络设计、运行安全和应用一致性。

存储命令无需改变基本语言即可走出服务器

一条读取命令既可以发往通过 PCIe 连接的本地命名空间,也可以发往网络结构上的远程子系统。介质、控制器、路径会变化,但命令与队列的基本模型得以保留。

这种连续性使得分解成为可能。容量可汇聚到共享池中,按需分配给使用它的主机,因此无需将所有设备放在同一机箱内。

然而,外部化带来了发现、网络、多路径、认证、重连以及新的故障域。NVMe 让存储成为可编程的服务,但并不会消除拓扑结构。

闪存需要的不是机械延迟而是以并行性为前提的协议

传统存储接口以旋转磁盘的延迟和有限的并行处理为背景。闪存可以并行处理大量操作,现代服务器拥有众多 CPU 核心。

NVMe 在内存中放置一组组提交队列和完成队列。主机写入命令,通过门铃通知控制器,并以中断或轮询方式接收完成。将多个队列分配给不同核心或进程,可减少共享锁与争用。

实际性能取决于控制器固件、PCIe 拓扑、NUMA、队列深度、中断设置和工作负载。仅有 NVMe 这一名称并不保证特定的延迟或吞吐量。

联盟将协议治理与产品竞争分开

NVMe 的工作始于 2000 年代末,1.0 于 2011 年发布,NVM Express, Inc. 于 2014 年成立。CPU、介质、控制器、网络、云和系统企业均有参与。

截至调查时,Google 的 Amber Huffman 担任总裁,AMD 的 Curtis Ballard 担任财务主管,Microchip 的 David Allen 担任秘书,公开的董事会中有 13 位发起人代表。

联盟制定共同的规范和合规要求。会员继续在芯片、固件、系统、支持与性能方面竞争。成为会员并不意味着实现所有特性。

NVMe 2.0 将臃肿的单册文件转变为模块化规范集

随着多种传输方式和新的数据模型加入,单份文档已难以维护全部内容。2021 年 2.0 重构将 Base、命令集和传输协议分开。

这种结构下,即使 TCP 演变也无需重写全部命令,分区命名空间也能在不改动标准块控制器的情况下扩展。但版本矩阵随之变得复杂。

2026 年 8 月 4 日发布的 2.4 版本集合包含 Base 2.4、PCIe Transport 1.4、RDMA Transport 1.3、TCP Transport 1.3、NVMe-MI 2.2、Boot 1.4,以及 NVM、键值、分区命名空间、计算程序、简单日志内存等命令集。“NVMe 2.4”并不是单一文件。

提交队列与完成队列让存储工作更贴近 CPU 核心

主机向提交队列写入命令,控制器向完成队列返回状态。不同核心或应用可使用不同队列对,从而减少争用。

门铃用于通知新任务。轮询有时能降低延迟,但会消耗 CPU。中断合并可降低 CPU 负载,但也可能增加等待时间。队列深度同时影响利用率和尾延迟。

深队列并非总是更好。它可能掩盖饱和并延长等待时间。配置需要根据工作负载和 SLA 调整。

控制器、子系统、命名空间将逻辑端点与物理介质分开

控制器对外提供队列和命令。子系统可包含多个控制器。命名空间是主机可见的逻辑容量,可通过多条路径提供。

主机看到的标识不必与单块 SSD 一致。存储阵列可将大量介质捆绑在一起,呈现稳定的命名空间。

NVMe 不决定数据放置、复制或保护。RAID、纠删码、精简配置、快照和一致性属于周边系统的职责。

管理命令与普通 I/O 同等重要

管理队列负责标识、I/O 队列创建、特性、日志、固件、命名空间和安全。它是控制普通读写运行环境的层面。

错误的管理命令可能导致命名空间删除、固件误激活或电源状态变更。必须进行权限、审计和变更控制。

即使将管理与 I/O 分离,控制平面的重要性也不会降低。在网络结构中,两者可能依赖同一网络与身份。

PCIe 让本地路径更贴近内存与硬件

NVMe over PCIe 使用本地总线上的共享内存结构和控制器寄存器。这是连接服务器内 SSD 或扩展卡最直接的方式。

物理距离近并不意味拓扑简单。设备可能位于 PCIe 交换机之后、不同的 NUMA 插槽或共享通道上。CPU、内存和设备的布局会影响性能。

仅看驱动器数量并不足够。在到达介质之前,主机内部的 PCIe 路径就可能产生延迟。

NVMe over Fabrics 将本地控制器关系变为网络服务

NVMe-oF 1.0 与 NVMe-MI 1.0 于 2016 年 6 月 9 日发布。NVMe-oF 将命令封装与数据送往远程子系统,主机在网络结构上创建队列。

多个主机可共享容量池,实现计算与存储分离。更换主机时无需搬动数据。

另一方面,网卡、交换机、路由、发现、控制器、认证和多路径进入数据路径。网络不再仅仅是连接,而是数据完整性系统的一部分。

发现控制器便于动态连接,也形成重要依赖

主机向发现控制器查询,以了解可用的子系统、地址和服务。手动按目标配置的操作减少,资源可动态添加。

错误信息或服务中断会妨碍新连接,甚至导向错误目标。需要冗余、缓存、校验和身份保护。

发现可用性与数据路径可用性并不等同。可能出现既有会话正常,而新主机却无法连接的情况。

NVMe/TCP 将存储结构扩展到通用 IP 网络

2019 年标准化的 NVMe/TCP 将命令与数据映射到 TCP 连接上。运维人员可以使用路由以太网、IP 工具、防火墙和现有运维手段,无需强制采用 RDMA 结构。

便利性伴随着开销。TCP 协议栈、复制、中断和 CPU 会影响尾延迟。内核实现、卸载、传输大小和调优变得重要。

该传输协议带有面向存储的帧格式和校验,也可使用 TLS。支持 TLS 并不意味着 TLS 已启用并得到正确管理。

NVMe/RDMA 追求低延迟,要求严谨的结构设计

RDMA 利用队列对、注册内存和网卡卸载,减少 CPU 介入来搬运数据。在 HPC 和 AI 中,当微秒级延迟和 CPU 周期至关重要时尤为有效。

RDMA 并非单一网络。RoCE、iWARP 等绑定方式在拥塞、丢包、PFC、ECN、内存注册方面有不同要求。

高速基准测试并不保证简单操作。结构故障会表现为存储超时,需要同时具备网络与系统知识。

多路径将冗余变为主机的策略

一个命名空间可通过多个控制器和路径看到。主机可选择负载均衡与故障转移。非对称命名空间访问可指示优化、非优化和不可用路径。

两条链路可能共享同一交换机、控制器、电源或路由。独立性需要通过实际故障测试来验证。

错误的策略会把 I/O 送到慢路径,或长期保留故障路径。冗余性应按运行表现而非端口数量评估。

预留机制协调共享访问,但不能替代共识

NVMe 预留会登记主机,预留命名空间以防止未获批准的写入者,在集群和故障转移中发挥作用。

但它不能替代集群共识或应用一致性。故障主机可能遗留状态,必须通过隔离机制阻止旧节点的写入。

恢复失误可能使保护措施反而成为停机或损坏的原因。

存储离开 PCIe 后,认证与 TLS 不可或缺

本地设备可依托一定的物理边界。在网络环境中,发起端与目标端需要证明身份并保护所需通道。

NVMe 定义了认证方式,NVMe/TCP 可使用 TLS。实际有效性取决于密钥、证书、轮换、算法、访问策略和实现。仅支持并不能保证安全运行。

需要将发现、管理和数据平面一并评估。即使是真实身份,若权限过宽也构成危险。

NVMe-MI 提供独立于应用 I/O 的管理路径

NVMe 管理接口支持子系统发现、健康状态读取、设备清单和管理操作,即便主 I/O 路径未使用也能发挥作用。

它对维护与恢复很有用,但也增加了另一个高权限接口。集中式工具可能读取敏感信息并批量更改设备。

NVMe-MI 可与 Redfish 等集成。集成并不会将各标准与厂商的责任合并为一。

分区命名空间将介质约束呈现给主机软件

ZNS 将容量划分为顺序写入的区域。若主机了解介质布局,便可减少控制器内部的垃圾回收,改善耐久性和可预测性。

要获得这些收益,需要支持区域感知的文件系统、数据库和存储层。面向传统块设备的应用不会自动受益。

ZNS 体现了 NVMe 的取舍:公开介质行为可提高效率,但也会增加软件可移植性的要求。

键值、简单日志内存与计算程序拓展了命名空间的含义

专用命令集支持键值、简单日志内存以及存储近端程序执行,旨在减少转换和数据搬运。

采用它需要控制器、驱动、库和应用的支持。即使规范中存在,也并非所有 SSD 或阵列都会提供。

选项越多,能力发现与回退就越重要。模块化带来灵活性的同时,也产生了新的商用矩阵。

合规性是有用证据,并不认证端到端性能

合规性计划与互操作性测试会验证主机与控制器间的具体行为,找出仅凭文档无法发现的不一致。

列入清单并不保证在所有拓扑中的延迟、耐久性、恢复与安全。可选特性以及驱动与固件的组合矩阵会不断变化。

购买者应将合规性视为最低标准,并针对自身的工作负载、故障和升级进行测试。

分解将容量与主机分离,也重新分配责任

在本地存储中,设备、服务器和系统团队往往紧密绑定。远程池可支撑多个消费者,并能通过软件调整分配。

网络、存储、平台、安全和应用团队会共同面对同一事件。结构降级可能看起来像数据库故障,控制器固件故障也可能表现为网络中断。

经济性不仅取决于单价,还取决于容量利用率和运营能力。

AI 将存储延迟转化为计算成本

训练需要读取数据集、写入检查点并搬运大规模状态。当数千个加速器等待时,存储尾延迟会浪费昂贵的计算资源。

TCP、RDMA、多路径和共享命名空间提供不同的架构。选择时需要考虑拥塞、元数据、队列行为、故障与恢复。

目标不仅是峰值吞吐量,还包括同步负载下可预测的队列延迟与恢复能力。

NVMe 2.4 展现了广泛范围与版本压力

2.4 版本集合整合了 Base、传输、Boot、管理接口和专用命令集。NVMe 已不再只是 SSD 连接器,而成为存储协议栈。

即使主机支持 Base 2.4,也未必具备全部命令集;TCP 控制器与 RDMA 产品的特性也不相同。支持声明必须具体明确。

驱动、操作系统、固件、传输协议与管理工具的组合,实际上构成协议的一部分。

NVMe 让存储可组合,但并未让一切变简单

共同规范降低了一类切换成本。命令和命名空间可从 PCIe 迁移到网络结构,也可在不同厂商间迁移。但数据迁移、安全、网络、可观测性与支持依然存在。

其好处是协议与产品分离;风险在于,NVMe 这个相同名称可能掩盖了差异极大的架构。

存储变得可编程且分布化,但在故障时,它仍是一个需要理解完整路径的数据完整性系统。