摘要
- NVM Express, Inc. 是管理 NVMe 规范家族的非营利行业联盟;它既不生产 SSD,也不生产控制器或存储阵列。
- NVMe 用内存中的多个提交队列与完成队列,取代了机械硬盘遗留的串行队列假设,以适配多核处理器与闪存的并行性。
- 相同的控制器、子系统与命名空间模型,既可以在 PCIe 上本地运行,也可以通过 NVMe over Fabrics 远程运行,并支持成本不同的 TCP 与 RDMA 传输。
- NVMe 2.x 系列采用模块化设计。经批准后于 2026 年 8 月 4 日发布的 2.4 套件包含 Base、PCIe/RDMA/TCP 传输、NVMe-MI、Boot 以及多个专用命令集。
- 该协议让容量与访问更可组合。它并不定义文件系统、耐久性、RAID、纠删码、网络、运维安全或应用一致性。
存储命令可以离开服务器,而无需改变其基本语言
应用程序可以向通过 PCIe 连接的本地 NVMe 命名空间发起读或写操作。在 fabric 架构中,相同的命令模型可以经由以太网或 RDMA 网络到达远程子系统。介质、控制器与路径发生了变化,而存储语法大体保持共通。
这种连续性正是存储解耦的基础。运营商可以把容量集中到共享系统中,并按需将其挂载到主机,而不是把每台设备放进使用它的机箱里。
移动并不会消除任何依赖,而是增加了发现、网络、多路径、认证、重连与故障域。NVMe 将存储变为可组合的服务,而非没有拓扑的资源。
闪存需要为并行而设计的协议
源自硬盘的协议由机械延迟与较窄的队列所塑造。闪存能够并行处理大量操作,而现代服务器拥有众多核心。
NVMe 使用内存中的提交队列与完成队列对。应用程序或驱动程序放置命令,通过 doorbell(门铃)通知控制器,并通过中断或轮询获取完成结果。这种结构减少了共享锁,并让队列更贴近使用它们的核心。
收益并非自动获得。固件、PCIe 拓扑、NUMA 内存、队列深度、中断与工作负载共同决定实际的延迟与吞吐量。
联盟将协议治理与产品竞争分开
NVMe 的工作始于 2000 年代末;1.0 版于 2011 年发布,NVM Express, Inc. 于 2014 年成立。该联盟汇聚了平台、处理器、控制器、介质、网络与系统制造商。
截至本次检索,Google 的 Amber Huffman 担任主席,AMD 的 Curtis Ballard 担任司库,Microchip 的 David Allen 担任秘书。公开理事会中列有 13 名发起会员代表。
联盟定义规范与合规计划。成员仍在硅片、固件、系统、支持与性能上相互竞争。参与意味着进入流程,但并不证明某款产品实现了每一项功能。
NVMe 2.0 将不断膨胀的单一文档演变为模块化家族
随着协议扩展到多种传输与数据模型,单一文档变得难以维护。2021 年的 2.0 重构将 Base、命令集与传输分离开来。
这种架构让 TCP 传输无需重写整个命令集即可演进,也让 Zoned Namespaces 无需改动每个常规控制器即可发展。但它也要求采购方追踪多个版本。
2026 年 8 月 4 日公开的 NVMe 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、Key Value、Zoned Namespace、Computational Programs 与 Simple Log Memory 命令集。因此「NVMe 2.4」指的是一个协调的集合,而非单个文件。
提交队列与完成队列让工作更贴近 CPU
提交队列包含主机写入的命令;完成队列接收控制器的结果。多对队列可以关联到不同核心或应用程序,从而减少争用。
Doorbell 用于通知新条目。控制器可以产生中断,主机也可以轮询。轮询有时以更高的 CPU 消耗换取更低延迟。中断合并可以降低成本,但可能增加延迟。
队列深度并非放之四海的性能指标。队列过深会增加等待与排队延迟;队列过短则可能让设备利用率不足。运维需要根据工作负载做出选择。
控制器、子系统与命名空间将逻辑端点与介质分开
控制器对外提供队列与命令;子系统可以包含多个控制器;命名空间代表逻辑存储空间,可以被共享、调整大小或通过多条路径访问。
这一抽象避免了把物理 SSD 与主机所见的身份混为一谈。远程子系统可以聚合多种介质,并呈现稳定的命名空间。
协议并不决定数据如何放置、复制或保护。RAID、纠删码、精简配置与一致性仍然是围绕 NVMe 的系统功能。
管理命令与输入输出同样重要
管理队列负责标识、队列创建、功能、日志、固件、命名空间与安全。这些命令掌控着常规读写得以实现的环境。
一次管理错误可能删除命名空间、激活错误的固件或更改功耗配置。因此权限、审计与变更窗口至关重要。
管理 I/O 分离简化了架构,但并未降低控制面的重要性。在 fabric 中,这些命令有时与数据走同一网络。
PCIe 让本地路径贴近内存与硬件
NVMe over PCIe 使用共享内存结构与本地总线上的控制器寄存器,为服务器内安装的 SSD 与扩展卡提供直接路径。
物理上的靠近并不保证拓扑简单。设备可能位于 PCIe 交换机之后、另一个 NUMA socket 上,或与其他设备共享 lane。进程、内存与设备的放置方式都会影响性能。
因此系统需要盘点 PCIe 路径,而不仅仅是数一数有多少块盘。意外的延迟可能在到达介质之前,就已源自服务器拓扑。
NVMe over Fabrics 将本地关系变为网络服务
NVMe-oF 的首个版本于 2016 年 6 月与 NVMe-MI 1.0 一同发布,它将命令胶囊与数据传输到远程子系统。主机通过 fabric 建立队列,并看到网络命名空间。
这种分离使容量与性能得以共享。主机可以在不移动数据的情况下更换,系统也可以向多个集群提供资源。
它也带来了新的故障点:NIC、交换机、路由、发现、控制器、认证与多路径策略。存储对网络的依赖,从单纯的连接性变成了把网络当作数据组件。
发现控制器让 fabric 动态化,也集中了一个关键功能
主机可以查询发现控制器,以获取可用的子系统与地址。这避免了手动配置每一条路径,也允许动态添加或移除服务。
但发现机制也可能成为中心依赖。错误的数据可能把主机引向错误的目标端,或阻止其建立连接。缓存、冗余、校验与身份保护都必不可少。
发现服务不应与存储本身的可用性混为一谈。已连接的主机可以继续工作,而新主机可能因无法发现该服务而失败。
NVMe/TCP 让 fabric 可以在普通 IP 网络上使用
TCP 传输于 2019 年标准化,将 NVMe 命令与数据映射到 TCP 连接上。运营商可以使用路由以太网、IP 工具、防火墙与熟悉的网络实践,而无需构建 RDMA fabric。
这种易用性是有代价的。TCP 协议栈、数据复制、中断与 CPU 都会增加开销与尾部延迟。内核优化、卸载(offload)与传输大小对结果影响显著。
该传输还增加了特定的帧格式与摘要(digest)校验,用于检测损坏。当实现与策略允许时,TLS 可以保护会话。
NVMe/RDMA 以 fabric 纪律为代价追求低延迟
RDMA 能以更少的 CPU 干预搬运命令与数据,并利用队列对(queue pair)、内存注册与 NIC 能力。它适合以微秒与 CPU 周期为关键的环境。
RDMA 并非单一的 fabric。RoCE、iWARP 及其他绑定具有不同的行为与要求。拥塞、丢包、PFC 或 ECN、NIC 配置与已注册内存都需要理解。
低延迟基准测试并不能证明运维会简单。fabric 错误可能表现为存储超时,并需要网络与系统交叉的技能。
多路径把冗余变成主机侧的决策
一个命名空间可以通过多个控制器与路径访问。主机系统决定如何负载均衡或切换。Asymmetric Namespace Access(ANA)会标明哪些路径处于优化、非优化或不可用状态。
两条链路的存在并不保证相互独立。它们可能共享交换机、电源、控制器或路由。运营商必须测试每个部件失效的情况,并验证主机多路径的响应。
错误的策略可能把流量发送到慢速路径,或让失效路由持续过久。冗余应当作为行为来观察,而不是作为数字来清点。
预留机制协调共享访问,但不替代集群共识
NVMe 预留允许主机注册并预留命名空间,以避免未授权的并发写入。这在集群与故障转移场景中很有用。
它并不替代共识协议或应用一致性。失效主机可能留下需要清理的预留状态,恢复过程必须防止旧节点继续写入。
恢复需要 fencing(隔离)、代数与身份校验。管理不当的预留可能把保护措施变成不可用故障。
当存储离开 PCIe 时,认证与 TLS 变得必要
本地设备通常享有隐含的物理边界。而在 fabric 上,发起端与目标端必须证明各自的身份,并为适当的通道提供保护。
NVMe 定义了认证机制,NVMe/TCP 可以使用 TLS。其价值取决于密钥、证书、续期、算法与访问策略。支持 TLS 的传输并不一定配置为使用 TLS。
发现平面、管理平面与数据平面必须整体考虑。即使身份认证正确,其权限仍可能过宽。
NVMe-MI 提供独立于应用 I/O 的管理路径
NVMe Management Interface(NVMe-MI)让工具能够发现与管理子系统、读取健康状态、盘点设备,并在主 I/O 路径未被使用的情况下执行某些操作。
这种分离有助于维护与恢复,但也增加了一个需要保护的控制面。管理工具可能读取敏感数据,或大规模修改组件。
NVMe-MI 可以集成到 Redfish 系统及其他管理模型中。集成并不会消除联盟与供应商之间的责任边界。
Zoned Namespaces 将介质约束暴露给主机
ZNS 将容量划分为按顺序写入的区(zone)。通过让软件看到介质的组织方式,它可以减少部分内部垃圾回收工作,并改善耐久性或可预测性。
要获得这种优势,文件系统、数据库或存储层必须理解 zone。为传统块设备设计的应用程序并不会自动从中受益。
ZNS 体现了 NVMe 的内在张力:暴露更多行为可以提高效率,但也提高了软件的可移植性要求。
Key Value、Simple Log Memory 与 Computational Programs 扩展了命名空间
专用命令集允许访问键值、简单的日志内存或靠近存储执行的算力程序。它们旨在为某些工作负载减少转换与数据移动。
它们的采用取决于控制器、驱动程序、库与应用程序。规范中的命令集并不等于所有 SSD 或阵列的通用功能。
协议提供的模型越多,软件就越需要精确发现能力,并具备回退路径。技术上的模块化造就了新的商业矩阵。
合规性提供有用的证明,但并非端到端性能的保证
互操作性计划与测试活动验证主机与控制器之间的具体行为,能够发现仅靠阅读规范难以暴露的偏差。
合规列表并不会衡量每种拓扑下的延迟、耐久性、恢复或安全性。可选功能可能各不相同,驱动-固件矩阵也在不断变化。
采购方应当把合规性视为底线,并针对自己的工作负载、故障场景与升级周期进行测试。
NVMe 将容量与服务器分离,也转移了责任
本地存储常常把设备、主机与系统团队绑在一起。解耦则让众多消费方共享一个资源池,并通过软件改变分配。
同一个事件会让网络、存储、平台、安全与应用团队同时介入。fabric 性能下降可能表现为数据库问题;控制器固件问题可能看似网络中断。
因此经济收益取决于容量利用率与运营能力,而不仅仅是每 TB 的价格。
AI 让存储延迟变成可见的计算成本
训练过程会写入检查点、加载数据集并大规模搬移状态。当数千个加速器在等待时,一次存储抖动可能浪费巨额算力投资。
NVMe/TCP、RDMA、多路径与共享命名空间提供了多种可选架构。选择时必须考虑拥塞、拓扑、吞吐、元数据、恢复与队列行为。
目标不只是峰值基准,而是在同步操作期间可预测的排队延迟与恢复延迟。
2.4 套件既展现了广度,也带来了版本压力
NVMe 2.4 协调了 Base、传输、Boot、管理接口与专用命令集。这种规模表明 NVMe 已发展为一个协议栈,而不仅仅是 SSD 的连接器。
这也让支持声明变得复杂。主机可能支持 Base 2.4,却并不支持每个命令集或每项安全功能;控制器可能提供 TCP,却不具备 RDMA 产品的同等能力。
跟踪工作需要覆盖驱动、固件、操作系统、传输与管理工具的版本。在实践中,这个矩阵本身就是协议的一部分。
NVMe 让存储可组合,但并未让服务变得简单
通用协议降低了一种转换成本:命令模型可以在从 PCIe 迁移到 fabric、或更换供应商时延续。但其他成本依然存在:数据迁移、命名空间身份、安全策略、网络、可观测性与支持。
战略优势在于协议与产品之间更清晰的分离;风险则是在同一个 NVMe 名称背后隐藏着复杂的架构。
存储变得可编程、可分发,但它仍然是完整性系统,在故障时每一层都必须被理解。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
