Menu Close

11.2. 配置 kdump 目标

当捕获内核崩溃时,核心转储可以作为文件存储在本地文件系统中,直接写入设备,或使用 NFS (网络文件系统)或 SSH (Secure Shell) 协议通过网络发送。一次只能设置其中一个选项,默认的行为是将 vmcore 文件存储在本地文件系统的 /var/crash/ 目录中。

先决条件

  • 实现了配置和目标的 kdump 要求。

步骤

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

    # path /var/crash

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

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

警告

当转储目标挂载在 /var/crash,参数 path 已在 /etc/kdump.conf 文件的 /var/crash 部分设置时,kdump 会在 /var/crash/var/crash 目录中保存 vmcore 文件。例如,在以下实例中,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 9 中,当 kdump systemd 服务启动时,必须存在使用 path 指令定义的作为 kdump 目标的目录,否则服务会失败。这个行为与早期版本的 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 等磁盘设备名称在重启后保持一致。

      重要

      当转储到 IBM Z 硬件上的直接访问存储设备 (DASD) 时,在继续前已在 /etc/dasd.conf 中正确指定转储设备非常重要。

  • 将转储直接写入设备:

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

      # raw /dev/sdb1
  • 使用 NFS 协议将转储保存到远程机器中:

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

      # nfs penguin.example.com:/export/cores
  • 使用 SSH 协议将转储保存到远程机器中:

    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