最近新购的几台服务器,安装了Debian 12镜像,发现2G内存的机器占用只有1.6G左右。经过一番深入探索之后,发现是crashkernel 参数设置问题。1G内存也能占用160M左右,对小内存主机非常不友好。

kernel crash dump

这玩意作用是内核崩溃后保存一个 dump 文件,用于内核调试。其对99% 的人没有什么用,毕竟我们不是技术党不懂调试(重装大法岂不是更好),开启之后还会吃内存,这对内存资源本就紧张的小规格实例(如 1 GB、2 GB 内存的云主机)而言,会进一步压缩可用内存,可能影响业务正常运行。

若您无内核调试需求,建议关闭 Kdump 功能,以释放内存资源,提升系统整体可用性。

关闭 kdump 服务

kdump 是 Linux 内核崩溃转储机制,默认会预留一部分内存。

1sudo systemctl disable --now kdump-tools
2sudo systemctl disable --now kdump

编辑GRUB文件

使用管理员权限打开终端编辑GRUB配置文件 /etc/default/grub

1apt install vim -y
2
3sudo vim /etc/default/grub

找到GRUB_CMDLINE_LINUX_DEFAULT 行: 在该行找到 crashkernel= 参数,如果没有参数,可以手动添加它,如果确定关闭就移除crashkernel=128M 之类参数。

1GRUB_CMDLINE_LINUX="quiet crashkernel=0M-1G:0M,1G-4G:160M,4G-8G:192M,8G-128G:384M,128G-:512M

当前规则里虽然把 0–1 GB 区间设为 0M,但 1 GB 以上依旧会预留 160 MB 起步;对于小内存机器仍然浪费。

完全删除 crashkernel= 是最干净的做法,除非你需要 kdump 做内核崩溃分析。

更新GRUB

修改完成后,保存退出编辑器,并更新GRUB配置:

1sudo update-grub
2
3# 重启使配置生效
4sudo reboot

完成上述步骤后,系统会重新配置。

可以运行以下命令确认

kernel crash dump

1# 查看配置
2cat /proc/cmdline
3
4# 查看可用内存
5free -h