错误处理与诊断 - 第429页
NVME2.0协议解读 1 min read

错误处理与诊断 - 第429页

Blog Author

我们继续深入解析 NVMe Express Base Specification 2.0b 中的内容,重点为:


📘 第 8.19 节 - Reservations(保留机制)后续部分总结(接续清理与查询部分)

📘 第 8.20 节 - Rotational Media(旋转介质支持)


🔹 1. Clearing a Reservation(清除保留)

✅ 背景:

主机希望强制释放命名空间的 Reservation,并注销所有注册者(registrants),即完全清除当前 Reservation 状态。

📌 操作流程:

  1. 发送 Reservation Release 命令;
  2. 设置字段:
  3. RRELA = 001b → 表示执行 清除操作
  4. CRKEY = 当前注册 Key → 必须匹配该主机之前注册时所使用的 Key;
  5. 前提:主机必须是 Registrant(即已注册者),否则命令失败,返回 Reservation Conflict

⚙️ 原子操作结果:

  • 当前命名空间上存在的 Reservation 被释放;
  • 所有 registrant 被注销(包括发出命令的主机);
  • 向其他受影响的主机发送 Reservation Preempted Notification(不含发起主机)。

🔹 2. Reporting Reservation Status(查询保留状态)

主机可通过 Reservation Report 命令查询命名空间当前的 Reservation 状态,包括:

  • 当前是否有 Reservation;
  • 哪些主机是 registrant;
  • 哪个主机是 holder(若有);
  • Reservation 类型;
  • 是否启用 Persist Through Power Loss 状态。

🔷 补充说明:三种 Reservation Notification 通知类型

类型 说明
Registration Preempted 当前主机的注册信息被其他主机抢占/替换时触发
Reservation Preempted 当前主机是 Reservation 持有者,被抢占后触发
Reservation Released Reservation 被主动释放或清除时触发

控制器会在对应命名空间生成一个 Reservation Notification Log Page,主机可设置异步事件(Asynchronous Event Request)监听这些通知。


🌀 Reservation 保留机制总结图:

               ┌──────────────┐
               │  Register Key│
               └──────┬───────┘
                      ▼
               ┌──────────────┐
               │   Registrant │
               └──────┬───────┘
                      ▼
        ┌─────────────┴─────────────┐
        │ Acquire → Become Holder  │
        └─────────────┬─────────────┘
                      ▼
               ┌──────────────┐
               │  Reservation │
               └──────┬───────┘
      ┌───────────────┼───────────────┐
      ▼               ▼               ▼
    Preempt       Release          Clear
    (抢占并更新) (主动释放)     (清除+注销所有)

📘 第 8.20 节 - Rotational Media(旋转介质)


🎯 适用于机械磁盘(如 HDD、光盘)等具有转动部件的存储介质。

✅ 控制器对“旋转介质”的支持要求如下:

要求 描述
NSFEAT.Rotational Media 位设置为 1 用于 Identify Namespace 时表示命名空间属于旋转介质
支持 Rotational Media Information 日志页 提供相关介质信息
支持 Spinup Control Feature(电机旋转控制) 用于控制转盘电机启动行为(避免上电即启动)
支持 Endurance Group 机制 旋转介质也应参与使用寿命管理
EGFEAT.Rotational Media 位设置为 1 标明该 Endurance Group 包含旋转介质

⚠️ 特殊规则:

  • 若命名空间所在的 旋转轴未启动(spindle not spinning),则该控制器处于 非运行功耗状态(NOPS = 1)
  • 某些系统(如 multi-endurance group 的平台)需要根据是否包含旋转介质做出电源管理决策。

📝 举例:

如果 SSD 厂商发布一款同时支持 NAND 与 HDD(如 Hybrid SSD 或内置 HDD 缓存)的控制器:

  • NSFEAT.Rotational Media 需精确标注;
  • 支持多种日志页;
  • Host 层通过 Spinup Control 可以控制是否延迟旋转启动。

📌 下一节预告:8.21 Persistent Event Log(持久化事件日志)

是否需要我继续深入解读下一小节,或者将 Reservation、RPMB、Rotational Media 等核心内容进行结构化笔记总结?需要我生成表格或逻辑图来帮助记忆吗?