18.3. 配置 kdump 目标

崩溃转储通常作为本地文件系统中的文件存储,直接写入设备。另外,您还可以为崩溃转储设置,以便使用 NFSSSH 协议通过网络发送。一次只能设置这些选项之一来保留崩溃转储文件。默认行为是将其保存在本地文件系统的 /var/crash/ 目录中。

先决条件

流程

  • 要在本地文件系统的 /var/crash/ 目录中存储崩溃转储文件,请编辑 /etc/kdump.conf 文件并指定路径:

    path /var/crash

    选项 路径 /var/crash 代表到 kdump 保存崩溃转储文件的文件系统的路径。当您在 /etc/kdump.conf 文件中指定转储目标时,路径相对于指定的转储目标。

    如果您没有在 /etc/kdump.conf 文件中指定转储目标,则该路径代表根目录的绝对路径。根据当前系统中挂载的内容,会自动执行转储目标和调整的转储路径。

kdump 将崩溃转储文件保存在 /var/crash/var/crash 目录中,当转储目标挂载到 /var/crash 时,选项 路径 也设置为 /etc/kdump.conf 文件中的 /var/crash。例如,在以下实例中,ext4 文件系统已挂载到 /var/crash,其 path 被设置为 /var/crash:

grep -v ^# etc/kdump.conf | grep -v ^$
ext4 /dev/mapper/vg00-varcrashvol
path /var/crash
core_collector makedumpfile -c --message-level 1 -d 31

这会导致 /var/crash/var/crash 路径。要解决这个问题,请使用选项 path / 而不是 path /var/crash

  • 要改变保存崩溃转储的本地目录,以 root 用户身份编辑 /etc/kdump.conf 配置文件,如下所述。

    1. #path /var/crash 行的开头删除 hash 符号("#")。
    2. 使用预期的目录路径替换该值。例如:

      path /usr/local/cores
      重要

      在 RHEL 8 中,当 kdump systemd 服务启动 - 否则服务失败,使用 path 指令定义的目录必须存在。这个行为与早期版本的 RHEL 不同,如果启动该服务时不存在该目录,则会自动创建该目录。

  • 要将文件写入不同的分区,以 root 用户身份编辑 /etc/kdump.conf 配置文件,如下所述。

    1. 根据您的选择,从 #ext4 行的开头删除 hash 符号("#")。

      • 设备名称( #ext4 /dev/vg/lv_kdump 行)
      • 文件系统标签( #ext4 LABEL=/boot 行)
      • UUID( #ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937 行)
    2. 将文件系统类型以及设备名称、标签或者 UUID 更改为所需值。例如:

      ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
      重要

      建议您使用 LABEL=UUID= 指定存储设备。无法保证 /dev/sda3 等磁盘设备名称在重启后保持一致。

  • 要将崩溃转储直接写入设备,请编辑 /etc/kdump.conf 配置文件:

    1. 删除 #raw /dev/vg/lv_kdump 行开头的哈希符号 ("#")。
    2. 使用预期的设备名称替换该值。例如:

      raw /dev/sdb1
  • 要使用 NFS 协议将崩溃转储保存到远程机器中,请编辑 /etc/kdump.conf 配置文件:

    1. 删除 #nfs my.server.com:/export/tmp 行开头的哈希符号 ("#")。
    2. 使用有效的主机名和目录路径替换该值。例如:

      nfs penguin.example.com:/export/cores
  • 要使用 SSH 协议将崩溃转储保存到远程机器中,请编辑 /etc/kdump.conf 配置文件:

    1. #ssh user@my.server.com 行的开头删除 hash 符号("#")。
    2. 使用有效的用户名和密码替换该值。
    3. 在配置中包含 SSH 密钥。

      • #sshkey /root/.ssh/kdump_id_rsa 行的开头删除哈希符号。
      • 将该值改为您要转储的服务器中有效密钥的位置。例如:

        ssh john@penguin.example.com
        sshkey /root/.ssh/mykey