一、 功能说明
pstore(persistent storage),主要用于存储内核异常时的log信息,当系统异常时,将log信息写到pstore管理的存储空间,直到下一次系统正常时,在将log读出来,以文件形式提供给用户使用。
pstore提供了上面的这和套异常时存储日志的机制,支持多种存储后端,比如非意失性内存、块设备、ERST等。
如上图所示,pstore框架支持将多种信息存储到后端非意失性存储上,
dmesg:主要是转存panic/oops时log_buf里面的内核日志
pmsg:提供给用户空间存储日志的入口,在Android里有看到被用于存储系统的日志。
console:终端日志
ftrace:function trace的信息
结合目前的服务器硬件现状,此处选用ERST所谓存储后端
ERST是BIOS的功能,要使用些功能,必须要BIOS支持,绝大部分的服务器BIOS都支持此功能。
[root@localhost secure]# dmesg |grep ERST
[ 0.009821] ACPI: ERST 0x000000006DB7C000 000230 (v01 ALASKA A M I 00000001 INTL 00000001)
[ 0.009879] ACPI: Reserving ERST table memory at [mem 0x6db7c000-0x6db7c22f]
[ 23.571326] ERST: Error Record Serialization Table (ERST) support is initialized.
BIOS是否支持ERST功能,可在启动日志中查看,如下,表示支持ERST
ERST是APEI规范中定义的4张表中的一张。其主要作用是提供一片持久化的存储空间,供用户存储相关信息。
二、 功能现状
1、 在当前的系统中,系统在启动过程中会检查BIOS是否支持ERST,如果支持会将ERST默认注册为pstore的后端。
2、 pstore已经存在于内核系统中,本方案要做的是启用pstore的功能
本方案只是有限的启用了pstore的功能,启用了dmesg的功能,即主要是转存panic/oops时log_buf里面的内核日志到ERST,便于分析系统异常的原因。因为在系统panic/oops时,messages中无法记录系统异常时的日志,在没有kdump生成的情况下,从而无法分析系统异常的原因,此方案可以作为这一方面的补充,增加可定位性。