第 12 章 在命令行中配置 kdump

在系统引导过程中为 kdump 保留内存。内存大小是在系统的 Grand Unified Bootloader (GRUB)配置文件中配置的。内存大小取决于配置文件中指定的 crashkernel= 值以及系统物理内存的大小。

12.1. 在 RHEL 9 上配置 kdump 内存使用

kexec-tools 软件包维护默认的 crashkernel= 内存保留值。kdump 服务使用默认值为每个内核保留崩溃内核内存。默认值也可以充当参考基础值,来在手动设置 crashkernel= 值时估算所需的内存大小。崩溃内核的最小大小可能会因硬件和机器规格而异。

kdump 自动内存分配根据系统硬件架构和可用内存大小而有所不同。例如,在 AMD 和 Intel 64 位构架上,只有可用内存超过 1 GB 时,crashkernel= 参数的默认值才能正常工作。kexec-tools 工具在 AMD64 和 Intel 64 位构架上配置以下默认内存保留:

crashkernel=1G-4G:192M,4G-64G:256M,64G:512M

您还可以运行 kdumpctl estimate 在不触发崩溃的情况下查询一个粗略估算值。估算的 crashkernel= 值可能不是很准确,但可作为设置适当 crashkernel= 值的参考。

注意

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

先决条件

  • 您在系统上具有 root 权限。
  • 您已满足配置和目标的 kdump 要求。详情请查看支持的 kdump 配置和目标
  • 如果是 IBM Z 系统,您已安装了 zipl 工具。

流程

  1. 为崩溃内核配置默认值。

    # kdumpctl reset-crashkernel --kernel=ALL

    在配置 crashkernel= 值时,通过启用了 kdump 的重启来测试配置。如果 kdump 内核无法引导,请逐渐增加内存大小来设置一个可接受的值。

  2. 要使用自定义 crashkernel= 值:

    1. 配置所需的内存保留。

      crashkernel=192M

      另外,您可以根据使用语法 crashkernel=<range1>:<size1>,<range2>:<size2> 安装的总内存量,将保留的内存量设置为一个变量。例如:

      crashkernel=1G-4G:192M,2G-64G:256M

      如果系统内存总量为 1 GB 或大于 4 GB,则示例保留 192 MB 内存。如果内存量超过 4 GB,则为 kdump 保留 256 MB。

    2. (可选)偏移保留的内存。

      有些系统需要保留内存并带有特定的固定偏移,因为崩溃内核保留非常早,并且希望保留一些区域供特殊使用。如果设置了偏移,则保留内存从此偏移开始。要偏移保留的内存,请使用以下语法:

      crashkernel=192M@16M

      示例保留从 16 MB 开始的 192 MB 内存(物理地址 0x01000000)。如果您偏移到 0 或没有指定值,则 kdump 会自动偏移保留的内存。您还可以在设置变量内存保留时偏移内存,方法是将偏移指定为最后一个值。例如: crashkernel=1G-4G:192M,2G-64G:256M@16M

    3. 更新引导装载程序配置。

      # grubby --update-kernel ALL --args "crashkernel=<custom-value>"

      <custom-value>必须包含您为崩溃内核配置的自定义 crashkernel= 值。

  3. 重启以使更改生效。

    # reboot

验证

通过激活 sysrq 键使内核崩溃。address-YYYY-MM-DD-HH:MM:SS/vmcore 文件保存在 /etc/kdump.conf 文件中指定的目标位置。如果您选择默认目标位置,则 vmcore 文件将保存在挂载在 /var/crash/ 下的分区中。

警告

测试 kdump 配置的命令将导致内核崩溃,且数据丢失。按照说明进行操作,不要使用活跃的生产系统来测试 kdump 配置

  1. 激活 sysrq 键,以引导到 kdump 内核。

    # echo c > /proc/sysrq-trigger

    该命令可使内核崩溃,并重启内核(如果需要的话)。

  2. 显示 /etc/kdump.conf 文件,并检查 vmcore 文件是否已保存到目标位置。