管理命令集 - ✅ 一、Endurance Group 操作机制 (第165页)
NVME2.0协议解读 1 min read

管理命令集 - ✅ 一、Endurance Group 操作机制 (第165页)

Blog Author

我们继续深入分析 NVM Express® Base Specification, revision 2.0b 中的第154页内容,特别是关于 Endurance GroupNVM 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 LowerCapacity 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 SetDelete 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 的具体创建与删除流程,以及如何通过实际命令进行操作。

欢迎继续提问,我可以为你提供更详细的示例,帮助你在实际应用中理解和实现这些功能。