kdump配置不生效主因是crashkernel未预留成功或服务未加载捕获内核:需验证/proc/cmdline含crashkernel参数、/sys/kernel/kexec_crash_size非零、/proc/meminfo有CrashKernel行,三者缺一不可。
kdump 配置不生效,90% 是 crashkernel 没预留成功或 kdump 服务没真正加载捕获内核——先验证这两点,别急着改。
crashkernel 参数是否真的生效了
内核启动时没预留内存,kdump 就是空转。不能只看
配置文件里有没有写,得看运行时状态:
执行
,确认输出中包含
(比如
或
)
执行
,返回值应是非零数字(单位字节),比如
表示 128MB;返回
就说明根本没预留
执行
,应看到类似
的行;没有则失败
常见坑:
在某些老内核或小内存机器(crashkernel=128M(x86_64)或
(ARM64)
kdump 服务是否加载了捕获内核
服务状态显示 active ≠ 捕获内核已就绪。必须确认第二内核镜像和 initramfs 已载入内存:
执行
,重点看最后一行日志是否含
或
后无报错
执行
(部分发行版提供),输出应为
执行
,确认 initramfs 里有 kdump 相关模块(如
、
)
常见坑:升级内核后没重建 kdump initramfs;需手动运行
或
触发崩溃后 vmcore 没生成在 /var/crash
不是所有“崩溃”都会走 kdump 流程,也不是所有配置路径都默认可用:
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
手动触发前务必执行
,否则
无效
检查
中
是否指向可写目录,且该目录所在文件系统有足够空间(至少 > 当前
中的
值)
若用 NFS 或 SSH 存储,确保
行配置正确,且目标端口/认证/路径可达;本地调试建议先用
这类裸设备方式绕过挂载问题
常见坑:
若压缩失败(如内存碎片严重),会静默跳过写入;临时可注释该行改用
看是否能生成未压缩 vmcore
用 crash 分析 vmcore 时提示版本不匹配或符号缺失
crash 不是通用二进制,它和内核版本、架构、调试符号强绑定:
执行
确认 vmcore 架构(如
),再用对应架构编译的
(比如 ARM64 环境不能用 x86_64 的 crash)
执行
——
必须带完整调试信息,仅
不行;RHEL/CentOS 装
包,Ubuntu 装
若提示
,说明
文件损坏或版本不对;可用
验证是否存在
节
常见坑:容器或云主机里
不可用,但 crash 仍会尝试读取;加
参数跳过(
)
最易被忽略的是:kdump 启动的捕获内核不加载原系统的任何模块(比如 RAID、NVMe 驱动),所以如果 rootfs 在 LVM/RAID/NVMe 上,
中必须显式用
加载对应驱动,否则 vmcore 写不进磁盘。
/etc/kdump.confgrubcat /proc/cmdlinecrashkernel=...crashkernel=autocrashkernel=128M@64Mcat /sys/kernel/kexec_crash_size1342177280grep Crash /proc/meminfoCrashKernel: 128000 kBcrashkernel=autocrashkernel=256Msystemctl status kdumpLoaded kdump kernelStarting kdump servicekdumpctl statusKdump is operational.lsinitrd /boot/initramfs-$(uname -r)kdump.img | grep -i "kdump\|crash"kernel/drivers/char/tpm/makedumpfilekdumpctl force-rebuilddracut -f --regenerate-allecho 1 > /proc/sys/kernel/sysrqecho c > /proc/sysrq-trigger/etc/kdump.confpathfree -musednetworkext4 /dev/sda1core_collector makedumpfile -c --message-level 1 -d 31core_collector cpfile /var/crash/*/vmcoreARM aarch64crashcrash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/*/vmcorevmlinuxvmlinuzkernel-debuginfolinux-image-$(uname -r)-dbgsymNo debugging data availablevmlinuxreadelf -S /path/to/vmlinux | grep debug.debug_*/proc/kcore-scrash -s vmlinux vmcore/etc/kdump.confextra_modules