7.5. 固件支持的转储机制
7.5.1. 固件支持的转储案例
kexec
和 kdump
机制是在 AMD64 和 Intel 64 系统中捕获内核转储的可靠且可靠的方法。但是,一些历史较长的硬件(尤其是小型和大型机系统)使我们能够利用板载固件隔离内存区域,并防止意外覆盖对崩溃分析很重要的数据。
本章论述了一些可用的固件支持的转储方法,以及它们如何与 Red Hat Enterprise Linux 集成。
7.5.2. 在 IBM PowerPC 硬件中使用 fadump
固件辅助转储(fadump
)是 IBM PowerPC LPARS 上提供的 kexec-kdump
的可靠替代方案。它从完全重设的系统捕获 vmcore,其 PCI 和 I/O 设备重新初始化。虽然这种机制使用固件在崩溃时保留内存,但它会重复使用 kdump
用户空间脚本来保存 vmcore"。
为实现这一目标,fadump
注册了系统固件发生崩溃时必须保留的内存区域。除了引导内存、系统寄存器和硬件页表条目(PTE)外,这些区域包含所有系统内存内容。
有关 fadump 机制(包括针对 PowerPC 重置硬件的方法)的详情,请查看 /usr/share/doc/kexec-tools-X.y.z/fadump-howto.txt
,其中 "X.y.z" 与您的系统上安装的 kexec-tools 版本号对应。
未保留的内存区域和称为 引导内存
的区域是崩溃事件后成功启动内核所需的 RAM 量。默认情况下,引导内存大小为 256MB 或系统 RAM 总量的 5%,以较大者为准。
与 kexec
-initiated 事件不同,fadump
进程使用 production 内核恢复崩溃转储。在崩溃后引导时,PowerPC 硬件使设备节点 /proc/device-tree/rtas/ibm,kernel-dump
可供 procfs
使用,而 procfs 会检查 fadump-aware kdump
脚本以保存 vmcore。完成此操作后,系统将完全重启。
启用 fadump
-
安装和配置
kdump
,如 第 7.2 节 “安装和配置 kdump” 所述。 在
/etc/default/grub
中的GRUB_CMDLINE_LINUX
行中添加fadump=on
:GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=auto rd.lvm.lv=rhel/root rhgb quiet
fadump=on
"(可选)如果要指定保留引导内存而不是接受默认值,请在
/etc/default/grub
中将crashkernel=xxM
配置为GRUB_CMDLINE_LINUX
,其中 xx 是以 MB 为单位所需的内存量:GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel/swap crashkernel=xxM rd.lvm.lv=rhel/root rhgb quiet fadump=on"
与所有引导选项一样,强烈建议您在需要前测试配置。如果您在从崩溃内核引导时观察到内存不足(OOM)错误,请提高 crashkernel=
中指定的值,直到崩溃内核可以完全引导。在本例中可能会需要进行一些不同的尝试。
7.5.3. IBM Z 支持的固件转储方法
IBM Z 上有两个固件支持的转储机制。它们是独立的 Dump
和 VMDUMP
。
这些系统中支持并使用 kdump 基础架构,来自 Red Hat Enterprise Linux 的配置包括在 第 7.2 节 “安装和配置 kdump” 中。但是,使用固件支持的方法之一 IBM Z 硬件可能有一些优点。
单机转储(SADMP)机制从系统控制台启动和控制,必须存储在 IPL 可引导设备中。
与 SADMP 类似,是 VMDUMP。此工具也从系统控制台启动,但具有从硬件检索生成的转储并将其复制到系统以进行分析的机制。
这些方法的一个优点(与其他基于硬件的转储机制类似)是可以在 Early Boot 阶段捕获机器的状态(在 kdump 服务启动前)
尽管 VMDUMP 包含将转储文件接收到 Red Hat Enterprise Linux 系统中的机制,但 SADMP 和 VMDUMP 的配置和控制都是从 IBM Z 硬件控制台管理的。
IBM 在 VMDUMP 文章中详细讨论 SADMP、独立转储程序文章和 VMDUMP。
IBM 还具有用于使用 Red Hat Enterprise Linux 7 中使用 Dump Tools on Red Hat Enterprise Linux 的转储工具的文档集。
7.5.4. 在 Fujitsu PRIMEQUEST 系统中使用 sadump
Fujitsu sadump
机制旨在在 kdump 无法成功完成时提供回退转储捕获。
sad ump
进程是从系统 ManageMent Board(MMB)接口手动调用的。
使用这个系统,为 X86_64 服务器配置 kdump,然后执行以下步骤启用 sad ump
。
在 /etc/sysctl.conf
中添加或编辑以下行,以确保 sad ump
的 kdump 启动如预期。
kernel.panic=0 kernel.unknown_nmi_panic=1
除以上所述外,还必须在 /etc/kdump.conf
中添加一些选项,以确保 kdump 对 sadump 的行为正确。
特别是,请确保在 kdump 后系统不会重启。如果系统在 kdump 无法保存内核后重启,则您没有机会调用 sad ump。
将 /etc/kdump.conf
中的默认
操作设置为 halt 或 shell 以实现此目的。
default shell
有关为 sad ump 配置硬件的详情,请查看 FUJITSU Server PRIMEQUEST 2000 系列安装手册。