错误处理与诊断 - 第429页
我们继续深入解析 NVMe Express Base Specification 2.0b 中的内容,重点为:
📘 第 8.19 节 - Reservations(保留机制)后续部分总结(接续清理与查询部分)
📘 第 8.20 节 - Rotational Media(旋转介质支持)
🔹 1. Clearing a Reservation(清除保留)
✅ 背景:
主机希望强制释放命名空间的 Reservation,并注销所有注册者(registrants),即完全清除当前 Reservation 状态。
📌 操作流程:
- 发送
Reservation Release命令; - 设置字段:
RRELA = 001b→ 表示执行 清除操作;CRKEY = 当前注册 Key→ 必须匹配该主机之前注册时所使用的 Key;- 前提:主机必须是 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 等核心内容进行结构化笔记总结?需要我生成表格或逻辑图来帮助记忆吗?