41.5. 支持的 kdump 配置和目标
kdump
机制是 Linux 内核的一个功能,它在发生内核崩溃时生成一个崩溃转储文件。内核转储文件有关键的信息,可帮助分析和确定内核崩溃的根本原因。崩溃可能是因为各种因素,举几个例子,如硬件问题或第三方内核模块问题。
通过使用提供的信息和程序,您可以执行以下操作:
- 识别 Red Hat Enterprise Linux 8 系统支持的配置和目标。
- 配置 kdump。
- 验证 kdump 操作。
41.5.1. kdump 的内存要求
要让 kdump
捕获内核崩溃转储,并保存它以便进一步分析,应该为捕获内核永久保留系统内存的一部分。保留时,主内核无法使用系统内存的这一部分。
内存要求因某些系统参数而异。主要因素之一就是系统的硬件构架。要识别确切的机器架构,如 Intel 64 和 AMD64,也称为 x86_64,并将其输出到标准输出,请使用以下命令:
$ uname -m
使用上述最小内存要求的列表,您可以设置合适的内存大小,来在最新可用版本上为 kdump
自动保留内存。内存大小取决于系统的架构和总可用物理内存。
架构 | 可用内存 | 最小保留内存 |
---|---|---|
AMD64 和 Intel 64 ( | 1 GB 到 4 GB | 192 MB 内存 |
4 GB 到 64 GB | 256 MB 内存 | |
64 GB 及更多 | 512 MB 内存 | |
64 位 ARM 架构 ( | 2 GB 及更多 | 480 MB 内存 |
IBM Power 系统 ( | 2 GB 到 4 GB | 384 MB 内存 |
4 GB 到 16 GB | 512 MB 内存 | |
16 GB 到 64 GB | 1 GB 内存 | |
64 GB 到 128 GB | 2 GB 内存 | |
128 GB 及更多 | 4 GB 内存 | |
IBM Z ( | 1 GB 到 4 GB | 192 MB 内存 |
4 GB 到 64 GB | 256 MB 内存 | |
64 GB 及更多 | 512 MB 内存 |
在很多系统中,kdump
可以估算所需内存量并自动保留。默认情况下,此行为是启用的,但仅适用于内存总量超过特定数量的系统,这些内存因系统架构而异。
根据系统中内存总量自动配置保留内存是最佳工作量估算。实际需要的内存可能因其他因素(如 I/O 设备)而异。使用内存不足可能会导致 debug 内核在出现内核 panic 时无法引导作为捕获内核。要避免这个问题,请足够增大崩溃内核内存。
其它资源
41.5.2. 自动内存保留的最小阈值
默认情况下,kexec-tools
工具配置 crashkernel
命令行参数,并为 kdump
保留特定内存量。但是,在某些系统中,仍可使用引导装载程序配置文件中的 crashkernel=auto
参数为 kdump
分配内存,或者在图形配置工具中启用这个选项。要使此自动保留正常工作,系统中需要有一定数量的总内存。内存要求因系统架构而异。如果系统内存小于指定的阈值,则您必须手动配置内存。
构架 | 所需的内存 |
---|---|
AMD64 和 Intel 64 ( | 2 GB |
IBM Power 系统 ( | 2 GB |
IBM Z ( | 4 GB |
RHEL 9 及更新的版本不再支持引导命令行中的 crashkernel=auto
选项。
41.5.3. 支持的 kdump 目标
当发生内核崩溃时,操作系统会将转储文件保存在配置的或默认的目标位置上。您可以将转储文件直接保存到设备上,将其作为文件存储在本地文件系统上,或者通过网络发送转储文件。使用以下转储目标的列表,您可以知道 kdump
目前支持的或不支持的目标。
目标类型 | 支持的目标 | 不支持的目标 |
---|---|---|
物理存储 |
|
|
网络 |
|
|
虚拟机监控程序(Hypervisor) |
| |
文件系统 | ext[234]、XFS 和 NFS 文件系统。 |
|
固件 |
|
其它资源
41.5.4. 支持的 kdump 过滤等级
要缩小转储文件的大小,kdump
使用 makedumpfile
内核收集器压缩数据,并排除不需要的信息,例如,您可以使用 -8
级别来删除 hugepages
和 hugetlbfs
页。makedumpfile
当前支持的级别可在 Filtering levels for `kdump` 表中看到。
选项 | 描述 |
---|---|
| 零页 |
| 缓存页 |
| 缓存私有 |
| 用户页 |
| 可用页 |
其它资源
41.5.5. 支持的默认故障响应
默认情况下,当 kdump
创建内核转储失败时,操作系统会重启。但是,当无法将内核转储保存到主目标时,您可以将 kdump
配置为执行不同的操作。
选项 | 描述 |
---|---|
| 尝试将内核转储保存到 root 文件系统。这个选项在与网络目标合并时特别有用:如果网络目标无法访问,这个选项配置 kdump 以在本地保存内核转储。之后会重启该系统。 |
| 重启系统,这个过程会丢失 core 转储文件。 |
| 关闭系统,这个过程会丢失 core 转储文件。 |
| 关闭系统,这个此过程会丢失 core 转储。 |
| 从 initramfs 内运行 shell 会话,允许用户手动记录核心转储。 |
|
在 |
其它资源
41.5.6. 使用 final_action 参数
当 kdump
成功或者 kdump
无法在配置的目标处保存 vmcore
文件时,您可以使用 final_action
参数执行额外的操作,如 reboot
、halt
和 poweroff
。如果没有指定 final_action
参数,则 reboot
是默认的响应。
流程
要配置
final_action
,请编辑/etc/kdump.conf
文件并添加以下选项之一:-
final_action reboot
-
final_action halt
-
final_action poweroff
-
重启
kdump
服务,以使更改生效。# kdumpctl restart
41.5.7. 使用 failure_action 参数
failure_action
参数指定在内核崩溃时转储失败时要执行的操作。failure_action
的默认操作是重启 重启系统
。
参数接受以下要执行的操作:
reboot
- 转储失败后重启系统。
dump_to_rootfs
- 当配置了非 root 转储目标时,将转储文件保存在 root 文件系统上。
halt
- 关闭系统。
poweroff
- 停止系统上正在运行的操作。
shell
-
在
initramfs
中启动 shell 会话,您可以从中手动执行其他恢复操作。
流程
要将操作配置为在转储失败时执行的操作,请编辑
/etc/kdump.conf
文件并指定其中一个failure_action
选项:-
failure_action reboot
-
failure_action halt
-
failure_action poweroff
-
failure_action shell
-
failure_action dump_to_rootfs
-
重启
kdump
服务,以使更改生效。# kdumpctl restart