Kdump是Linux的内核崩溃转储机制,能在系统崩溃(如内核panic)时捕获内存信息,便于事后故障分析,该机制需要预留内存(称为crashkernel)来保存转储信息。如果您的Linux服务器内存较小,可参考本文档关闭kdump释放预留内存,提高内存的利用率。
操作步骤
释放系统预留内存并关闭Kdump服务,在系统故障时可能无法收集内核崩溃信息,导致无法及时定位和修复内核相关的问题,从而影响服务器的稳定性,请您谨慎操作。
-
查看系统预留内存。
-
执行以下命令,确认系统是否已开启crashkernel。
cat /proc/cmdline如果返回结果中包括了
crashkernel选项,说明已开启crashkernel。[xxx ~]$ cat /proc/cmdline BOOT_IMAGE=(hd0,gpt3)/boot/vmlinuz-5.10.134-16.3.al8.x86_64 root=UUID-d8aa6372-11c4-4d2d-ae0a-177d968a6c3c ro crashkernel=0M-2G:0M,2G-8G:192M,8G-128G:256M,128G-:384M cryptomgr.notests cgroup.memory=nokmem rcupdate.rcu_cpu_stall_timeout=300 vring_force_dma_api rhgb quiet biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs e.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 -
执行以下命令,查看系统预留内存大小。
cat /sys/kernel/kexec_crash_size回显信息表示系统预留内存大小为201326592 B,即192 MiB。
201326592
-
释放系统预留内存并关闭Kdump服务。
-
执行以下命令,备份grub配置文件。
sudo cp /etc/default/grub /etc/default/grub.bak -
执行以下命令,删除
crashkernel配置。-
Alibaba Cloud Linux/CentOS
sudo grubby --update-kernel=ALL --remove-args="crashkernel" -
Ubuntu/Debian
sudo sed -i 's/crashkernel=[^[:space:]]*[[:space:]]*//g' /etc/default/grub
-
-
执行以下命令,更新grub配置。
-
Alibaba Cloud Linux/CentOS
sudo grub2-mkconfig -o /boot/grub2/grub.cfg -
Ubuntu/Debian
sudo update-grub
-
-
执行以下命令,关闭Kdump服务并禁止开启自启动。
-
Alibaba Cloud Linux/CentOS
sudo systemctl stop kdump sudo systemctl disable kdump -
Ubuntu/Debian
sudo systemctl stop kdump-tools sudo systemctl disable kdump-tools
-
-
执行以下命令,重启系统以使更改生效。
sudo reboot
-
-
验证结果。
-
执行以下命令,查看kdump状态。确认kdump状态为
inactive (dead),即kdump服务已停止运行。-
Alibaba Cloud Linux/CentOS
sudo systemctl status kdump命令返回结果中,Active 状态为
inactive (dead),表示 kdump 服务未运行。[adm: jawoZ ~]$ sudo systemctl status kdump ● kdump.service - Crash recovery kernel arming Loaded: loaded (/usr/lib/systemd/system/kdump.service; disabled; vendor preset: enabled) Active: inactive (dead) -
Ubuntu/Debian
sudo systemctl status kdump-toolssudo systemctl status kdump-tools o kdump-tools.service - Kernel crash dump capture service Loaded: loaded (/lib/systemd/system/kdump-tools.service; disabled; preset: enabled) Active: inactive (dead)
-
-
执行以下命令,查看grub配置文件。
cat /proc/cmdline如果回显信息中不显示crashkernel配置,表示删除crashkernel配置已生效。
[acxxxuoZ ~]$ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.10.0-957.21.3.el7.x86_64 root=UUID=1114fe9e-2309-4580-b183-d778e6d97397 ro rhgb quiet idle=halt biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8 noibrs nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295 -
执行以下命令,查看预留内存大小。
cat /sys/kernel/kexec_crash_size如果回显信息显示
0,表示系统预留内存已释放。