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 自动保留内存。内存大小取决于系统的架构和总可用物理内存。

表 41.1. kdump 所需的最小保留内存量
架构可用内存最小保留内存

AMD64 和 Intel 64 (x86_64)

1 GB 到 4 GB

192 MB 内存

4 GB 到 64 GB

256 MB 内存

64 GB 及更多

512 MB 内存

64 位 ARM 架构 (arm64

2 GB 及更多

480 MB 内存

IBM Power 系统 (ppc64le)

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 (s390x)

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 分配内存,或者在图形配置工具中启用这个选项。要使此自动保留正常工作,系统中需要有一定数量的总内存。内存要求因系统架构而异。如果系统内存小于指定的阈值,则您必须手动配置内存。

表 41.2. 自动内存保留所需的最小内存量
构架所需的内存

AMD64 和 Intel 64 (x86_64)

2 GB

IBM Power 系统 (ppc64le)

2 GB

IBM  Z (s390x)

4 GB

注意

RHEL 9 及更新的版本不再支持引导命令行中的 crashkernel=auto 选项。

41.5.3. 支持的 kdump 目标

当发生内核崩溃时,操作系统会将转储文件保存在配置的或默认的目标位置上。您可以将转储文件直接保存到设备上,将其作为文件存储在本地文件系统上,或者通过网络发送转储文件。使用以下转储目标的列表,您可以知道 kdump 目前支持的或不支持的目标。

表 41.3. RHEL 8 上的 kdump 目标
目标类型支持的目标不支持的目标

物理存储

  • 逻辑卷管理器(LVM)。
  • 精简配置卷。
  • 光纤通道(FC)磁盘,如 qla2xxxlpfcbnx2fcbfa
  • 网络存储服务器上 iSCSI 软件配置的逻辑设备。
  • mdraid 子系统作为软件 RAID 解决方案。
  • 硬件 RAID,如 ccisshpsamegaraid_sasmpt2sasaacraid
  • SCSISATA 磁盘。
  • iSCSIHBA 卸载。
  • 硬件 FCoE,如 qla2xxxlpfc
  • BIOS RAID。
  • 带有 iBFT 的软件 iSCSI.目前支持的传输有 bnx2icxgb3icxgb4i
  • 带有混合设备驱动程序的软件 iSCSI,如 be2iscsi
  • 以太网上的光纤通道(FCoE)。
  • 传统 IDE.
  • GlusterFS 服务器。
  • GFS2 文件系统。
  • 集群逻辑卷管理器(CLVM)。
  • 高可用性 LVM 卷(HA-LVM)。

网络

  • 使用内核模块的硬件:tg3, igb, ixgbe, sfc, e1000e, bna, cnic, netxen_nic, qlge, bnx2x, bnx, qlcnic, be2net, enic, virtio-net, ixgbevf, igbvf
  • IPv4 协议。
  • 绑定在不同设备上的网络,如以太网设备或 VLAN。
  • VLAN 网络。
  • 网桥。
  • 网络 Team 。
  • 绑定上标记的 VLAN 和 VLAN。
  • 绑定、team 和 VLAN 上的桥接网络。
  • IPv6 协议。
  • 无线连接。
  • InfiniBand 网络。
  • 网桥和 team 上的 VLAN 网络。

虚拟机监控程序(Hypervisor)

  • 基于内核的虚拟机(KVM)。
  • 仅某些配置中的 Xen hypervisor 。
  • VMware ESXi 4.1 和 5.1。
  • 仅在 RHEL Gen1 UP 客户机上的 Hyper-V 2012 R2。
 

文件系统

ext[234]、XFS 和 NFS 文件系统。

Btrfs 文件系统。

固件

  • 基于 BIOS 的系统。
  • UEFI 安全引导。
 

其它资源

41.5.4. 支持的 kdump 过滤等级

要缩小转储文件的大小,kdump 使用 makedumpfile 内核收集器压缩数据,并排除不需要的信息,例如,您可以使用 -8 级别来删除 hugepageshugetlbfs 页。makedumpfile 当前支持的级别可在 Filtering levels for `kdump` 表中看到。

表 41.4. kdump的过滤级别
选项描述

1

零页

2

缓存页

4

缓存私有

8

用户页

16

可用页

41.5.5. 支持的默认故障响应

默认情况下,当 kdump 创建内核转储失败时,操作系统会重启。但是,当无法将内核转储保存到主目标时,您可以将 kdump 配置为执行不同的操作。

表 41.5. kdump的失败响应
选项描述

dump_to_rootfs

尝试将内核转储保存到 root 文件系统。这个选项在与网络目标合并时特别有用:如果网络目标无法访问,这个选项配置 kdump 以在本地保存内核转储。之后会重启该系统。

reboot

重启系统,这个过程会丢失 core 转储文件。

halt

关闭系统,这个过程会丢失 core 转储文件。

poweroff

关闭系统,这个此过程会丢失 core 转储。

shell

从 initramfs 内运行 shell 会话,允许用户手动记录核心转储。

final_action

kdump 成功,或 shelldump_to_rootfs 失败操作完成后,启用额外的操作,如 reboothaltpoweroff 操作。默认的 final_action 选项为 reboot

41.5.6. 使用 final_action 参数

kdump 成功或者 kdump 无法在配置的目标处保存 vmcore 文件时,您可以使用 final_action 参数执行额外的操作,如 reboothaltpoweroff。如果没有指定 final_action 参数,则 reboot 是默认的响应。

流程

  1. 要配置 final_action,请编辑 /etc/kdump.conf 文件并添加以下选项之一:

    • final_action reboot
    • final_action halt
    • final_action poweroff
  2. 重启 kdump 服务,以使更改生效。

    # kdumpctl restart

41.5.7. 使用 failure_action 参数

failure_action 参数指定在内核崩溃时转储失败时要执行的操作。failure_action 的默认操作是重启 重启系统

参数接受以下要执行的操作:

reboot
转储失败后重启系统。
dump_to_rootfs
当配置了非 root 转储目标时,将转储文件保存在 root 文件系统上。
halt
关闭系统。
poweroff
停止系统上正在运行的操作。
shell
initramfs 中启动 shell 会话,您可以从中手动执行其他恢复操作。

流程

  1. 要将操作配置为在转储失败时执行的操作,请编辑 /etc/kdump.conf 文件并指定其中一个 failure_action 选项:

    • failure_action reboot
    • failure_action halt
    • failure_action poweroff
    • failure_action shell
    • failure_action dump_to_rootfs
  2. 重启 kdump 服务,以使更改生效。

    # kdumpctl restart
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.