持久内存与安全机制 - 第382页
NVME2.0协议解读 1 min read

持久内存与安全机制 - 第382页

Blog Author

我们继续对 NVMe Base Specification 2.0b 第 371 页 的内容进行中文深入讲解,聚焦于:

8.12 命名空间写保护(Namespace Write Protection)之控制器行为、命令交互和限制机制


🧭 继续解读:控制器的职责与主机交互

✅ 控制器的职责包括:

  1. 通过 Identify Controller Data Structure 中 NWPC 字段报告支持级别
    (NWPC = Namespace Write Protection Capabilities)

  2. 必须支持 Namespace Write Protection Config Feature
    → 可通过 Get Features / Set Features 命令读取或修改当前写保护状态
    → 对应 Feature Identifier 详见 5.27.1.28 节


🔐 如果控制器支持以下任意一种状态:

  • Write Protect Until Power Cycle
  • Permanent Write Protect

必须支持 RPMB 中的 Namespace Write Protection Authentication Control 字段
(详见第 8.18 节,后续会专门解读)


⚠️ 关键告知:

  • 如果因为命名空间进入写保护状态(不论是人为还是自动如断电后转为 write protect),
  • 不能将此视为介质故障
  • 控制器不应将 SMART/Health 中的 Critical Warning 字段 Bit 3 设置为 '1'

📌 主机应如何查询当前命名空间的写保护状态?

  • 使用 Get Features 命令
  • 指定 Feature Identifier 为 Namespace Write Protection Config
  • 即可查询当前命名空间的保护状态

✅ 写保护在全控制器内生效

  • 如果 NVM 子系统中任一控制器支持 Namespace Write Protection 功能
  • 那么该写保护状态 将由所有连接至该命名空间的控制器强制执行
  • 写保护状态是全局一致的

🧪 8.12.1.1 命名空间写保护下的命令行为交互

即使命名空间被写保护,部分命令依然允许正常处理


✅ 允许执行的命令(Figure 431)

🛠️ Admin 命令集

  • Device Self-Test
  • Directive Send但不能修改介质
  • Directive Receive但不能申请 Stream 资源
  • Get Features
  • Get Log Page
  • Identify
  • Namespace Attachment
  • Security Receive/Send
  • Set Features(不能改变为禁止状态)
  • Vendor Specific

💾 NVM 命令集

  • Compare
  • Dataset Management(如:Trim/Delete 等)
  • Read
  • Reservation Register / Report / Acquire / Release
  • Flush
  • Verify

❗关键说明:

命令 说明
Flush 即使处于写保护,仍成功返回;但不执行写入。
Directive Receive 如果尝试为写保护命名空间申请 Stream 资源,则返回错误码:Namespace is Write Protected
Set Features 允许执行,但不能通过它来清除写保护(受限于认证控制)

将被拒绝的命令类型

以下命令在命中任一情况时将 被 Abort,并返回状态码:Namespace Is Write Protected

🧨 三种会被拒绝的情况:

  1. 命令直接作用于一个 处于写保护状态的 NSID
  2. 命令作用于一个正常命名空间,但其副作用会影响一个处于写保护的命名空间

    例如:Format NVM 同时格式化多个命名空间

  3. 命令未指定 NSID,但其行为影响所有命名空间

    例如:Sanitize 命令全盘擦除 —— 会影响写保护命名空间,因此被拒绝


📘 小结回顾

项目 内容
状态可配置性 通过 Set Features 和 NWPC 字段控制
查询方式 使用 Get Features 命令获取当前写保护状态
认证机制 控制进入 Write Protect Until Power Cycle 和 Permanent Write Protect
被允许的命令 大部分只读命令 + 特定管理命令
被禁止的命令 任何可能写入或擦除写保护命名空间的命令
SMART 不报警 若由于写保护导致只读,不设置 Critical Warning Bit3=1

如果你希望我 逐条拆解写保护相关命令字段(如 Set Features 命令结构、具体位控制逻辑)、或者示例 NVMe 命令封包分析,我可以进一步展开。

要继续解析第 8.13 节吗?或者深入 8.18 的 RPMB 写保护认证机制?你说了算!