特性配置 - 深入分析:Sanitize 命令中的字段与行为 (第297页)
NVME2.0协议解读 1 min read

特性配置 - 深入分析:Sanitize 命令中的字段与行为 (第297页)

Blog Author

深入分析:Sanitize 命令中的字段与行为

Sanitize 命令的作用与工作流程

Sanitize 命令是用于执行数据清除操作的重要命令,涵盖了块擦除(Block Erase)、覆盖擦除(Overwrite)、加密擦除(Crypto Erase)等不同类型。该命令设计为后台操作,即命令的完成并不表示数据擦除操作已完成,擦除过程将在后台进行。

命令 Dword 10 中的关键字段

  1. Allow Unrestricted Sanitize Exit (AUSE)
  2. 该字段决定了 Sanitize 操作是否在无约束的完成模式下执行。如果设置为 1,则表示 Sanitize 操作将在无约束模式下执行。如果设置为 0,则表示在限制模式下执行擦除操作。如果 Sanitize Action 字段被设置为 001b(即退出故障模式),则此位被忽略。

  3. Sanitize Action (SANACT)

  4. SANACT 字段决定了擦除操作的类型,具体操作值如下:
    • 000b:保留
    • 001b:退出故障模式
    • 010b:开始块擦除操作
    • 011b:开始覆盖擦除操作
    • 100b:开始加密擦除操作
    • 101b to 111b:保留

命令 Dword 11 中的关键字段

  1. Overwrite Pattern (OVRPAT)
  2. 如果 Sanitize Action 字段被设置为 011b(即覆盖擦除操作),此字段指定了一个 32 位的覆盖模式,用于擦写操作。此字段仅在进行覆盖擦除时有效,具体覆盖模式会根据设置的值进行写入。

命令完成与背景执行

  • 命令完成
  • Sanitize 命令完成时,控制器会将完成队列条目发送到 Admin Completion Queue,指示命令执行的状态。由于擦除操作在后台进行,命令的完成并不意味着数据擦除已完成。相反,控制器会更新 Sanitize Status 日志页面,并在命令完成后记录相关状态。

命令特定状态值

Sanitize 命令的特定状态值(如图 305 所示)指示不同的错误或限制条件,具体包括:

  1. 0Bh - 固件激活需要常规重置:
  2. 如果固件激活挂起并且需要常规重置,则无法启动 Sanitize 操作。

  3. 10h - 固件激活需要 NVM 子系统重置:

  4. 如果固件激活挂起并且需要 NVM 子系统重置,则无法启动 Sanitize 操作。

  5. 11h - 固件激活需要控制器级重置:

  6. 如果固件激活挂起并且需要控制器级重置,则无法启动 Sanitize 操作。

  7. 20h - 命名空间是写保护的:

  8. 如果命名空间被写保护,则禁止执行 Sanitize 操作(参见 8.12 节)。

  9. 23h - 启用持久内存区域时禁止 Sanitize

  10. 如果启用了持久内存区域,则禁止进行 Sanitize 操作。

总结

Sanitize 命令是一个关键的命令,主要用于数据清除。它涉及多种擦除模式,并且严格限制与固件激活、写保护、持久内存区域等其他功能的交互。通过背景执行方式,擦除操作不会在命令完成时立即影响数据,但会在后台持续进行,以确保数据完全清除。通过理解这些字段与操作,用户可以有效地控制和管理数据擦除过程,确保存储介质的安全性。