linux 7 内核崩溃重启,CentOS7 内核崩溃后处理

关于kdump 和 crash

kdump是一种kernel crash dump的机制,它可以在内核crash时保存系统的内存信息用于后续的分析。kdump是基于kexec的。

crash是一个用于交互式地分析正在运行的Linux系统或者kernel crash后的core dump数据的工具。

在CentOS 7 中配置kdump

需要在kernel启动命令行参数中添加crashkernel参数,并启动kdump服务。

一般设置为 crashkernel=auto 表示根据系统内存自动reserve一些内存给kernelcrash用,在x86_64系统中内存大于等于2GB时会reserve内存,最小保留内存计算方法是:160 MB + 2 bits for every 4 KB of RAM.

当然,也可以设置crashkernel=512M这样的固定保留内存。

用 yum install kexec-tools 安装kdump工具和服务

用 systemctl start kdump 命令可以启动kdump.service,用 systemctl enable kdump 让dump服务在开机时自动启动。

kdump.service 相关的配置文件 /etc/kdump.conf 里面可以修改一些默认的配置,比如dump完成后的动作(默认是reboot)、dump文件存放的方式(本地目录、NFS、scp到另外服务器等)。

测试kdump

用root权限执行如下命令,可以让kernel crash。

1 echo 1 > /proc/sys/kernel/sysrq

2 echo c > /proc/sysrq-trigger

kernel dump完成后,系统重启,进入到 /var/crash/ 目录下可以看到保存下来的crash时系统的内存数据文件。 (默认保存在/var/crash目录)

安装好kernel-debuginfo包后,执行类似这样的crash命令即可进入交互式的分析:

crash /usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux /var/crash/127.0.0.1-2016-03-28-15\:28\:59/vmcore

在输入bt可以展示kernel-stack的backtrace,更多crash中的命令见 man crash。

RIP是函数中panic时的地址,可以看到是netlink,进行反编译查看

发现是cmp操作,通过查看源码对应行,解决问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值