管理命令集 - 📌 一、命令概述(Capacity Management Command) (第163页)
我们现在来深入解析 NVMe 2.0b 基础规范第 152 页的重点内容——Capacity Management(容量管理)命令,它是高级 NVMe 管理机制中非常关键的一部分,允许主机对 Endurance Groups 和 NVM Sets 进行配置与动态管理。
📌 一、命令概述(Capacity Management Command)
🧠 目的:
主机使用该命令来实现以下功能: - 选择预定义的容量配置(固定容量管理) - 创建 / 删除 Endurance Group(耐久组) - 创建 / 删除 NVM Set(NVM 子集合)
这在企业级 SSD 中非常有用,尤其是 对存储分区进行性能隔离、寿命管理或虚拟分区化部署 时。
🧩 二、命令结构解析
该命令使用:
- CDW10(Command Dword 10)
- CDW11(Command Dword 11)
- CDW12(Command Dword 12)
所有其他命令特定字段均保留。
🔹 CDW10(见 Figure 149)
| Bit 区间 | 字段 | 描述 |
|---|---|---|
| 31:16 | Element Identifier |
此字段根据 Operation 类型而异:可能是某个配置 ID、域 ID、组 ID、Set ID 等(详见下方各操作定义)。 |
| 15:04 | Reserved |
保留 |
| 03:00 | Operation |
要执行的操作类型,共支持 5 种操作(值 0h~4h)。 |
🔀 三、Operation 操作类型详解
| 值 | 操作类型 | 功能 | Element Identifier 含义 |
|---|---|---|---|
| 0h | Select Capacity Configuration | 主机选择一个已有的配置来配置 Endurance Groups 和 NVM Sets(适用于固定容量管理)。 | Capacity Configuration Identifier(见 Figure 251) |
| 1h | Create Endurance Group | 在某个 Domain 中创建一个新的 Endurance Group,容量通过 CDW11 和 CDW12 指定。 | Domain Identifier(如果为 0h,则由控制器决定创建在哪个域) |
| 2h | Delete Endurance Group | 删除指定的 Endurance Group,及其包含的所有 NVM Sets 和命名空间。 | Endurance Group Identifier |
| 3h | Create NVM Set | 在某个 Endurance Group 中创建 NVM Set,容量也由 CDW11、CDW12 指定。 | Endurance Group Identifier(0h = 控制器选择) |
| 4h | Delete NVM Set | 删除指定的 NVM Set,以及其中所有命名空间。 | NVM Set Identifier |
| 5h–Fh | 保留 | - | - |
✅ 异常处理提示:
如果Element Identifier为非 0 且找不到对应对象,控制器将返回 Invalid Field in Command 错误码。
🔹 CDW11(见 Figure 150)
| Bit 区间 | 字段 | 描述 |
|---|---|---|
| 31:00 | Capacity Lower |
容量值的 低 32 位,单位为字节(byte)。 |
🔹 CDW12(见 Figure 151)
| Bit 区间 | 字段 | 描述 |
|---|---|---|
| 31:00 | Capacity Upper |
容量值的 高 32 位,和 Capacity Lower 组合为 64 位字节数。 |
⚠ 仅当
Operation是Create Endurance Group或Create NVM Set时,此字段有效。
🎯 实际应用场景
| 场景 | 实现方法 | 相关字段 |
|---|---|---|
| 在特定 Domain 中创建一个容量为 1TB 的 Endurance Group | Operation = 1h,Element Identifier = Domain ID,CDW11/12 = 1TB |
CDW10–12 |
| 删除某个 NVM Set(比如 ID = 3) | Operation = 4h,Element Identifier = 3 |
CDW10 |
| 应用一套预定义的容量分配配置 | Operation = 0h,Element Identifier = 预设配置 ID |
CDW10 |
✅ 小结与学习建议
| 维度 | 内容 |
|---|---|
| 📌 命令目的 | 管理 Endurance Group / NVM Set 的配置、创建与删除 |
| 🔧 核心字段 | CDW10(操作码 + ID),CDW11/CDW12(容量值) |
| 🔄 支持操作 | 固定配置选择、创建 / 删除 EG 或 NVM Set |
| 💥 注意事项 | 元素 ID 无效会导致 Invalid Field 错误 |
| 🧩 延伸内容 | 与 Section 8.3 配合使用,涉及物理域划分、Set 分配机制 |
如果你希望我带你深入讲解: - Endurance Group / NVM Set 的底层结构原理? - 可变容量 vs 固定容量管理区别? - 示例命令封包结构(例如 NVMe-MI 或 MCTP 封装)?
欢迎继续发问,我可以从应用到协议细节再到命令格式,一步步带你透彻掌握。你想看哪一部分?