管理命令集 - 📘 第 5 章总览:Admin Command Set(管理命令集) (第155页)
NVME2.0协议解读 1 min read

管理命令集 - 📘 第 5 章总览:Admin Command Set(管理命令集) (第155页)

Blog Author

我们现在进入 《NVM Express® Base Specification, revision 2.0b》第144页 的重点章节 —— 第 5 章 Admin Command Set(管理命令集)。这是 NVMe 协议的核心部分之一,定义了所有可以通过 Admin Submission Queue 提交的“管理类命令”。这些命令主要用于配置控制器、管理命名空间、更新固件、发送事件等。


📘 第 5 章总览:Admin Command Set(管理命令集)

管理命令集用途

  • 主要用于管理控制器和命名空间;
  • 不依赖于 I/O Submission Queue 状态(如某个 I/O Completion Queue 满了,不会阻塞 Delete I/O SQ 命令);
  • 管理命令提交到 Admin Submission Queue (ASQ),完成状态通过 Admin Completion Queue (ACQ) 返回。

🔍 通用结构说明

  • 提交队列结构(SQE):所有管理命令共用部分结构,详见章节 3.3.3;
  • 完成队列结构(CQE):所有管理命令通用字段同样定义在 3.3.3.2;
  • 命令特定字段
  • SQE 的 Dword 10~15
  • CQE 的 Dword 0~1

🧩 图 138:Admin 命令一览表

下面是图 138 中部分命令的解析与说明(带 Opcode):

Opcode 命令名 是否使用 Namespace Identifier 是否数据传输 说明
00h Delete I/O Submission Queue No No 删除 I/O 提交队列
01h Create I/O Submission Queue No No 创建 I/O 提交队列
02h Get Log Page Yes Yes 获取控制器日志页,如 SMART、健康状态等
04h Delete I/O Completion Queue No No 删除 I/O 完成队列
05h Create I/O Completion Queue No No 创建 I/O 完成队列
06h Identify No 是/否(依参数) 识别控制器或命名空间(最常用命令之一)
08h Abort No No 中止指定命令
09h Set Features Yes Yes 设置控制器特性,例如电源状态、KATO、队列大小等
0Ah Get Features Yes Yes 获取控制器特性
0Ch Asynchronous Event Request No No 异步事件通知机制(如温度过高)
0Dh Namespace Management No Yes 管理命名空间(创建/删除)
10h Firmware Commit No No 提交固件镜像至控制器指定槽位
11h Firmware Image Download No Yes 下载固件镜像
14h Device Self-Test No Yes 执行设备自检,类似 SMART 测试
15h Namespace Attachment No Yes 将命名空间附加到控制器
18h Keep Alive No No 防止超时断连的心跳机制
19h Directive Send No Yes 用于实现高级数据放置策略(如分层存储)
1Ah Directive Receive No Yes 接收指令类配置
1Ch Virtualization Management No No 虚拟化环境支持
1Dh NVMe-MI Send No No 管理接口消息发送(如 MCTP over SMBus)
1Eh NVMe-MI Receive No No 管理接口消息接收
20h Capacity Management No No Endurance Group/NVM Set 管理命令
24h Lockdown No No 系统安全隔离命令
7Ch Doorbell Buffer Config No No Doorbell 配置
80h Format NVM Yes Yes 格式化命名空间(破坏性操作)
81h Security Send Yes Yes 安全通信(如 TCG Discovery)
82h Security Receive Yes Yes 安全通信接收
84h Sanitize Yes No 擦除设备数据
86h Get LBA Status Yes Yes 获取逻辑块状态(写入后是否未读)

📌 图中字段说明

字段 含义
Opcode 十六进制操作码,命令唯一标识
Namespace Identifier Used 表示该命令是否需要指明 NSID(命名空间编号)
Data Transfer 表示该命令是否涉及数据传输
Command Set Specific 表示该命令是否依赖于 I/O Command Set(如 ZNS、NVM 等)

🧠 教学总结

项目 内容
命令分类 包含创建/删除队列、配置功能、日志查询、固件更新、命名空间管理、虚拟化、Sanitize 等
Opcode 分配机制 按照命令功能模块分段组织,便于控制器解码与调度
管理命令队列影响 管理命令在执行上独立于 I/O 队列,不会因 I/O 队列满而被阻塞
命令通用结构 所有 Admin 命令在 SQE/CQE 上有共同结构,简化主机解析实现
最常用命令 IdentifyGet Log PageGet/Set FeaturesFirmware Commit/DownloadNamespace ManagementFormat NVM

🎯 接下来建议

  1. 重点学习 Identify 和 Get Log Page 的结构与使用场景
  2. 结合前面学过的 NQN、UUID、Namespace ID,分析 Identify 响应内容
  3. 深入理解 Sanitize 与 Format NVM 的区别与应用场景(特别是数据销毁)
  4. 研究 Firmware Update 命令组合的完整流程,便于实战升级控制器固件。

如你想要更详细解析某一个 Admin Command(比如 IdentifyGet Log PageNamespace Management),我可以为你分字段做逐位讲解并配中文图示。想深入哪个命令,随时告诉我!