数据结构与日志格式 - 第210页
NVME2.0协议解读 1 min read

数据结构与日志格式 - 第210页

Blog Author

中文深入分析协议:NVM Express® Base Specification, revision 2.0b 第 5.16.1.14节,持久事件日志(Persistent Event Log)分析

一、持久事件日志(Persistent Event Log)概述

持久事件日志用于存储与 NVM 系统相关的重要事件信息,这些事件并不特定于某个命令。这些日志信息在电源周期和系统重置时会被保留,并且设计目标是尽量减少电源故障时事件信息的丢失。持久事件日志是全局性的,适用于整个 NVM 子系统。

📌 字段解析:

1. 日志页内容

持久事件日志包含了头部信息和一个或多个事件数据。每个事件代表一个在设备或系统级别发生的重要事件,这些事件对命令无关。

  • 事件存储:持久事件日志信息应按时间顺序存储,以便较新的事件通常排在日志数据的前面。

  • 电源恢复后保留事件:事件内容会在设备重启或电源恢复后保留,确保即便在断电后,重要事件信息仍然能够被恢复和查看。

2. 事件删除和压缩

  • 持久事件日志 达到最大容量时,控制器可能会删除某些事件以为新事件腾出空间。这些删除的事件可以由厂商自行定义,通常来说,重要事件会被保留,而较不重要的事件则可能会被删除。

  • 控制器也可以在日志中指明是否有事件被抑制(例如,某个事件发生频率过高,超过厂商定义的阈值时,控制器会抑制该事件的记录)。

  • 日志空间和事件数量限制:日志的最大容量和最大支持的事件数量是由厂商指定的,可以在 Identify Controller 数据结构的 PELS 字段中查找此信息。

3. 日志分类与事件类型

事件可分为不同类型,并按类别进行存储。例如: - 时间戳变化事件:如果时间戳发生变化,控制器会记录这种事件。若事件发生次数过多(例如超过 1000 次),这些事件的记录会被按照阈值进行管理。 - 多个控制器的事件:如果某个事件涉及多个控制器(例如,NVM 子系统重置),该事件只会由一个控制器记录,避免重复记录。

4. 日志报告和上下文管理

  • 日志上下文的管理:每次获取日志页面时,控制器会根据上下文信息来决定如何读取事件数据。
  • 创建上下文:当读取日志时,如果是首次读取,控制器会创建一个新的事件报告上下文。
  • 预先存在的上下文:如果日志已存在相关上下文,控制器则会从中读取数据。
  • 释放上下文:处理完日志数据后,控制器会释放当前的日志报告上下文。

5. 日志动作(Action字段)

Log Specific Field 中的 Action 字段指示具体操作: - 创建上下文:开始处理 Get Log Page 命令时,控制器将创建一个新的持久事件日志报告上下文。 - 读取已有上下文:从一个已经存在的日志报告上下文中读取数据。 - 释放上下文:读取完成后,释放当前的日志报告上下文。


📌 总结:

  • 持久事件日志 是管理 NVM 子系统中重要系统事件的关键日志,确保事件信息在断电或重启后得以保留。
  • 日志的容量事件数量 受设备和厂商的限制,并且支持事件的存储和管理策略。
  • 日志上下文的管理事件的删除与抑制 允许控制器在容量限制下有效地管理事件记录,确保重要事件不丢失。