NVM子系统架构 - ✅ 一、图 12 概览:复杂的 NVM 存储分层结构 (第34页)
你现在正在分析的是 NVMe Base Specification 2.0b 第 2.3 节中的 Figure 12:Complex NVM Storage Hierarchy(复杂存储层级结构)。这部分内容展示了 NVMe 在面向大型系统(如企业 SSD、阵列控制器)时的 复杂分层架构与灵活配置能力。
我们来系统、中文图解地深入讲解它:
✅ 一、图 12 概览:复杂的 NVM 存储分层结构
官方原图以结构化树形排列形式展示如下:
NVM Subsystem
├── Domain A
│ ├── Endurance Group A1
│ │ ├── NVM Set A1b → NS, NS
│ │ └── NVM Set A1e → NS, NS
│ └── Endurance Group A3
│ ├── NVM Set A3f → NS, NS
│ └── NVM Set A3j → NS, NS
├── Domain D
│ ├── Endurance Group D1
│ │ ├── NVM Set D1k → NS, NS
│ │ └── NVM Set D1m → NS, NS
│ └── Endurance Group D5
│ ├── NVM Set D5n → NS, NS
│ └── NVM Set D5p → NS, NS
✅ 二、命名规则(Entity Naming Key)
规格说明中使用了代号系统来辅助描述实体:
名称格式 | 说明 |
---|---|
大写字母 A 、D |
表示 Domain(域) |
数字 1 、3 、5 |
表示 Endurance Group,隶属于所属 Domain |
小写字母 b 、e 、j |
表示 NVM Set,隶属于所属 Endurance Group |
例子说明:
A1b
= Domain A 下的 Endurance Group 1 中的 NVM Set bD5p
= Domain D 下的 Endurance Group 5 中的 NVM Set p
✅ 三、关键结构解释(图解 + 场景)
下面我们用一张结构图(逻辑视角)来简明再现这套结构。
🧠 图解:复杂存储结构(多域多组多命名空间)
graph TD
A[NVM Subsystem] --> A1[Domain A]
A --> D1[Domain D]
A1 --> A1EG1[Endurance Group A1]
A1 --> A1EG3[Endurance Group A3]
A1EG1 --> A1b[NVM Set A1b]
A1EG1 --> A1e[NVM Set A1e]
A1b --> NS1A1b1[Namespace]
A1b --> NS2A1b2[Namespace]
A1e --> NS1A1e1[Namespace]
A1e --> NS2A1e2[Namespace]
A1EG3 --> A3f[NVM Set A3f]
A1EG3 --> A3j[NVM Set A3j]
A3f --> NS1A3f[Namespace]
A3f --> NS2A3f[Namespace]
D1 --> D1EG1[Endurance Group D1]
D1 --> D1EG5[Endurance Group D5]
D1EG1 --> D1k[NVM Set D1k]
D1EG1 --> D1m[NVM Set D1m]
D1k --> NS1D1k[Namespace]
D1m --> NS1D1m[Namespace]
D1EG5 --> D5n[NVM Set D5n]
D1EG5 --> D5p[NVM Set D5p]
D5n --> NS1D5n[Namespace]
D5p --> NS1D5p[Namespace]
✅ 四、配置说明与实现弹性
💡 报告机制是“可选的”:
- Endurance Group / NVM Set 的支持与否 → 可由控制器实现决定
- 如果某系统不支持这些高级分组:
- 也可以只报告 Namespace 层(即简化为单域单组)
📘 这种“可简可繁”的结构,便于适配: - 企业级 SSD:需要多命名空间、多组寿命管理 - 消费级 SSD:只需一个 Namespace、一个 Set 即可
🔧 配置灵活性
- 厂商 可以预先在出厂时就设置好层级结构
- 客户 / 管理员 也可以通过控制命令进行:
- 命名空间的创建 / 删除
- 命名空间与控制器的附加 / 卸载
- 设置命名空间使用的 I/O Command Set(不可变)
✅ 五、I/O Command Set 与 Namespace 关联说明
每一个 Namespace 都 必须绑定一个 I/O Command Set,且绑定关系在创建时就固定。
🎯 举例说明:
Command Set | 命名空间存储模型 | 操作方式 |
---|---|---|
NVM Command Set | LBA(逻辑块地址) | 读写块数据(如扇区) |
Zoned Namespace | 区块分区模型 | 顺序写区块 |
Key Value | 键值对 | 类似对象存储,按 Key 存取数据 |
📌 对应字段在创建 Namespace 时设置,一经设置不可更改!
✅ 六、结构对实际命令的影响
命令 | 与存储结构的关系 |
---|---|
Identify Namespace |
返回所属 NVM Set ID、NSID 等 |
Get Log Page – Endurance Info |
与 Endurance Group 相关 |
Namespace Management |
创建、删除命名空间时需要选择目标 NVM Set |
Sanitize |
可指定作用的 Endurance Group 范围 |
✅ 总结:为何要这样复杂设计?
目的 | 实现方式 |
---|---|
多租户隔离 | 多 Domain、多 Set |
寿命粒度管理 | 引入 Endurance Group |
性能策略控制 | 控制不同 Set 的 QoS、读写策略 |
空间动态调整 | Namespace 动态分配、重绑定控制器 |
命令集多样化 | 每个 NS 独立绑定 I/O Command Set(块、KV、Zone) |
想深入了解的方向?
- 如何创建绑定特定 NVM Set 的命名空间(实际命令字段解释)?
- 如何识别一个 Namespace 属于哪个 Set/Group?
- 用例对比图:单命名空间 vs 多命名空间系统?
告诉我你最感兴趣的点,我可以接着为你分析图解!🚀