管理命令集与操作 - 第181页
NVME2.0协议解读 1 min read

管理命令集与操作 - 第181页

Blog Author

我们现在深入分析 NVM Express® Base Specification Revision 2.0b 第 170 页内容,聚焦于:


✅ Format NVM 命令 – 命令字段细节(Command Dword 10)

以及

✅ 相关状态码详解(Figure 190)


✅ 一、Command Dword 10 字段解析(图 189)

Format NVM 命令的控制字段集中在 Dword 10,不同的位位于不同子功能域中:


📌 Bits 11:09 – Secure Erase Settings(SES)

类型 描述
000b 无擦除 不请求任何安全擦除
001b 用户数据擦除(User Data Erase) 擦除所有用户数据。擦除后的数据可能是全 0、全 1,或其他未定义状态。若数据原本已加密,控制器可以选择使用密钥删除方式进行擦除(即等效于加密擦除)。
010b 加密擦除(Cryptographic Erase) 删除加密密钥,所有用该密钥加密的数据即被“立即销毁”
011b – 111b 保留 不可使用,使用将导致命令失败

✅ 所有安全擦除都会影响 整个命名空间或所有命名空间,包括: - 暴露的 LBA(可访问的逻辑块地址) - 缓存中的数据 - 已释放但未重新写入的数据块


📌 Bits 08 – PIL(Protection Information Location)

  • 该字段是I/O Command Set 特定定义字段(如 Zoned Namespace、NVM Command Set)
  • 表示 PI 信息的位置,例如嵌入 LBA 数据中,还是与 metadata 分离存储

📌 Bits 07:05 – PI(Protection Information)

  • 用于控制是否启用 端到端数据保护机制(PI Type 1, 2, 3 等)
  • 同样属于 I/O Command Set 特定定义字段
  • 不同类型的 PI 对 metadata 长度与结构有不同要求

📌 Bit 04 – MSET(Metadata Settings)

  • 控制是否使用 metadata 以及如何布局
  • 例如 metadata 是否包含保护信息字段
  • 属于 I/O Command Set specific 定义

📌 Bits 03:00 – LBA Format Lower(LBAFL)

  • 指定 用户数据格式(User Data Format) 的格式索引的低 4 位
  • 与 Bits 13:12(LBAFU)一起组成完整的 Format Index(最多支持 6-bit 索引,即 0~63)

格式定义参见: - Identify Namespace 数据结构 - 所选 I/O Command Set 的 Format Data Structure


✅ 二、命令完成行为与状态码(图 190)

Format NVM 命令完成后,控制器将把状态信息写入 Admin Completion Queue 中。

📌 Format NVM – Command Specific Status 值:

状态码 含义
0Ah Invalid Format:指定的格式无效。可能原因:
1. 指定了不存在的 Format Index
2. 启用了 Protection Information,但 metadata 资源不足
3. 当前配置下不支持指定格式(例如 LBA + PI + Metadata 组合不兼容)
0Ch Command Sequence Error:命令在多命令序列中存在协议错误(如命令顺序不正确或条件不满足)
15h Operation Denied:由于权限不足,操作被拒绝(可能涉及 TCG 安全状态)
20h Namespace is Write Protected:命名空间处于写保护状态,不能执行格式化(详见 8.12)
86h Access Denied:访问命名空间或用户数据被拒绝,原因通常是安全策略限制,如:
- 未认证
- 不在访问控制列表中
- TCG 相关策略限制

✅ 三、学习要点与建议总结

模块 要点
Secure Erase(SES) 明确区分用户数据擦除 vs 加密擦除,注意保留值不可用
Format Index LBAFU + LBAFL 组成完整 Format Index,需验证是否为支持格式
PI、MSET 等字段 均属于 I/O Command Set Specific 定义,需结合具体 Command Set(如 NVM、ZNS)阅读
状态码应对 根据不同错误码定位问题,比如配置错误(0Ah)、权限限制(15h/86h)、命名空间状态问题(20h)

如果你希望我帮你整理一张“Format NVM 命令字段设置与状态码对照表”或图解命令执行逻辑(如加密擦除流程图),我可以马上为你可视化总结一下。需要吗?