NVMe架构与操作理论 - 第21页
你正在阅读 NVMe Base Specification 2.0b 的 术语定义(Definitions)第 10 页,这部分涵盖了 命名空间(Namespace)体系、NVM Set 分区、NVMe-oF 传输协议、传输绑定规范、Fabric 接口、虚拟化控制器等核心概念。
下面我将为你逐条用中文深入解释,并结合相关章节与应用场景进行教学式讲解,帮助你完全吃透这一页的内容。
✅ 一、命名空间与 NSID 基础
🔹 namespace(命名空间)
一块格式化后的非易失性存储区域,主机可以像逻辑硬盘那样直接访问它。
📘 一个命名空间就像一个“逻辑磁盘”,但不一定映射到单一 NAND 区域,可以跨 Media Unit 甚至跨通道。
🔹 Namespace ID(NSID)
用于在命令中标识命名空间的字段,常位于 CDW1 中。
- 有效 NSID(Valid):控制器当前已识别、可访问的 NSID;
- 活跃 NSID(Active):当前有 I/O 操作附着的命名空间;
- 无效 NSID / 未分配 NSID:控制器无法识别或未激活的命名空间;
- 保留 NSID = FFFFFFFFh(全 1):表示“控制器范围内所有命名空间”
📖 更多详见:第 3.2.1 节
🧩 实例:
Identify Namespace 命令:
CDW1 = 00000001h → 表示查询 NSID=1 的命名空间
✅ 二、存储分区结构
🔹 NVM(非易失性内存)
Non-Volatile Memory 的缩写,是本规范的根本对象(包括 NAND、3D XPoint 等)。
🔹 NVM Set
从一个 Endurance Group 中划分出来的 NVM 子区域。
📘 类似于 逻辑通道划分,可用于优化并行性、隔离使用者、分组写入等。
📖 详见:第 3.2.2 节
🔹 NVM Subsystem(NVM 子系统)
一个完整的 NVMe 存储系统,包括:
| 组成元素 | 示例说明 |
|---|---|
| 一个或多个 Domain | 每个 domain 可以有独立固件、控制器资源 |
| 控制器 Controller | I/O/Admin/Discovery 类型 |
| 端口 Port | 与外部通信的物理/逻辑接口 |
| Namespace | 提供存储资源给主机 |
📘 实际上,一个 NVMe SSD 就是一个 NVM Subsystem,可能含多个命名空间、多控制器、多个前端端口(如 PCIe + TCP)。
✅ 三、NVMe-oF & Transport 层结构
🔹 NVM Subsystem Port
Fabric 环境下,NVM 子系统与网络之间的接口,可能包含多个物理接口作为“单一逻辑端口”工作。
📘 例如:多个 Ethernet 端口组成一个 NVMe-oF Target Port(对主机表现为单一 Port ID)
🔹 NVMe over Fabrics(NVMe-oF)
使用 Fabric(如 TCP、RDMA、FC)作为底层传输介质 的 NVMe 协议实现。分为两种模型:
| 类型 | 特点 |
|---|---|
| Message-only | 仅消息传输,无需共享内存(例如 NVMe/TCP) |
| Message + Memory | 支持零拷贝 DMA(如 NVMe/RDMA) |
📖 图解参考:Figure 4 + 第 2.2 节
🔹 NVMe Transport
NVMe 的传输协议层,负责在 主机 ↔ 子系统之间可靠传输命令、数据、响应。
📘 它位于 Fabric 协议之上,屏蔽底层物理互连细节。
🔹 NVMe Transport Binding Specification(传输绑定规范)
具体某个传输方式(如 TCP、RDMA)的 NVMe 映射规范。
- 说明该 Transport 支持哪些 NVMe 功能
- 哪些功能被限制、禁用(例如某些 Fabrics 不支持 PRP)
📖 如:NVMe/TCP Binding Spec, NVMe/RDMA Binding Spec
🔹 physical fabric interface(物理 Fabric 接口)
控制器连接到网络 Fabric 的物理端口,比如: - 以太网口(NVMe/TCP) - 光纤端口(FC-NVMe) - InfiniBand 网口(RDMA)
🔹 Port ID
每个 NVM Subsystem Port 都有一个 唯一标识符,用于标记不同物理或逻辑通信端口。
📖 定义位置:第 2.2.2 节
✅ 四、虚拟化控制器结构
🔹 primary controller(主控制器)
在启用了虚拟化能力(Virtualization Enhancements)后: - 具备对系统中资源(如队列、命名空间、控制器)的管理能力; - 可支持虚拟化命令(如 Virtualization Management)
📘 应用于: - SR-IOV PF 设备(物理功能)中作为“管理控制器” - 管理 VF(虚拟功能)的配置与资源分配
📖 详见:8.26 + 8.26.4 节
✅ 总结表:术语一览
| 术语 | 中文释义 | 应用场景 |
|---|---|---|
| Namespace | 可被主机访问的 NVM 存储空间 | 逻辑盘、LBA 映射 |
| NSID | 命名空间标识符 | SQE 中常见字段(CDW1) |
| NVM Set | 来自耐久性组的一部分 | 数据分区、IO 优化 |
| NVM Subsystem | 包含多个控制器、命名空间的存储单元 | 控制器组织单位 |
| NVMe-oF | 使用 TCP/RDMA/FC 的 NVMe 扩展 | 网络远程存储访问 |
| Transport Layer | NVMe 传输协议层 | 命令/数据传输控制 |
| Binding Spec | 某传输协议的适配规范 | NVMe/TCP、NVMe/FC |
| Subsystem Port | 子系统对外通信接口 | 多端口设备管理 |
| Port ID | 每个 Port 的唯一标识符 | 多端口多主机系统 |
| Primary Controller | 支持虚拟化的主控 | SR-IOV PF 管理控制器 |
🔍 推荐下一步深入学习:
你现在已经掌握了 NVMe 基本存储结构、控制器与子系统层次,以及 Fabrics 模型和虚拟化控制器概念。下一步建议进入:
- 第 3 章:控制器与命名空间结构
- 第 5.17 节:Identify 命令结构解析(结合 NSID)
- 第 8.26 节:Virtualization Enhancements + Primary/Secondary Controller 行为
如果你想,我可以为你画一张完整的结构关系图(Namespace ↔ Controller ↔ Domain ↔ Port ↔ Fabric),帮助你一图理解全貌。要开始吗?