15.3. 配置 kdump 目标
崩溃转储通常以一个文件形式存储在本地文件系统中,直接写入设备。另外,您可以使用 NFS
或 SSH
协议通过网络发送崩溃转储。一次只能设置其中一个选项来保留崩溃转储文件。默认行为是将其存储在本地文件系统的 /var/crash/
目录中。
先决条件
- 您在系统上具有 root 权限。
-
满足
kdump
配置和目标的要求。详情请查看 支持的 kdump 配置和目标。
流程
要将崩溃转储文件保存在本地文件系统的
/var/crash/
目录中,请编辑/etc/kdump.conf
文件并指定路径:path /var/crash
path /var/crash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 选项
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 <path_to_kdump_post.sh>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kdump_post
指令指定kdump
完成捕获并将崩溃转储保存到指定的目的地 后 执行的 shell 脚本或命令。您可以使用此机制扩展kdump
的功能,以执行包括调整文件权限在内的操作。-
kdump
目标配置
*grep -v ^# /etc/kdump.conf | grep -v ^$*
# *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
path /usr/local/cores
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要在 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
ext4 UUID=03138356-5e61-4ab3-b58e-27507ac41937
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要建议使用
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
raw /dev/sdb1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
从
使用
NFS
协议将崩溃转储保存到远程机器上:-
从
#nfs my.server.com:/export/tmp
行的开头删除哈希符号(#
)。 使用有效的主机名和目录路径替换该值。例如:
nfs penguin.example.com:/export/cores
nfs penguin.example.com:/export/cores
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
kdump
服务以使更改生效:sudo systemctl restart kdump.service
sudo systemctl restart kdump.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当使用 NFS 指令指定 NFS 目标时,
kdump.service
会自动尝试挂载 NFS 目标,来检查磁盘空间。不需要提前挂载 NFS 目标。要防止kdump.service
挂载目标,请在kdump.conf
中使用dracut_args --mount
指令。这将启用kdump.service
,通过--mount
参数指定 NFS 目标来调用dracut
工具。
-
从
使用 SSH 协议将崩溃转储保存到远程机器上:
-
从
#ssh user@my.server.com
行的开头删除哈希符号(#
)。 - 使用有效的用户名和密码替换该值。
在配置中包含您的 SSH 密钥。
-
从
#sshkey /root/.ssh/kdump_id_rsa
行的开头删除哈希符号。 将该值改为您要转储的服务器中有效密钥的位置。例如:
ssh john@penguin.example.com sshkey /root/.ssh/mykey
ssh john@penguin.example.com sshkey /root/.ssh/mykey
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
从
-
从