以 Ubuntu 18.04/Ubuntu 20.04/Ubuntu 22.04/Ubuntu 24.04/Debian 10/Debian 11/Debian 12 操作系统为例,可参考如下步骤关闭 kdump 及释放 kdump 预留的内存。
1.执行如下命令停止 kdump-tools 服务及禁止开机启动并查看相关状态。
systemctl disable kdump-tools --now
systemctl status kdump-tools
systemctl is-enabled kdump-tools2.修改 /etc/default/grub 或 /etc/default/grub.d 的配置,将 GRUB_CMDLINE_LINUX 或 GRUB_CMDLINE_LINUX_DEFAULT中的 crashkernel 配置去掉,更新配置到启动文件。
执行如下命令备份 /etc/default/grub 文件。
cp /etc/default/grub /etc/default/grub.bak.$(date +%Y%m%d) 使用 vim 或其他编辑器将 /etc/default/grub 中 GRUB_CMDLINE_LINUX 或 GRUB_CMDLINE_LINUX_DEFAULT 行的 crashkernel=XXX 配置项(如下图标红内容)清除并保存。
3.如果 /etc/default/grub 中无 crashkernel 相关配置,请检查 /etc/default/grub.d 中的 kdump-tools.cfg 配置文件是否有 crashkernel 相关配置(如下图标红内容),若存在将 crashkernel=XXX 配置项去掉即可。
4.具体操作:您可以执行如下命令进入 /etc/default/grub.d/ 目录,查看是否有 kdump-tools.cfg 文件、检查 kdump-tools.cfg 配置、备份文件、清除 crashkernel 相关配置并验证修改结果。
cd /etc/default/grub.d/
cat kdump-tools.cfg
cp kdump-tools.cfg kdump-tools.cfg.bak.$(date +%Y%m%d)
vim kdump-tools.cfg
cat kdump-tools.cfg5.执行如下命令更新 grub 配置文件。
update-grub6.重启服务器,验证 kdump-tools 服务是否关闭及 kdump 预留的内存是否释放。
在重启服务器之后,可以通过执行以下命令来检查服务器是否已成功重启(通过查看 uptime 命令显示的时间是否为执行重启操作至当前时间的时间间隔来判断)、kdump 服务状态是否为 inactive (dead) 状态、crash 预留的内存大小 /sys/kernel/kexec_crash_size 是否为0、Linux 启动的命令行参数 /proc/cmdline 是否无 crashkernel 相关配置。
uptime
systemctl status kdump-tools
cat /sys/kernel/kexec_crash_size
cat /proc/cmdline如果服务器不允许重启,但想释放 kdump 占用的内存,可以执行如下命令清除 kdump 服务中为 crash 预留的内存。
echo 0 >/sys/kernel/kexec_crash_size通过如下命令验证内存地址空间不再为 kdump 预留,即返回值为0。
cat /sys/kernel/kexec_crash_size