问题背景
客户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。
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日志如下,如果确为内核恐慌导致,里面的信息取出来,可以分析出原因。