ubuntu系统开启kdump

问题背景

客户Ubuntu虚机出现夯死情况,无法输出有效日志,无法进一步排查,这个时候,需要考虑开启kdump,当系统发生崩溃时,kdump可以保存内核的内存状态,这对于查找崩溃原因和调试非常重要。开发人员可以分析转储文件,确定导致崩溃的代码或驱动程序。

当前移动云官网镜像虚机不会默认开启kdump,且没有安装kdump。

针对系统版本

Ubuntu系列

操作步骤

1. kdump安装

刷新包索引,执行apt update。

安装linux-crashdump,执行apt install linux-crashdump。

选择Y继续。

弹出提示框,选择Yes,回车。

选择Yes,配置kdump-tools默认enabled,回车。

安装完成。

2. Kdump配置

kdump配置语法如下:crashkernel=512M-:192M (此数值为默认值)。

该语法的含义为:如果服务器上面内存小于512M,不保留内存;如果服务器内存大于等于512M,保留192M。

注意
后面的值设置的大点,太小的话可能crash失败,看自己系统内存多大。
vi /etc/default/grub.d/kdump-tools.cfg

这里设置保留内存空间大小也为512M,预留大小根据服务器物理内存的大小来确定。

 

执行update-grub,更新grub。

控制台重启机器,(reboot操作会通过kexec快速启动内核,无法读取最新的grub.cfg配置信息)

执行kdump-config show检查kdump是否ready to kdump状态。

执行systemctl status kdump-tools检查是否激活。

至此,kdump开启成功,如果出现内核恐慌的情况下,内核会崩溃并搜集内存日志保存至/var/crash路径下。

3. kdump测试(本步骤为验证kdump是否开启成功,实际批量开启kdump的时候无需一一执行验证,可以挑选一台验证下是否成功)

echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger

系统crash重启,重新进入系统后去/var/crash路径下查看。

生成的vmcore日志如下,如果确为内核恐慌导致,里面的信息取出来,可以分析出原因。

 

 

本文档内容整理自移动云官方帮助中心(查看原文),仅供参考。