摘要
- NVM Express, Inc.是管理 NVMe 规范家族的非营利行业联盟,并不制造 SSD、控制器、交换机或存储阵列。
- NVMe 把机械硬盘时代较窄、较串行的队列模型,换成内存中的多组 submission queue 与 completion queue,更适合并行闪存和多核处理器。
- 同一套 controller、subsystem 和 namespace 语义既可在服务器内部通过 PCIe 运行,也可借助 NVMe over Fabrics 跨 TCP 或 RDMA 网络提供服务。
- NVMe 2.x 采用模块化架构。2026 年 8 月 4 日公开的 2.4 规范集合包括 Base、PCIe/RDMA/TCP transport、NVMe-MI、Boot 以及多种专用 command set。
- 协议提高容量的可组合性,却不定义 filesystem、持久性、RAID、erasure coding、网络设计、运营安全或应用一致性。
存储命令可以离开服务器,而不改变基本语言
一个读请求可以发往本地 PCIe SSD 上的 namespace,也可以通过 fabric 发往远端 subsystem。媒体、controller 和路径发生变化,命令、queue 和 namespace 模型却大体保持一致。
这正是存储解耦的基础。容量可集中到共享池中,再按需求分配给 host,而不必把每个 drive 都装进使用它的机箱。
但离开服务器会增加 discovery、网络、multipath、authentication、reconnect 和新的 failure domain。NVMe 让存储成为可编程服务,并没有让拓扑消失。
闪存需要为并行性而设计的协议
传统存储接口受到机械寻道和较少并发操作的影响。闪存可以同时处理大量请求,现代服务器也拥有众多 CPU core。
NVMe 使用位于内存中的 submission queue 与 completion queue。Host 写入 command,通过 doorbell 通知 controller,再通过 interrupt 或 polling 读取 completion。多组 queue 可分配给不同 core 或进程,减少共享锁和竞争。
实际结果仍取决于 controller firmware、PCIe topology、NUMA、queue depth、interrupt 策略和 workload。采用 NVMe 并不自动获得某个固定性能水平。
联盟把协议治理与产品竞争分开
NVMe 工作始于 2000 年代末,1.0 规范在 2011 年发布,NVM Express, Inc.于 2014 年成立。联盟成员来自处理器、闪存、controller、网络、系统和云计算行业。
研究截止时,Google 的 Amber Huffman 担任 President,AMD 的 Curtis Ballard 担任 Treasurer,Microchip 的 David Allen 担任 Secretary;公开董事会列有十三名 promoter 代表。
联盟负责合同、变更和 compliance 框架,成员继续在芯片、firmware、系统设计、支持和性能上竞争。参与标准工作,并不等于某产品实现了所有功能。
NVMe 2.0 把不断膨胀的单一文档拆成模块化家族
随着 PCIe 以外的 transport 和新数据模型出现,所有内容放在一份规范中越来越难维护。2021 年的 NVMe 2.0 重构把 Base、command set 和 transport 分离。
这样,TCP transport 可独立演进,Zoned Namespace 也能扩展而不必修改所有传统 controller。代价是采购者需要管理更复杂的版本组合。
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 等 command set。“NVMe 2.4”不是单一文件。
Submission 与 completion queue 把存储工作靠近 CPU core
Host 把 command 写入 submission queue,controller 把结果写入 completion queue。不同 core 或应用可使用独立 queue pair,从而减少全局锁和上下文切换。
Doorbell 用于通知新工作。Polling 可降低某些延迟,却持续占用 CPU;interrupt coalescing 节省 CPU,也可能增加等待。Queue depth 影响利用率和 tail latency。
更深的 queue 并不总是更好。它可能掩盖饱和、延长排队时间。正确配置必须从 workload 和 SLA 出发。
Controller、subsystem 与 namespace 把逻辑端点同物理介质分开
Controller 暴露 queue 与 command。一个 subsystem 可以包含多个 controller。Namespace 表示逻辑容量,可通过不同 controller 和 path 提供给 host。
Host 看到的身份因此不必对应一块物理 SSD。阵列可组合多种 media 并提供稳定 namespace。
NVMe 不决定数据如何放置、复制或保护。RAID、erasure coding、thin provisioning、snapshot 和应用一致性仍由上层系统负责。
Admin command 与普通 I/O 一样关键
Admin queue 用于识别设备、创建 I/O queue、设置 feature、读取 log、管理 firmware、namespace 和 security。它控制普通读写得以发生的环境。
一条错误 admin command 可能删除 namespace、激活错误 firmware 或改变 power state。权限、审计与 change control 必须覆盖这一层。
Admin 与 I/O 分开有利于架构,却不意味着 control plane 次要。在 fabric 中,两者有时依赖相同网络和身份体系。
PCIe 让本地路径靠近内存和硬件
NVMe over PCIe 通过本地总线上的共享内存结构与 controller register 通信,是服务器内 SSD 和卡的直接路径。
物理接近不等于拓扑简单。Device 可能位于 PCIe switch 之后、连接到另一 NUMA socket 或共享 lane。CPU、memory 和 device 的位置影响性能。
因此不能只统计 drive 数量。异常延迟可能在到达 media 之前,就来自主机内部 PCIe 路径。
NVMe over Fabrics 把本地 controller 关系变成网络服务
NVMe-oF 1.0 与 NVMe-MI 1.0 在 2016 年 6 月 9 日发布。NVMe-oF 把 command capsule 和数据传送到远端 subsystem,host 通过 fabric 建立 queue 并访问 namespace。
这让容量池化和 compute/storage 分离成为可能。Host 可以更换,而数据留在共享系统中。
同时,NIC、switch、route、discovery、controller、authentication 和 multipath 进入 data path。网络不再只是“连接”,而是存储完整性的组成部分。
Discovery controller 简化动态接入,也形成关键依赖
Host 可查询 discovery controller,获得可用 subsystem、地址和服务。这样无需为每个 target 手工配置路径,也便于动态增删资源。
错误信息或 discovery 服务中断,会阻止新连接或把 host 引向错误 target。需要冗余、缓存、身份保护和内容验证。
Discovery 可用性与 data path 可用性不同。已有 session 可能继续工作,而新 host 无法发现服务。
NVMe/TCP 把 fabric 存储带到普通 IP 网络
2019 年标准化的 NVMe/TCP 把 command 与 data 映射到 TCP 连接。运营者可以使用可路由 Ethernet、IP 工具、防火墙和熟悉的网络实践,而不必建设 RDMA fabric。
便利伴随 overhead。TCP stack、copy、interrupt 和 CPU 可能影响 tail latency。Kernel 实现、offload、传输大小和 tuning 都很重要。
Transport 还定义 storage 特定 framing 与 digest,并可使用 TLS。支持 TLS 不等于已经启用或安全运营。
NVMe/RDMA 追求低延迟,同时要求更严格的 fabric 工程
RDMA 通过 queue pair、registered memory 和 NIC offload 减少 CPU 介入,适合 HPC 和 AI 中重视微秒与 CPU 周期的场景。
RDMA 不是一种统一网络。RoCE、iWARP 等 binding 在拥塞、丢包、PFC、ECN 和内存管理上要求不同。
低延迟 benchmark 不意味着简单运营。网络故障可能表现为 storage timeout,需要网络与系统团队共同诊断。
Multipath 把冗余变成 host 的策略选择
一个 namespace 可以通过多个 controller 与 path 访问。Host 决定 load balance 与 failover。Asymmetric Namespace Access 标示 optimized、non-optimized 或 unavailable 路径。
两条链路可能仍共享 switch、controller、电源或 route。真正独立必须通过故障测试验证。
错误 policy 可能长期保留坏路径,或把 I/O 发往较慢路径。冗余应由实际行为衡量,而不是端口数量。
Reservation 协调共享访问,却不能替代集群共识
NVMe reservation 允许 host 注册并保留 namespace,防止未授权 writer 访问,常用于 cluster 和 failover。
它不替代共识协议或应用一致性。故障 host 可能留下 reservation state,恢复过程必须 fence 旧节点,避免它重新写入。
错误恢复会把保护机制变成不可用或数据损坏来源。
存储离开 PCIe 后,认证与 TLS 成为必要条件
本地设备往往继承物理边界。通过网络连接后,initiator 与 target 需要证明身份,并保护适当的 control 与 data channel。
NVMe 定义 authentication 机制,NVMe/TCP 可使用 TLS。实际保障取决于密钥、证书、轮换、算法、访问策略和实现质量。功能存在不代表安全配置完成。
Discovery、admin 与 data plane 必须一起评估。身份真实,也可能拥有过宽权限。
NVMe-MI 提供独立于应用 I/O 的管理路径
NVMe Management Interface 允许工具发现 subsystem、读取健康状态、清点 device 并执行某些管理动作,即使主 I/O path 未被应用使用。
这有利于维护和恢复,却增加另一个高权限接口。集中管理平台可读取敏感信息或批量改变设备。
NVMe-MI 可以与 Redfish 等管理体系集成。集成不代表不同标准组织和供应商责任合并。
Zoned Namespace 把介质约束暴露给 host software
ZNS 把容量分为顺序写入的 zone。软件了解 media 布局后,可能减少 controller 内部 garbage collection,提高 endurance 或可预测性。
收益要求 filesystem、database 或 storage layer 理解 zone。按传统 block device 设计的应用不会自动获得优势。
ZNS 体现了 NVMe 的取舍:暴露更多介质行为可以提高效率,也提高软件可移植成本。
Key Value、Simple Log Memory 与 Computational Programs 扩展 namespace 含义
专用 command set 支持 key/value 访问、简单日志内存或在存储附近执行程序,目标是减少转换和数据移动。
采用依赖 controller、driver、library 和 application。写入规范不意味着所有 SSD 和 array 都提供该功能。
功能越多,capability discovery 和 fallback 越重要。模块化带来灵活性,也形成新的商业兼容矩阵。
Compliance 提供有用证据,却不认证端到端性能
Compliance program 与 interoperability workshop 测试具体 host-controller 行为,能发现仅阅读规范看不出的分歧。
列入清单不代表在每种拓扑下拥有某个 latency、endurance、recovery 或 security 水平。Optional feature 与 driver-firmware matrix 会不断变化。
买家应把 compliance 当作底线,并测试自己的 workload、故障和 upgrade 流程。
存储解耦把容量与服务器分开,也重新分配责任
本地存储往往把 device、host 和系统团队绑定在一起。远端 pool 可服务多个消费者,并通过软件调整分配。
Network、storage、platform、security 和 application 团队因此共享同一 incident。Fabric degradation 可能看起来像 database 问题,controller firmware 问题也可能像网络丢失。
经济收益取决于容量利用率和运营能力,而不只是每 TB 价格。
AI 把存储延迟直接变成计算成本
训练任务要加载 dataset、写 checkpoint、交换大规模状态。当成千上万 accelerator 等待时,存储尾延迟会浪费昂贵计算资源。
TCP、RDMA、multipath 和 shared namespace 提供不同架构。选择需考虑拥塞、metadata、queue behavior、故障与恢复。
目标不应只是峰值 throughput,而应是在同步负载下保持可预测的排队与恢复时间。
NVMe 2.4 展示协议范围,也加大版本压力
2.4 集合协调 Base、transport、Boot、Management Interface 与专用 command set。NVMe 已成为完整 stack,而非单纯 SSD 接口。
Host 可以支持 Base 2.4 却不支持所有 command set;TCP controller 也可能与 RDMA 产品功能不同。支持声明必须具体。
Driver、OS、firmware、transport 和 management tool 形成的矩阵,在实践中就是协议的一部分。
NVMe 让存储可组合,却没有让服务变简单
共同协议降低一种切换成本:command 与 namespace 可以从 PCIe 转向 fabric,或从一家供应商转向另一家。数据迁移、身份、安全、网络、可观测性与支持成本仍然存在。
优势是协议与产品更清楚地分离。风险是“NVMe”这一名称掩盖高度不同的架构。
存储因此更可编程、更可分布,但仍是必须在故障中解释清楚的数据完整性系统。
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
