管理命令集 - ✅ 一、Endurance Group 操作机制 (第165页)
我们继续深入分析 NVM Express® Base Specification, revision 2.0b 中的第154页内容,特别是关于 Endurance Group 和 NVM Set 操作的细节以及 容量验证机制。
✅ 一、Endurance Group 操作机制
1. 容量不足的错误处理(Endurance Group)
如果在创建 Endurance Group 时:
- 请求的容量超出了以下任一限制:
- Unallocated NVM Capacity (UNVMCAP):在 Identify Controller 数据结构中定义的未分配容量;
-
Max Endurance Group Capacity (MEGCAP):在 Domain Attributes Entry 中定义的最大耐久组容量;
-
控制器将:
- 中止命令,并返回 Insufficient Capacity(容量不足)状态;
- 如果 Error Information Log Page 被支持,控制器将指示能够创建的最大 Endurance Group 容量(字节数)。
2. 删除 Endurance Group 操作
- 如果
Element Identifier字段指定了 0h 或 不存在的 Endurance Group ID,控制器应中止命令,并返回 Invalid Field in Command 状态。
✅ 二、NVM Set 操作机制
1. 创建 NVM Set 时
- 控制器需要为新的 NVM Set 分配一个 非零且未分配的 NVM Set Identifier,并返回该标识符。
- 如果没有可用的 NVM Set Identifier,则命令应中止,并返回 Identifier Unavailable(标识符不可用)状态。
2. 容量验证
如果 Capacity Lower 和 Capacity Upper 字段的容量要求超过了指定 Endurance Group 的未分配容量:
- 控制器:
- 如果 Error Information log page 支持,则指示可以创建的最大 NVM Set 容量(字节数);
- 中止命令,并返回 Insufficient Capacity(容量不足)状态。
3. 选择 Endurance Group
- 如果
Element Identifier字段为 0h,控制器将从现有的 Endurance Group 中选择一个,并在该组内创建 NVM Set。
4. 媒体单元支持的差异
- 支持 Media Units:控制器从 Endurance Group 中选择适当的 Media Units 分配给 NVM Set。
- 不支持 Media Units:控制器从 Endurance Group 中选择 NVM 存储容量来分配给 NVM Set。
5. 删除 NVM Set
- 如果
Element Identifier字段指定了 0h 或 不存在的 NVM Set ID,控制器将中止命令,并返回 Invalid Field in Command 状态。
6. 不支持 NVM Sets 的情况
- 如果控制器不支持 NVM Sets,任何涉及 Create NVM Set 或 Delete NVM Set 的操作都将被拒绝,返回 Invalid Field in Command 状态。
✅ 三、命令完成
-
在执行完 Capacity Management 命令 后,控制器将向 Admin Completion Queue 提交一个 Completion Queue Entry (CQE),指示命令的状态。
-
Capacity Management 命令的特定状态值定义见 Figure 152。
🧠 学习总结
| 操作类型 | 主要行为 | 错误处理 |
|---|---|---|
| Create Endurance Group | 创建 Endurance Group,指定容量 | 容量不足则中止,返回 Insufficient Capacity |
| Delete Endurance Group | 删除 Endurance Group,及其所有 NVM Sets | 指定的组不存在时返回 Invalid Field in Command |
| Create NVM Set | 创建 NVM Set,分配给 Endurance Group | 标识符不可用时返回 Identifier Unavailable |
| Delete NVM Set | 删除指定的 NVM Set | 标识符不可用时返回 Invalid Field in Command |
| 容量验证 | 通过 UNVMCAP、MEGCAP 进行容量验证 | 超过限制时返回 Insufficient Capacity |
| 媒体单元支持 | 支持时从 Endurance Group 选择 Media Units | 不支持时选择 NVM 容量 |
扩展理解建议
如果你想继续深入以下内容:
- Capacity Management 命令的完整数据结构和 CQE 的详细解析;
- 错误日志的结构和 Capacity Information Log Page;
- Endurance Group 和 NVM Set 的具体创建与删除流程,以及如何通过实际命令进行操作。
欢迎继续提问,我可以为你提供更详细的示例,帮助你在实际应用中理解和实现这些功能。