最近更新时间:2026-06-16 17:51:51
Kdump 利用 kexec 机制在主内核崩溃时快速启动"捕获内核",将当时内存转储为 vmcore,用于事后根因分析。
金山云云服务器镜像自带该功能,裸金属云服务器需要选配,会占用部分内存资源。
内存要求:至少需要预留 128MB 内存用于 Kdump。
磁盘空间:建议保留至少 1GB 空间用于存储 crash dump 文件。
内核版本:Linux kernel 2.6.17 或更高版本。
根据具体系统选择相应的安装操作。
安装 kexec-tools 和 crash 软件包。
sudo yum install kexec-tools crash启用并启动 kdump 服务。
sudo systemctl enable kdump
sudo systemctl start kdump检查服务状态。
sudo systemctl status kdump更新软件包列表。
sudo apt update安装必要软件包。
sudo apt install kdump-tools crash配置内核参数,编辑 /etc/default/grub,修改 GRUB_CMDLINE_LINUX 添加 crashkernel=128M
sudo nano /etc/default/grub更新 GRUB 配置。
sudo update-grub启用并启动 kdump 服务。
sudo systemctl enable kdump-tools
sudo systemctl start kdump-tools确认配置文件位置。
RHEL/CentOS:/etc/kdump.conf
Ubuntu/Debian:/etc/default/kdump-tool
检查内核启动参数中是否已包含 crashkernel 配置。
cat /proc/cmdline示例输出应包含类似:crashkernel=128M,high crashkernel=128M,low
检查 kdump 服务运行状态。
sudo systemctl status kdump检查内存保留情况。
dmesg | grep -i crash验证 kexec 是否已加载捕获内核。
sudo kexec -p /boot/vmlinuz-$(uname -r) --initrd=/boot/initramfs-$(uname -r).img --append="root=/dev/mapper/vg00-lvroot crashkernel=128M"以下操作会在测试系统上触发内核崩溃,仅在测试环境中执行。
使用 sysrq-trigger 触发崩溃(推荐)。
sudo -i
echo c > /proc/sysrq-trigger使用 magic_sysrq 触发崩溃。
sudo sync && echo 1 > /proc/sys/kernel/sysrq && echo c > /proc/sysrq-trigger使用 crash 命令分析生成的 vmcore。
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/*/vmcore参考前文操作完成Kdump的安装后,可进行相应参数修改。按内存阶梯分配 crashkernel 大小,适用于生产环境精准控制预留资源。
编辑 /etc/default/grub.d/kdump-tools.cfg,添加按内存阶梯分配的 crashkernel 参数。
vim /etc/default/grub.d/kdump-tools.cfgGRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT crashkernel=2G-4G:320M,4G-32G:512M,32G-64G:1024M,64G-128G:2048M,128G-:4096M"编辑 /etc/default/grub,删除 crashkernel=auto 以避免参数冲突。
vim /etc/default/grub重新生成 GRUB 配置使参数生效。
grub-mkconfig -o /boot/grub/grub.cfg验证配置是否已生效。
cat /proc/cmdlinedmesg | grep crash触发内核 panic 验证 Kdump 完整流程。
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger运行成功后,触发内核 panic,系统会断连,进入到 Kdump 捕获内核收集信息,收集完毕后系统自动重启并正常进入系统。
重启完毕后,在 /var/crash 目录中会生成一个以当前日期命名的目录,包含 dmesg.x 和 dump.x 两个文件。
纯净模式
