错误处理与诊断 - 第430页
我们继续深入分析 NVMe Base Specification Revision 2.0b,聚焦第 8.20 与 8.21 节的内容:
📘 第 8.20(结尾)- Rotational Media(旋转介质)与 Spinup 控制
🔧 条件说明:
如果一个 domain 包含旋转介质(如硬盘),且:
- 该 domain 执行了 NVM Subsystem Reset;
- 并且启用了或禁用了 Spinup Control(电机启动控制)功能;
则行为如下:
| Spinup 控制状态 | 行为描述 |
|---|---|
| Disabled(默认关闭) | 所有 Endurance Groups 的旋转轴 立即启动(spinup) |
| Enabled(启用) | 控制器会延迟旋转,直到收到一个设置为 Operational Power State 的 Set Features(Power Management)命令 |
⚠️ 如果使用 PCIe 传输层,还需要考虑 PCIe Slot Power Control 对电源状态的影响。
📘 第 8.21 - Sanitize Operations(清除操作)
🧩 目的:
执行 Sanitize 操作是为了确保 永久性地销毁 所有用户数据,使其:
- 无法从非易失性存储器中恢复;
- 无法通过缓存或控制器内部 RAM 恢复;
- 不可通过 NVMe-MI 或任何接口访问残留数据。
🔍 清除范围包含:
- 缓存(包括 CMB、PMR 等);
- NVM 媒体的已分配与未分配区域;
- 控制器内存中的所有用户数据副本(不一定包括队列结构);
- 日志页数据(若日志中可能含有敏感数据,会一并清除或修改);
不包括:
- RPMB 区域(Replay Protected Memory Block);
- Boot Partition 引导分区;
- 非用户数据区域的非易失性缓存。
❗ 注意事项:
- Sanitize 只能在 整个 NVM Subsystem 未划分状态(Undivided)下启动;
- 一旦启动,不可中止(包括电源重启后仍会继续);
- 如果中途发生 division(划分事件)或拓扑变化,Sanitize 操作将失败;
- 操作完成后,部分区域若未被实际覆盖,必须确保不可再访问(实现上的永久屏蔽);
- 若成功完成,会触发以下之一:
Sanitize Operation Completed异步事件;Sanitize Operation Completed With Unexpected Deallocation异步事件;- Sanitize 状态可通过
Sanitize Status Log Page查询。
🔧 Sanitize 支持类型(由 SANICAP 指定):
| 类型 | 描述 |
|---|---|
| Block Erase | 通过存储介质底层的擦除命令清除数据(如 Flash 的擦除块操作) |
| Crypto Erase | 通过替换或销毁加密密钥使原始数据不可恢复(仅适用于加密设备) |
| Overwrite | 将固定或变化的数据模式写入所有用户数据区,覆盖旧数据 |
🔑 示例:Overwrite 模式行为(将在后续 Figure 474 中定义)
可能会执行一次或多次以下操作:
- 写入
全 0 / 全 1 / 随机模式 / 指定模式; - 可指定不同 Passes(遍数)或模式组合;
⚙️ 控制器属性(SANICAP 补充):
| 字段 | 作用 |
|---|---|
| NODMMAS(No-Deallocate Modifies Media After Sanitize) | 指示:若 Sanitize 操作成功但未触发媒体去分配行为(deallocate),控制器是否依然会修改媒体 |
💡 补充:
- Sanitize 命令(参考第 5.24 节)是异步提交,完成并不代表数据已清除;
- 实际操作是否清除 Controller Memory Buffer 内的 Submission Queue、Completion Queue,是实现相关的,不强制。
🔄 小结:Sanitize 操作流程图
┌────────────┐
│ 主机发起 │
│ Sanitize命令│
└────┬───────┘
▼
┌────────────┐
│ 操作类型确认│
│ Block/Crypto/│
│ Overwrite │
└────┬───────┘
▼
┌────────────┐
│ 执行后台清除│
│(可跨重启) │
└────┬───────┘
▼
┌────────────┐
│ 更新日志页 │
│ 触发事件通知│
└────────────┘
是否需要我继续讲解下一小节 8.22 Persistent Event Log(持久事件日志)?
或者你希望我将第 8.16 - 8.21 小节进行结构化总结或转换为学习笔记 PDF?