centos linux 7本身的内核为3.10,比较老,很多新的特性都没有,可以考虑使用第三方的比较新的内核。如ELRepo仓库就提供了kernel 4.4.x的长期支持版本及5.0.x的最新版.

启用 ELRepo 仓库: 导入密钥: rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org 安装yum源包: yum install -y https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

安装内核: yum --enablerepo=elrepo-kernel install kernel-lt -y

配置启动内核,使用最新的就可以了: egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \' grub2-set-default 0

kernel 4.4 对kdump参数有调整,需做如下修改: vim /etc/default/grubcrashkernel=auto 改成: crashkernel=128M

可使用以下命令一键修改: sed -i 's/crashkernel=auto/crashkernel=128M/' /etc/default/grub 否则使用新内核重启后kdump会报错。

生成新的配置文件 grub2-mkconfig -o /boot/grub2/grub.cfg

重启机器: reboot

重启后可以看看kdump服务是否正常: systemctl status kdump

以下命令可以测试做一次kernel dump:

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

如果需要更新header包及devel包,操作可参考:

yum --enablerepo=elrepo-kernel install kernel-ml
yum --enablerepo=elrepo-kernel -y swap kernel-headers -- kernel-ml-headers
yum --enablerepo=elrepo-kernel -y swap kernel-tools-libs -- kernel-ml-tools-libs
yum --enablerepo=elrepo-kernel -y install kernel-ml-tools
yum --enablerepo=elrepo-kernel -y swap kernel-devel -- kernel-ml-devel
grub2-set-default 0
grub2-mkconfig -o /boot/grub2/grub.cfg

这样当系统出问题时,就能方便调试问题了。