15.3. 配置 kdump 目标
崩溃转储通常以一个文件形式存储在本地文件系统中,直接写入设备。或者,您可以为崩溃转储进行设置,以通过使用 NFS
或 SSH
协议的网络进行发送。一次只能设置其中一个选项来保留崩溃转储文件。默认行为是将其存储在本地文件系统的 /var/crash/
目录中。
先决条件
- 您在系统上具有 root 权限。
-
满足
kdump
配置和目标的要求。详情请查看 支持的 kdump 配置和目标。
流程
要将崩溃转储文件保存在本地文件系统的
/var/crash/
目录中,请编辑/etc/kdump.conf
文件并指定路径:path /var/crash
选项
path /var/crash
代表kdump
在其中保存崩溃转储文件的文件系统的路径。注意-
当您在
/etc/kdump.conf
文件中指定转储目标时,路径是相对于指定的转储目标。 -
当您没有在
/etc/kdump.conf
文件中指定转储目标时,该路径表示根目录的绝对路径。
根据当前系统中挂载的内容,会自动执行转储目标和调整的转储路径。
要保护
kdump
生成的崩溃转储文件和附带文件,您应该为目标目的地目录设置正确的属性,如用户权限和 SELinux 上下文。另外,您可以定义一个脚本,如kdump.conf
文件中的kdump_post.sh
,如下所示:kdump_post <path_to_kdump_post.sh>
kdump_post
指令指定一个 shell 脚本或在kdump
完成捕获 后 执行的命令,并将崩溃转储保存到指定的目的地。您可以使用此机制来扩展kdump
的功能,以执行包括文件权限的调整等操作。-
当您在
例 15.1. kdump
目标配置
# grep -v ^# /etc/kdump.conf | grep -v ^$
ext4 /dev/mapper/vg00-varcrashvol
path /var/crash
core_collector makedumpfile -c --message-level 1 -d 31
此处,转储目标被指定(ext4 /dev/mapper/vg00-varcrashvol
),因此在 /var/crash
处挂载。path
选项也被设置为 /var/crash
,因此 kdump
会将 vmcore
文件保存在 /var/crash/var/crash
目录中。
要更改要保存崩溃转储的本地目录,请以
root
用户身份编辑/etc/kdump.conf
配置文件:-
从
#path /var/crash
行的开头删除哈希符号(#
)。 使用预期的目录路径替换该值。例如:
path /usr/local/cores
重要在 RHEL 8 中,当
kdump
systemd
服务启动时,使用path
指令定义为kdump
目标的目录必须存在,以避免失败。这个行为与 RHEL 之前的版本不同,其中如果服务启动时目录不存在,则会自动创建该目录。
-
从
要将文件写入不同的分区,请编辑
/etc/kdump.conf
配置文件:根据您的选择,从
#ext4
行的开头删除哈希符号(#
)。-
设备名称(
#ext4 /dev/vg/lv_kdump
行) -
文件系统标签(
#ext4 LABEL=/boot
行) -
UUID(
#ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
行)
-
设备名称(
将文件系统类型和设备名称、标签或 UUID 改为所需的值。指定 UUID 值的正确语法是
UUID="correct-uuid"
和UUID=correct-uuid
。例如:ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
重要建议您使用
LABEL=
或UUID=
指定存储设备。无法保证/dev/sda3
等磁盘设备名称在重启后保持一致。当您在 IBM Z 硬件上使用 Direct Access Storage Device (DASD)时,请确保在使用
kdump
前,转储设备已在/etc/dasd.conf
中被正确指定。
要将崩溃转储直接写入设备,请编辑
/etc/kdump.conf
配置文件:-
从
#raw /dev/vg/lv_kdump
行的开头删除哈希符号(#
)。 使用预期的设备名称替换该值。例如:
raw /dev/sdb1
-
从
要使用
NFS
协议将崩溃转储保存到远程机器上:-
从
#nfs my.server.com:/export/tmp
行的开头删除哈希符号(#
)。 使用有效的主机名和目录路径替换该值。例如:
nfs penguin.example.com:/export/cores
重启
kdump
服务以使更改生效:sudo systemctl restart kdump.service
注意当使用 NFS 指令指定 NFS 目标时,
kdump.service
会自动尝试挂载 NFS 目标来检查磁盘空间。不需要事先挂载 NFS 目标。要防止kdump.service
挂载目标,请在kdump.conf
中使用dracut_args --mount
指令,以便kdump.service
使用指定 NFS 目标的--mount
参数来调用dracut
工具。
-
从
要使用 SSH 协议将崩溃转储保存到远程机器上:
-
从
#ssh user@my.server.com
行的开头删除哈希符号(#
)。 - 使用有效的用户名和密码替换该值。
在配置中包含您的 SSH 密钥。
-
从
#sshkey /root/.ssh/kdump_id_rsa
行的开头删除哈希符号。 将该值改为您要转储的服务器中有效密钥的位置。例如:
ssh john@penguin.example.com sshkey /root/.ssh/mykey
-
从
-
从