NVM子系统与控制器架构 - 第36页
NVME2.0协议解读 1 min read

NVM子系统与控制器架构 - 第36页

Blog Author

非常好,现在你进入了 NVMe Base Specification 2.0b 的 第 2.3 节存储模型部分 的下一种典型结构示例 —— 图 14:Two-Namespace NVM Subsystem(双命名空间的存储子系统)

这是比上一节图 13(单命名空间)略复杂的进阶模型,我们接下来从结构关系、功能意义、主机操作映射几个方面为你中文系统讲解与分析


✅ 一、图 14 系统结构简图

NVM Subsystem (SSD)
├── Domain 0
│   └── Endurance Group 1
│       └── NVM Set 1
│           ├── Namespace 1
│           └── Namespace 2
└── Port
    └── Controller

✅ 二、结构层级逐项说明

层级 中文解释 说明
NVM Subsystem 存储子系统(如 SSD) 顶级容器,包含所有控制器、端口、命名空间
Domain 0 控制域 0 逻辑独立运行单元,可独立复位、电源管理等
Endurance Group 1 寿命管理组 所有存储介质都在这组内,管理 TBW、SMART 等
NVM Set 1 非易失内存集合 将 EG 拆分给命名空间使用的分配单元
Namespace 1 & 2 命名空间 主机可见卷,例如 nvme0n1, nvme0n2
Port → Controller 端口/控制器 控制器通过端口与主机通信、执行命令

✅ 三、和图 13 的区别

项目 图 13(单命名空间) 图 14(双命名空间)
命名空间数量 1 个 2 个
Namespace 分布 NVM Set 1 → NS1 NVM Set 1 → NS1 + NS2
主机可访问卷 只有一个设备节点(如 nvme0n1 两个设备节点(如 nvme0n1, nvme0n2
典型应用 简单存储使用 卷分区、多用途隔离、系统盘 + 数据盘

✅ 四、主机视角下的行为表现

🧠 主机通过控制器执行以下操作:

操作 映射到结构
Identify Namespace 1 / 2 获取每个命名空间的容量、格式、LBA 等
Read / Write / Format 对应命名空间独立操作,不影响彼此
SMART Health 统一来自于 Endurance Group 1
Sanitize 作用于整个 Endurance Group,会影响两个命名空间数据
Attach / Detach Namespace 可选支持,一个控制器可动态附加命名空间

✅ 五、图解对比:图 13 vs 图 14

🔹 图 13 – 单命名空间

graph TD
    A[NVM Subsystem] --> B[Domain 0]
    B --> C[Endurance Group 1]
    C --> D[NVM Set 1]
    D --> E[Namespace 1]
    A --> F[Port]
    F --> G[Controller]
    G --> E

🔹 图 14 – 双命名空间

graph TD
    A[NVM Subsystem] --> B[Domain 0]
    B --> C[Endurance Group 1]
    C --> D[NVM Set 1]
    D --> E[Namespace 1]
    D --> F[Namespace 2]
    A --> P[Port]
    P --> G[Controller]
    G --> E
    G --> F

一个控制器挂载两个命名空间,主机端会看到两个独立的块设备。


✅ 六、命名空间之间的独立性 vs 共享性

属性 Namespace 1 Namespace 2
LBA 地址空间 完全独立 完全独立
Format 操作 互不影响 互不影响
命令提交队列(I/O Queue) 可共享 可共享
底层 NAND Flash 可重叠(如共享同一 NVM Set)

📝 注意:虽然逻辑上是独立的命名空间,但如果底层共享一个 NVM Set,当做 Sanitize 等操作时会同时影响两个。


✅ 七、使用场景举例

  • 一块 SSD 分为:
  • Namespace 1:给操作系统作为系统盘
  • Namespace 2:给容器存放数据卷
  • 或者:
  • Namespace 1:普通数据盘
  • Namespace 2:用于 PCIe PASSTHROUGH 设备直通到 VM

✅ 八、后续建议学习点

推荐章节 理由
§5.23 – Namespace Management 如何创建多个 Namespace,如何绑定到控制器
§5.17 – Identify 如何用 Identify 命令读取命名空间结构和容量
§8.11 – Namespace Management 高级管理机制,如命名空间写保护、重命名等

✅ 总结一句话

图 14 展示的是 NVMe 支持多命名空间的最基础实现:同一个控制器、同一个 NVM Set、挂载多个 Namespace,这是实际中非常常见的使用方式,是迈向多租户、多虚拟化系统的第一步。


你是否想继续深入:

  • 如何通过命令创建第二个命名空间?
  • 一个命名空间是否可以动态挂载到不同控制器?
  • 如何在多 Namespace 系统中设置读写权限、QoS?

欢迎告诉我你关注的点,我可以继续为你详细拆解图文结合~