合 Linux崩溃转储服务之kdump
简介
kdump
是提供崩溃转储机制的服务。该服务可让您保存系统内存内容已用于分析。kdump
使用 kexec
系统调用在没有重启的情况下引导至第二个内核( 捕获内核),然后捕获崩溃内核的内存( 崩溃转储 或 vmcore)并将其保存到文件中。这个第二个内核位于系统内存保留的一部分。
内核崩溃转储可能会是系统失败时唯一可用的信息(关键错误)。因此,在关键任务环境中运行
kdump
非常重要。红帽建议系统管理员在正常内核更新周期内定期更新和测试kexec-tools
。这在部署了新内核功能时尤为重要。
您可以为机器上的所有安装内核启用 kdump
,或只为指定内核启用 kdump。当计算机上有多个内核使用时,这非常有用,其中一些内核足够稳定,没有关注它们可以崩溃。
安装 kdump
时,会创建一个默认的 /etc/kdump.conf
文件。该文件包含默认最小 kdump
配置。您可以编辑此文件来自定义 kdump
配置,但这不是必需的。
安装
检查是否在系统上安装了
kdump
:1# rpm -q kexec-tools如果安装了该软件包,输出:
1# kexec-tools-2.0.22-13.el9.x86_64如果没有安装该软件包,输出:
1package kexec-tools is not installed通过以下方法安装
kdump
和其他必要的软件包:1# dnf install kexec-tools
启用和禁用 kdump 服务
要在引导时启动 kdump
服务,请按照以下步骤操作。
先决条件
- 实现了配置和目标的
kdump
要求。 - 安装
kdump
的所有配置都是根据您的需要设置的。
步骤
要启用
kdump
服务,请使用以下命令:1# systemctl enable kdump.service这为
multi-user.target
启用服务。要在当前会话中启动该服务,请使用以下命令:
1# systemctl start kdump.service要停止
kdump
服务,请输入以下命令:1# systemctl stop kdump.service要禁用
kdump
服务,请执行以下命令:1# systemctl disable kdump.service
警告
建议将 kptr_restrict=1
设置为默认值。当将 kptr_restrict
设置为 (1) 作为默认时,kdumpctl
服务会加载崩溃内核,即使启用了内核地址空间布局 (KASLR)。
故障排除步骤
当 kptr_restrict
没有设置为 (1) 时,如果启用了 KASLR,则 /proc/kore
文件的内容都会生成为零。因此,kdumpctl
服务无法访问 /proc/kcore
并载入崩溃内核。
要临时解决这个问题,kexec-kdump-howto.txt
文件会显示警告信息,指定将推荐的设置保留为 kptr_restrict=1
。
要确定 kdumpctl
服务载入崩溃内核,请验证:
sysctl.conf
文件中的内核kptr_restrict=1
。
在命令行中配置 kdump
在系统引导过程中为 kdump
保留内存。内存大小是在系统的 Grand Unified Bootloader (GRUB)配置文件中配置的。内存大小取决于配置文件中指定的 crashkernel=
值以及系统物理内存的大小。
配置 kdump 内存用量
kexec-tools
软件包维护默认的 crashkernel
内存保留值。kdump
服务使用默认值为每个内核保留 crashkernel
内存。
kdump
自动内存分配根据系统硬件架构和可用内存大小而有所不同。例如,在 64 位 ARM 架构中,只有可用内存超过 1 GB 时,crashkernel
默认参数才会正常工作。kexec-tools
默认情况下,在 64 位 ARM 架构中配置以下内存保留:
1 | crashkernel=1G-4G:256M,4G-64G:320M,64G:576M |
崩溃内核的内存要求可能会因硬件和机器规格而异。如果默认 crashkernel
值无法在您的系统中工作,您可以运行 kdumpctl estimate
命令并查询 rough estimate 的值,而不触发崩溃。估算的 crashkernel
值可能并不准确,可作为设置适当的 crashkernel
值的参考。
注意
RHEL 9 及更新的版本不再支持引导命令行中的 crashkernel=auto
选项。
先决条件
- 在系统中具有 root 权限。
- 实现了配置和目标的
kdump
要求。详情请查看支持的 kdump 配置和目标 - 在 IBM Z 系统中,确保安装了
zipl
工具。
流程
为
crashkernel
配置默认值:本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!