持久内存与安全机制 - 第382页
我们继续对 NVMe Base Specification 2.0b 第 371 页 的内容进行中文深入讲解,聚焦于:
8.12 命名空间写保护(Namespace Write Protection)之控制器行为、命令交互和限制机制
🧭 继续解读:控制器的职责与主机交互
✅ 控制器的职责包括:
-
通过 Identify Controller Data Structure 中 NWPC 字段报告支持级别
(NWPC = Namespace Write Protection Capabilities) -
必须支持 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-TestDirective Send(但不能修改介质)Directive Receive(但不能申请 Stream 资源)Get FeaturesGet Log PageIdentifyNamespace AttachmentSecurity Receive/SendSet Features(不能改变为禁止状态)Vendor Specific
💾 NVM 命令集
CompareDataset Management(如:Trim/Delete 等)ReadReservation Register / Report / Acquire / ReleaseFlushVerify
❗关键说明:
| 命令 | 说明 |
|---|---|
| Flush | 即使处于写保护,仍成功返回;但不执行写入。 |
| Directive Receive | 如果尝试为写保护命名空间申请 Stream 资源,则返回错误码:Namespace is Write Protected |
| Set Features | 允许执行,但不能通过它来清除写保护(受限于认证控制) |
❌ 将被拒绝的命令类型
以下命令在命中任一情况时将 被 Abort,并返回状态码:Namespace Is Write Protected
🧨 三种会被拒绝的情况:
- 命令直接作用于一个 处于写保护状态的 NSID
- 命令作用于一个正常命名空间,但其副作用会影响一个处于写保护的命名空间
例如:
Format NVM同时格式化多个命名空间 - 命令未指定 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 写保护认证机制?你说了算!