NVM子系统架构 - 这一节对于理解整个 NVMe 控制器系统 从硬件媒体到命名空间的映射关系 是非常关键的。 (第33页)
非常好!你现在正在阅读 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 中就是 nvme0n1
、nvme0n2
这样的逻辑块设备
✅ 三、附加概念: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 与磨损?
告诉我你希望深入哪个点,我可以继续为你讲解图文结合~