管理命令集与操作 - 第187页
我们现在进入对 NVM Express® Base Specification Revision 2.0b 第 176 页的深入解析,聚焦:
✅ Get Log Page 命令的 Log Page Identifier(LID) 总览表(图 202)
这张图是理解 日志页种类、作用范围(Scope)、NSID 合法性 的关键资料,接下来我们将逐项分析。
✅ 一、Log Page Identifier 表格总览结构
每个日志页由以下 4 个维度定义:
| 字段 | 含义 |
|---|---|
| Log Identifier(LID) | 日志页的编号,在 Get Log Page 命令中通过 Command Dword 10 Bits[7:0] 设置 |
| Scope | 日志页的适用层级,决定 NSID 的合法性与访问范围 |
| Log Page Name | 日志页功能描述 |
| 参考章节 | 日志页结构定义的位置,便于查阅具体字段格式 |
✅ 二、日志页 Scope 分类机制与 NSID 使用规则
| Scope 类型 | 含义 | NSID 设置规则 |
|---|---|---|
Controller |
作用于执行命令的控制器 | NSID 必须为 0h 或 FFFFFFFFh |
Namespace |
指向特定命名空间 | NSID 必须为目标命名空间 ID(如 1, 2, 3) |
Domain |
指向子系统的特定域 | 需结合 Domain Identifier 字段 |
NVM subsystem |
整个 NVMe 子系统共享 | NSID 通常为 0h 或 FFFFFFFFh |
Endurance Group |
特定耐久组(EG)信息 | 需结合 Endurance Group ID |
Vendor Specific |
厂商自定义日志页 | NSID 依据厂商定义,通常为 0 或全局 ID |
✅ 三、精选关键 LID 项讲解
| LID | Scope | 描述 | 备注 |
|---|---|---|---|
00h |
Controller | Supported Log Pages | 列出支持的日志页 LID |
01h |
Controller | Error Information | 错误日志页,每次最多返回 N 项错误记录 |
02h |
Controller / Namespace | SMART / Health Info | ✅ 若 NSID = 0h or FFFFFFFFh → 全盘状态✅ 若 NSID = 有效命名空间 ID → NS 级健康信息 |
03h |
Domain / NVM subsystem | Firmware Slot Info | 可用于固件管理显示当前与可用槽位 |
06h |
Controller / Domain / NVM subsystem | Device Self-Test | ✅ 支持不同 Scope 视场景决定结果返回结构(见 DSTO 标志) |
07h / 08h |
Vendor Specific | Telemetry Log(主机/控制器发起) | 支持 UUID Index、Index Offset |
0Ch |
Controller | Asymmetric Namespace Access (ANA) | 多路径访问管理,返回路径状态等 |
0Dh |
NVM subsystem | Persistent Event Log | 存储关键事件日志,类似 Flight Recorder |
10h |
Domain / NVM subsystem | Media Unit Status | 多域下各 NAND Die 的状态 |
11h |
Domain / NVM subsystem | Supported Capacity Configuration | 返回多域下可用容量配置信息 |
12h |
Controller | Feature Identifiers Supported and Effects | 搭配 Get Features 查询支持项 |
✅ 四、其他范围扩展说明(附注解)
📌 【注 1】02h SMART / Health Info:
- 当 NSID =
0h或FFFFFFFFh时表示控制器级别健康信息; - 当 NSID 为命名空间编号(如 1、2)时,返回该命名空间的 SMART 信息。
📌 【注 3】DSTO Bit 0 = 0 → 06h 日志页仅为 Controller Scope
📌 【注 4】DSTO Bit 0 = 1 → 06h 日志页同时支持 Controller + Domain/NVM subsystem Scope
📌 【注 5】表示该日志页可能为 可变长度日志页(支持扩展读取机制)
📌 【注 6】表示日志页可受 Domain、NVM subsystem 的影响,需设置 Log Specific Identifier
✅ 五、命令设计中的使用建议
| 使用目标 | 设置建议 |
|---|---|
| 读取错误信息 | LID = 01h,NSID = 0h,偏移量设为 0,RAE=0 |
| 读取 SMART 状态(控制器) | LID = 02h,NSID = 0h |
| 读取 SMART 状态(命名空间) | LID = 02h,NSID = 1h 等有效命名空间 ID |
| 读取设备自检结果 | LID = 06h,Scope 根据 DSTO 字段变化决定 |
| 获取 Telemetry Host 日志 | LID = 07h,支持 UUID Index 与结构索引访问 |
✅ 六、完整 Log Page ID 范围划分(简表)
| 范围 | 用途 |
|---|---|
00h ~ 16h |
标准日志页(控制器/子系统/命名空间等) |
17h ~ 6Fh |
保留 |
70h |
Discovery 日志页(特定场景) |
71h ~ 7Fh |
保留 |
80h ~ 81h |
控制器级保留与清除类(如 Reservation Notify) |
82h ~ BEh |
命令集特定日志页(如 ZNS、KV) |
BFh |
指向 Zoned Namespace Log 页 |
C0h ~ FFh |
厂商自定义(Vendor Specific) |
✅ 总结与学习建议:
| 学习模块 | 建议 |
|---|---|
| LID 使用规则 | 建议按 Scope 归类,建立【日志页用途 → NSID 合法值】映射表 |
| 命名空间适用性 | 搭配 NSID 设置使用前必须先确认 Scope 定义 |
| 多域场景 | 若目标设备支持多个 Domain,需配合 Log Specific Identifier 使用 |
| DSTO 配合 | Get Log Page 中部分日志页作用范围需根据 DSTO 配置位动态判断 |
| 命令实战搭配 | 建议配合 Identify Controller 中的 DSTO / Log Page Attributes 字段判断功能支持情况 |
如果你希望我帮你:
- 🗂 整理一张图解版《Log Page Identifier(LID) ↔ Scope ↔ NSID 使用规则》的表格
- 📘 绘制《Get Log Page 命令访问路径流程图》,展示如何选择 NSID、Offset、UUID Index
我可以立刻为你制作,帮助你建立快速查表与实战配置能力。你希望我从哪一个开始呢?