NVM子系统架构 - 📘 图 22:I/O 控制器 – 管理命令支持(Admin Command Support) (第44页)
NVME2.0协议解读 1 min read

NVM子系统架构 - 📘 图 22:I/O 控制器 – 管理命令支持(Admin Command Support) (第44页)

Blog Author

我们继续深入解读 NVMe Base Specification 2.0b图 22 和图 23 的内容 —— 这两张表格是了解 I/O 控制器所支持的 Admin 命令与 I/O 命令能力的核心索引表,尤其对于驱动开发、协议解析、系统兼容性判断非常关键。


📘 图 22:I/O 控制器 – 管理命令支持(Admin Command Support)

图 22 罗列了 I/O 控制器必须(M)、可选(O)、禁止(P)支持的管理命令,参考列是各命令在规范正文中的详细说明位置。

我们来梳理一下它的精髓:

✅ 必须支持的管理命令(M)

命令名称 中文说明 参考章节
Asynchronous Event Request 异步事件请求(例如 SMART 事件通知) §5.2
Property Set / Get 设置/读取控制器属性(仅限 Fabrics 使用) §6.6 / §6.5
Connect Fabrics 控制器连接建立 §6.3

📌 注意:“Connect / Property”类命令仅在 NVMe over Fabrics 中是 M,而在 NVMe over PCIe 中是禁止使用(P)。


🧩 可选支持的管理命令(O)

这些命令实现与否取决于控制器设计,例如:

命令 作用 章节
Namespace Management 命名空间的创建、删除 §5.23
Firmware Commit / Download 固件更新 §5.12 / §5.13
Sanitize 安全擦除(用户数据不可恢复) §5.24
Security Send / Receive 安全协议(如 TCG, IEEE 1667)交互 §5.26 / §5.25
Format NVM 格式化 Namespace(清除元数据 + 用户数据) §5.14
Lockdown 安全锁定控制器配置 §5.19
Device Self-test 设备自检 §5.9

🎯 一般企业级 SSD 会实现其中绝大多数,以便于支持 OTA、生命周期管理、安全策略等功能。


🔐 Fabrics 专属命令

以下命令仅在 NVMe over Fabrics 情境下适用,PCIe 不支持:

命令 说明
Authentication Send / Receive 会话认证(例如 DH-HMAC-CHAP)
Disconnect I/O 队列断开(用于清理)

📘 图 23:I/O 控制器 – 通用 I/O 命令支持(Common I/O Command Support)

这一张图表非常重要,它定义了所有 I/O 控制器所涉及的“读写以外”的辅助 I/O 命令支持情况。

✅ 必须支持的 I/O 命令(M)

命令 说明
Flush 强制刷新缓存数据到 NVM(持久化)

这属于数据一致性控制命令,必须实现。


🧩 可选支持的 I/O 命令(O)

命令 中文说明 条件说明
Dataset Management 数据集提示(如 TRIM) 可选
Reservation Register / Report / Acquire / Release 命名空间预留机制(类似 SCSI persistent reservation) 如果实现了预留功能,则这些命令必须支持

📌 如果控制器支持 namespace reservation,那么这些命令(4 个)就从“可选”变成了“必须”!


🧠 实战场景举例

场景 1:判断 SSD 是否支持固件更新?

查看 Identify Controller 数据结构中是否设置了 Firmware Slot 信息,并确认是否支持:

  • Firmware Image Download
  • Firmware Commit

场景 2:实现主机端擦除功能

需要支持:

  • Sanitize
  • Format NVM
  • Security Send/Receive(若使用的是 TCG-OPAL 类安全规范)

场景 3:支持共享命名空间,需要哪些命令?

  • Reservation Register
  • Reservation Report
  • Reservation Acquire
  • Reservation Release

并且在 Identify 中会有相关字段反映其支持状态。


✅ 总结表格

类型 命令 状态
管理命令 Abort, Identify, Set/Get Features, Get Log Page, Queue 管理 必须支持
Fabrics 特有命令 Connect, Property Get/Set, Auth Send/Recv, Disconnect 仅 Fabrics 有效
管理增强命令 Format, Sanitize, Firmware, Security, Namespace Attach 等 可选
通用 I/O 命令 Flush 必须支持
命名空间预留命令 Reservation 系列命令 可选 / 条件必选
辅助 I/O 命令 Dataset Mgmt 可选

如果你需要我为你整理出:

  1. 一张「命令支持矩阵」全景图;
  2. 各命令在 Identify 中的对应字段;
  3. 控制器支持度验证方法(脚本工具或 NVMe CLI 命令示例);

我也可以马上给你搞定!你想继续深入哪个方向?😎