Menu Close

第 11 章 在命令行中配置 kdump

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

11.1. 配置 kdump 内存用量

kexec-tools 软件包维护默认的 crashkernel 内存保留值。kdump 服务使用默认值为每个内核保留 crashkernel 内存。

kdump 自动内存分配根据系统硬件架构和可用内存大小而有所不同。例如,在 AMD 和 Intel 64 位构架中,crashkernel 默认参数仅在可用内存大于 1 GB 时有效。默认情况下,kexec-tools 在 AMD64 和 Intel 64 位构架中配置以下内存保留:

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

崩溃内核的内存要求可能会因硬件和机器规格而异。如果默认 crashkernel 值无法在您的系统中工作,您可以运行 kdumpctl estimate 命令并查询 rough estimate 的值,而不触发崩溃。估算的 crashkernel 值可能并不准确,可作为设置适当的 crashkernel 值的参考。

注意

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

先决条件

  • root 权限
  • 实现了配置和目标的 kdump 要求。
  • 在 IBM Z 系统中,确保安装了 zipl 工具。

流程

  1. crashkernel 配置默认值:

    # kdumpctl reset-crashkernel --kernel=ALL
  2. (可选)要使用自定义 crashkernel 值:

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

      crashkernel=192M

      如果系统内存总量为 1 GB 或更高版本,且小于 4 GB,则示例保留 192 MB 内存。如果内存量大于 4 GB,则为 kdump 保留 256 MB。

      • (可选) 偏移保留内存:

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

        crashkernel=192M@16M

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

    2. 更新引导装载程序配置:

      # grubby --update-kernel ALL --args "crashkernel=<CUSTOM-VALUE>”

      在使用 zIPL 引导装载程序的 IBM Z 系统中,命令为每个 /boot/loader/entries/<ENTRY>.conf 文件添加新的内核参数。

      • 在 IBM Z 系统中,要更新引导菜单,在不指定选项的情况下执行 zipl 命令:

        # zipl
  3. 重启以使更改生效:

    # reboot

验证

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

    # echo 1 > /proc/sys/kernel/sysrq
    # echo c > /proc/sysrq-trigger

    这会强制 Linux 内核崩溃,并将 address-YYYY-MM-DD-HH:MM:SS/vmcore 文件复制到配置文件中指定的目标位置。

  2. 验证在 /etc/kdump.conf 文件中指定的目标中转储 vmcore 文件:

    $ ls /var/crash/127.0.0.1-2022-01-18-0
    
    /var/crash/127.0.0.1-2022-01-18-05:23:10':
    kexec-dmesg.log  vmcore  vmcore-dmesg.txt

    在本例中,内核将 vmcore 保存在默认目标目录中(/var/crash/)。