诊断控制器
当 root 用户输入 diag 命令时,将启动诊断控制器功能。 可以将允许直接执行操作的各种标志指定为输入。 例如,标志可以指定要测试系统或特定资源,或指定要在无人照管的情况下运行系统。 如果未指定任何标志,那么诊断控制器将显示菜单以确定用户要执行的操作。
诊断对象类 定义可供诊断控制器使用的资源和任务。 这些对象类中的预定义数据指定有关系统上可能可用的资源和任务的各种属性。
定制设备 对象类 (CuDv) 包含描述实际定义到系统的资源实例的信息。 定义的资源实例可能有也可能没有用于控制它的相应设备驱动程序。 资源可以是机架,抽屉,适配器,磁盘,存储卡,浮点芯片,平板,总线等。
诊断控制器是一个数据驱动的程序。 它使用在 CuDv 和 预定义诊断资源 对象类 (PDiagRes) 中找到的信息来生成受支持资源的列表。 此受支持资源列表用于构建 "资源选择" 菜单。
如果在诊断控制器运行时发生了重新配置操作,那么诊断控制器通过更新 "资源选择" 菜单来支持处理器的动态重新配置。
根据用户从 资源选择菜单中所作的选择,诊断控制器使用 PDiagRes 对象类来确定要启动的相应 诊断应用程序 (DA)。 诊断控制器等待 DA 完成。 诊断应用程序状态由出口系统调用返回。
诊断控制器采用配置的系统范围视图,使诊断控制器能够浏览配置数据库测试资源。 例如,如果资源的测试失败,那么诊断控制器可能会尝试测试其他资源,直到问题已被隔离为止。 诊断控制器了解资源之间的依赖关系。 术语 "资源" 在一般意义上使用,包括适配器以及终端设备。
诊断控制器分析诊断应用程序做出的结论并生成问题报告。 "问题报告" 列出了应更换的现场可更换部件 (FRU) ,与每个 FRU 关联的故障概率以及进行诊断的原因。
诊断控制器将其分析写入目录 /etc/lpp/Diagnostics/data,稍后可以使用 diagrpt 命令或 显示先前诊断结果 任务来检索这些结果。
此外,可以向向诊断控制器注册的外部程序发送问题通知。 注册由 PDiagAtt 类中的 ODM 对象进行。 有 2 个可能的注册:
PDiagAtt:
DType = <fileset nickname>
DSClass = ""
attribute = "notify_service"
value = ""
rep = "s"
DClass = ""
DApp = <complete path to external notification program>
当系统由 Hardware Management Console (HMC) 管理时,将调用 notify_service 属性的 DApp 中指定的程序。 将使用诊断结论的诊断事件日志序号来调用程序。 诊断事件日志 API 可用于抽取诊断分析的特定数据并执行任何定制通知。
PDiagAtt:
DType = "DevChrBasDia"
DSClass = ""
attribute = "notify_service"
value = ""
rep = "s"
DClass = ""
DApp = /usr/lpp/diagnostics/bin/diagServiceEvent
PDiagAtt:
DType = <fileset nickname>
DSClass = ""
attribute = "notify_extern"
value = ""
rep = "s"
DClass = ""
DApp = <complete path to external notification program>
当系统不受 Hardware Management Console (HMC) 管理时,将调用 notify_extern 属性的 DApp 中指定的程序。 将使用诊断结论的诊断事件日志序号来调用程序。 诊断事件日志 API 可用于抽取诊断分析的特定数据并执行任何定制通知。
PDiagAtt:
DType = "DevChrBasDia"
DSClass = ""
attribute = "notify_extern"
value = ""
rep = "s"
DClass = ""
DApp = /usr/lpp/diagnostics/bin/diagServiceEvent