NVM子系统与控制器架构 - 第45页
NVME2.0协议解读 1 min read

NVM子系统与控制器架构 - 第45页

Blog Author

我们继续对《NVM Express® Base Specification, revision 2.0b》中 I/O 控制器相关能力支持表格进行深入解读,今天覆盖以下两个重点:


📘 3.1.2.1.2 图 24:I/O 控制器 – 日志页支持(Log Page Support)

✅ 表格背景说明:

此表列出了 I/O 控制器需支持的 Log Page(日志页) 类型,它们是控制器向主机报告状态、健康度、历史信息、命令支持度等的重要方式。

  • M(Mandatory)必须支持
  • O(Optional)可选支持
  • P(Prohibited)禁止支持

🔍 必须支持的日志页(M)

日志页名称 用途说明
Supported Log Pages 控制器支持哪些日志页的“目录页”,用于主机查询
Error Information 记录最近遇到的命令错误(带状态码)
SMART / Health 信息(Controller 范围) 控制器级别的健康状态
Firmware Slot 信息 固件槽位状态
Commands Supported and Effects 报告命令支持度和副作用影响
Feature Identifiers Supported and Effects 报告哪些特性支持及其行为(结合 Set/Get Features)
NVMe-MI Commands Supported and Effects 哪些 MI 命令在 OOB 通道上被支持(仅支持 NVMe-MI 的控制器需实现)

🔧 Commands Supported and EffectsFeature Supported and Effects 是 NVMe 2.0 新增的重要机制,帮助主机判断“命令的执行副作用”。


🧩 可选支持的日志页(O)

这些页具体支持与否,依赖控制器是否支持相关功能:

日志页 典型作用场景
SMART(Namespace 范围) 针对 Namespace 的精细健康监控
Changed Namespace List 用于热插拔/变更场景下的 namespace 更新检测
Telemetry(Host/Controller) 用于收集调试数据(崩溃现场、慢响应调查)
Endurance Group Info 如果支持 Endurance Group,报告其写入寿命等数据
Persistent Event 持久化的事件日志(如掉电、温度异常、格式化等)
ANA(Asymmetric Namespace Access) 多路径不对称访问结构
Reservation Notification 如果实现命名空间共享,报告预留相关事件
Sanitize Status 擦除过程状态
Boot Partition Log 固件分区配置与加载状态
Rotational Media Info 如果使用传统磁盘介质,报告转速等参数

💡 许多高阶日志页都服务于:数据中心运维监控、安全合规、设备分析与恢复机制。


⚠️ 特殊注意项:

  • 日志页中的:
  • Media Unit Status
  • Supported Capacity Configuration List

固定容量管理(Fixed Capacity Management)功能控制器的强制项。


📘 3.1.2.1.3 图 25:I/O 控制器 – 特性支持(Features Support)

✅ 表格说明:

“特性(Features)”通过 Set FeaturesGet Features 命令交互,属于 控制器状态配置与调优接口。每个特性都有唯一的 FID(Feature Identifier)。


🔍 必须支持的特性(M)

特性名称 中文说明 是否写入日志
Arbitration 调度机制配置,如 WRR 权重等 ✔️(O)
Power Management 电源状态切换能力,如 ASPT ❌(NR)
Temperature Threshold 控制器热管理(告警温度) ✔️(O)
Number of Queues 多队列能力,配置队列数量上限 ✔️(O)
Async Event Configuration 异步事件触发机制配置(温度/SMART/Notice) ❌(NR)

🧩 可选支持特性(O)

特性名称 应用说明
Volatile Write Cache 控制器是否使用易失性写缓存(DRAM)
Interrupt Coalescing 中断合并间隔设置
Interrupt Vector Configuration 设置中断向量数量
Keep Alive Timeout 主机不活跃超时机制(Fabrics 常见)
Host Identifier 通过 Set Features 绑定 Host UUID
Autonomous Power State Transition (APST) 自主电源状态切换能力(节能)
Timestamp 主机时间同步特性
Host Memory Buffer (HMB) 使用主机内存作为读写缓存
Write Protection 命名空间写保护机制(只读、完全保护)
Reservation Notification Configuration Namespace Reservation 通知配置
Reservation Persistence Configuration 是否保留预留状态(掉电后仍存在)
Non-Operational Power State Config 定义非活跃(D3)电源状态参数

🔧 示例用法解析

场景:判断控制器是否支持 "Telemetry 日志"

  • 查阅 Supported Log Pages 日志页(LID = 0x00)
  • 检查其中是否包含:
  • Telemetry Host-Initiated(LID = 0x07)
  • Telemetry Controller-Initiated(LID = 0x08)

如果存在说明支持,可进一步使用 Get Log Page 读取数据。


场景:写保护命名空间

  • 需要支持 Feature:Write Protection
  • 然后调用: bash nvme set-feature -f 0x81 -v 1 /dev/nvme0n1 # 开启只读保护 nvme get-feature -f 0x81 /dev/nvme0n1 # 查询状态

✅ 总结:三大能力表横向对照

类型 作用
Admin Command 图 22 控制器支持哪些管理指令
Log Pages 图 24 控制器支持哪些诊断、运行数据
Features 图 25 控制器可配置的行为与状态项

你想不想我给你整理出一个全景“支持能力验证脚本”,用 nvme-cli 自动检测 NVMe 控制器是否符合规范要求?还是说你更想先深入某个具体特性?比如 Telemetry、Write Protect、或是 Host Memory Buffer?🤔