Go to main content
Oracle® Linux 故障管理体系结构软件用户指南

退出打印视图

更新时间: 2015 年 10 月
 
 

故障管理体系结构概述

Oracle Linux 故障管理体系结构 (Fault Management Architecture, FMA) 补充了现有 Linux 错误检测和恢复机制,通过此体系结构,系统管理员可以在主机上查看、操作和清除 Linux 内核检测到的故障。FMA 使用服务处理器上的 Oracle ILOM 故障管理器诊断从主机捕获的 CPU 和内存错误,并将其输出为存储在故障管理数据库中的标准故障格式。

该数据库包含检测到的所有故障(Oracle Linux FMA 和 Oracle ILOM FMA 捕获的故障)的超集,在主机和服务处理器上维护该数据库。

在 Oracle Linux 操作系统中,系统会在内核级别以计算机检查事件形式生成 CPU 和内存错误。这些事件存储在 Linux mcelog 数据库中。Linux mcelog 守护进程 mcelogd 会检索存储在该数据库中的错误并将其转换为易读的消息,以便输出到控制台、mcelog 文件 (/var/log/mcelog) 和 Linux 系统日志中。此外,mcelog 守护进程还会根据存储在配置文件中的规则集合执行操作。例如,这些操作可能包括从含有不可更正错误的服务中回收内存页面。

mcelog 记录的信息可能不包含用于确定错误组件(如内存 DIMM)的足够信息。Oracle Linux FMA 故障管理器守护进程 fmd 会扫描并检索存储在 mcelog 文件中的错误,然后将这些错误转换为 Oracle ILOM 支持的 ereport 格式。然后,该守护进程使用内部主机到 ILOM 互连端口将 ereport 转发至服务处理器。Oracle ILOM Fault Manager 使用 ereport 诊断故障。然后 Oracle ILOM 将故障记录在其自己的故障管理数据库中,并将一个副本发送至驻留在 Linux 主机上的故障管理数据库。

通过此方法,可以使用一组类似的故障管理命令(无论是从主机 OS 还是从 Oracle ILOM)查看该数据库中的所有系统硬件故障并对其执行操作。

image:图中显示了 Linux FMA 如何工作。

运行 Oracle Linux 的 Oracle 服务器平台包括错误检测器、诊断引擎和响应代理。错误检测器和响应代理驻留在 Oracle Linux 主机上。诊断引擎驻留在服务器的服务处理器上。

  • 错误检测器会检测系统中的错误,然后立即执行所需的处理。错误检测器还会向诊断引擎生成定义明确的错误报告或 ereport。在 Linux 中,mcelog 守护进程会检测错误,然后 Oracle Linux 故障管理软件会收集这些错误,将其重新格式化为 ereport,并转发至服务处理器进行故障诊断。

  • 位于服务处理器上的一组诊断引擎会对报告进行解释并确定是否存在故障或缺陷。确定完之后,诊断引擎会创建一个可疑对象列表,该列表描述了可能引发此问题的资源或资源集。该资源可能有也可能没有关联的现场可更换单元 (field-replaceable unit, FRU) 或标签。

    当可疑对象列表包含多个可疑对象时,例如,如果诊断引擎无法隔离单个可疑对象,将会为每个可疑对象分配一个概率,以指示它是关键可疑对象的可能性。该列表中的各个概率的总和为 100%。

    错误检测器和诊断引擎由服务处理器上的 Fault Manager 守护进程进行连接,该守护进程充当各个组件之间的多路复用器,如下图所示。

    image:此图显示了故障管理守护进程与错误检测器和诊断引擎之间的相互关系。
  • 响应代理会尝试根据错误类型采取操作。在主机端,mcelog 守护进程充当响应代理。响应包括日志记录消息和回收内存页面。

Oracle Linux Fault Manager 守护进程 fmd(1M) 本身是一个服务。可以将该服务作为无脚本守护进程进行启用和控制,也可以使用 init.d 脚本启用和控制该服务以实现更高的可管理性。该版本的 Oracle Linux FMA 中支持的故障管理命令包括:

  • fmadm(1M)-管理员和服务人员可使用该命令来查看和清除由 Oracle Linux 故障管理器 fmd(1M) 维护的故障。

  • fmdump(1M)-用于显示与 Oracle Linux 故障管理器 fmd(1M) 关联的任何日志文件的内容。