NVM子系统架构 - 这一节对于理解整个 NVMe 控制器系统 从硬件媒体到命名空间的映射关系 是非常关键的。 (第33页)
NVME2.0协议解读 1 min read

NVM子系统架构 - 这一节对于理解整个 NVMe 控制器系统 从硬件媒体到命名空间的映射关系 是非常关键的。 (第33页)

Blog Author

非常好!你现在正在阅读 NVMe Base Specification 2.0b 第 2.3 节(NVM Storage Model),内容进入到了存储实体(Storage Entities)层级结构的核心。

这一节对于理解整个 NVMe 控制器系统 从硬件媒体到命名空间的映射关系 是非常关键的。

我们来 深入拆解并用中文逐层讲清楚图 11 的“存储层次结构” —— 配合未来你在使用 Identify 命令、Sanitize 操作、Namespace 管理等方面的使用会更加清晰。


✅ 一、NVMe 存储层级结构:逻辑关系图(图 11)

NVM Subsystem
└── Domain 0
    └── Endurance Group
        └── NVM Set
            └── Namespace 1

这是最简化的层级,代表了 一个存储子系统的基本结构。每一层向下包含下一层,构成了稳定且逻辑清晰的存储体系。


✅ 二、五层实体关系详细解析


🔶 1. NVM Subsystem

最顶层实体,管理多个控制器、端口、域(Domain)和命名空间资源。

  • 包括多个 Controller(I/O、Admin、Discovery)
  • 对外通过一个或多个 Port(与 Fabric 对接)
  • 可含多个 Domain(存储域)
  • 整个系统身份标识的基础单位:通过 NQN 定义

🔶 2. Domain

是最小的、具备独立状态共享和资源隔离能力的逻辑单元

  • 可以有多个 Controller 共享一个 Domain(共享掉电状态、电源状态等)
  • 每个 Domain 可以单独复位、掉电控制等
  • 一个 NVM Subsystem 中可有多个 Domain

📘【对比理解】可以把它想成「逻辑控制组」,比如:

NVM Subsystem = 数据中心的 SSD
Domain 0 = 控制器 A+命名空间集合 A
Domain 1 = 控制器 B+命名空间集合 B

🔶 3. Endurance Group

为了寿命管理而引入的逻辑单位 —— 可以按组管理寿命(TBW)与磨损均衡

  • 每个 Domain 包含多个 Endurance Group
  • 每个 Endurance Group 对应底层的 Media Units(介质块)
  • 可分别报告健康信息(Get Log Page 可获取)

📌 举例:你可以为每种用途分配不同的 Endurance Group,比如:

分组 用途 期望寿命 是否共享
Group A 日志数据 不共享
Group B 冷数据归档 长寿命 可共享

🔶 4. NVM Set

每个 Endurance Group 可被划分为一个或多个 NVM Set

  • 用于控制命名空间的逻辑隔离
  • 每个命名空间只能来自一个 NVM Set(不能跨 NVM Set)

📘 可以通过 Identify Namespace 命令中的 NVMSETID 字段识别其归属


🔶 5. Namespace

主机可见的逻辑卷 —— 可格式化、可挂载、可以读写数据

  • 拥有唯一标识符:NSID
  • 可被一个或多个 Controller 附加(支持共享 / 私有模式)
  • 实际映射到底层的 Media Unit 数据区域

📘 在 PCIe NVMe 中就是 nvme0n1nvme0n2 这样的逻辑块设备


✅ 三、附加概念:Media Unit(未画出)

Media Unit 是 Endurance Group 的最小组成元素,如 NAND 颗粒或页块集合

  • 每个 Media Unit 属于唯一一个 Endurance Group
  • 一组 Media Unit 合成一个 NVM Set,再进一步组成 Namespace

✅ 四、结构关系速记口诀(自上而下):

子系统管域(Domain)
域下管寿命(Endurance Group)
寿命分区域(NVM Set)
区域建卷(Namespace)

✅ 五、图解版总结

graph TD
  A[NVM Subsystem]
  A --> B[Domain 0]
  B --> C[Endurance Group 0]
  C --> D[NVM Set 0]
  D --> E[Namespace 1]
  D --> F[Namespace 2]
  • 每个箭头是“包含”关系
  • 后续你看到多命名空间控制、Sanitize 多组擦除、Get Log 报告中 TBW 信息时,都会追溯回这个结构

✅ 推荐继续阅读章节:

内容 理由
§3.2 各层实体定义详细展开 Domain / EG / Set / NS 完整字段含义
§5.17 Identify 命令与 Namespace / Controller 获取方式 可验证上层结构对应数据
§8.3 Capacity / Endurance 管理机制 Endurance Group 的运行机制

是否需要我:

  • 用图解展示 多个 Namespace 挂载到多个 Controller 的共享与隔离逻辑?
  • 展示 Identify 命令中如何获取 NVM Set 与 Endurance Group 的归属?
  • 解析如何通过 Log Page 查看每个 Endurance Group 的 TBW 与磨损?

告诉我你希望深入哪个点,我可以继续为你讲解图文结合~