管理命令集与操作 - 第181页
我们现在深入分析 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 命令字段设置与状态码对照表”或图解命令执行逻辑(如加密擦除流程图),我可以马上为你可视化总结一下。需要吗?