Kdump 是什么
Kdump 是 Linux 内核的崩溃转储机制:系统正常运行时就预留一小块内存给第二个内核(crash kernel),主内核发生 panic 时由它接管,把内存镜像写到本地磁盘或远端(NFS、SSH),事后用 crash 工具分析。它不能阻止宕机,但决定宕机之后有没有证据可查。
基本信息
| 转储配置 | /etc/kdump.conf(路径与传输方式) |
|---|---|
| 系统参数 | /etc/sysconfig/kdump(RHEL 系)、/etc/default/kdump-tools(Debian 系) |
| 内核前提 | 内核命令行含 crashkernel= 预留参数 |
| 服务 | systemctl enable --now kdump |
| 权限要求 | root |
典型使用场景
- 生产服务器与数据库主机按基线要求开启转储,宕机后可定位根因
- 把 panic 现场交给内核或原厂工程师分析
- KVM 宿主机、超融合节点的故障复盘
- 等保类合规核查要求具备内核崩溃分析能力
- 内存扩容或更换内核版本后复核 crashkernel 预留是否仍合适
检查与启用
检查与启用
grep crashkernel /proc/cmdline # 是否已预留 crashkernel 内存
grep -E '^(path|nfs|ssh|raw|core_collector)' /etc/kdump.conf # 转储目标与收集器设置
kdumpctl status # 部分发行版用它做预留量与服务预检
systemctl status kdump --no-pager | head # 服务是否 active
vim /etc/default/grub # 在 GRUB_CMDLINE_LINUX 追加 crashkernel=512M
grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL 系重建引导配置,Debian 用 update-grub
reboot # 内核命令行改动必须重启才生效
ls -lh /var/crash/ # 转储落点,按 path 配置确认转储方式对照
| 方式 | 配置要点 | 适用条件 |
|---|---|---|
| 本地路径 | path /var/crash | 单机场景,磁盘余量要单独规划 |
| NFS | nfs server:/export | 集中收集,panic 后网络仍能通 |
| SSH | ssh user@目标机 | 跨网络收集,需预置免密密钥 |
| 裸设备分区 | raw /dev/sdaX | 需要专盘,写入不经过文件系统 |
crashkernel 预留量要按内存规模给:小内存机器 512M 通常够用,TB 级内存机器需要更大值或由内核自动估算;预留过小会转储失败,过大则白占业务内存。
转储文件本质是一份内存镜像,可能包含口令、密钥、业务明文数据,存放与清理要按数据保密要求管理,不能随手放在共享目录里不管。