NVM子系统架构 - ✅ 一、图 12 概览:复杂的 NVM 存储分层结构 (第34页)
NVME2.0协议解读 1 min read

NVM子系统架构 - ✅ 一、图 12 概览:复杂的 NVM 存储分层结构 (第34页)

Blog Author

你现在正在分析的是 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)

规格说明中使用了代号系统来辅助描述实体:

名称格式 说明
大写字母 AD 表示 Domain(域)
数字 135 表示 Endurance Group,隶属于所属 Domain
小写字母 bej 表示 NVM Set,隶属于所属 Endurance Group

例子说明:

  • A1b = Domain A 下的 Endurance Group 1 中的 NVM Set b
  • D5p = 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 多命名空间系统?

告诉我你最感兴趣的点,我可以接着为你分析图解!🚀