报错现象:
线上有台服务器运行了了大概半年多,忽然收到报警服务器重启了,能够肯定不是人为操做致使的重启,如下是排查过程。
服务器品牌:Dell PowerEdge R720
系统版本:CentOS Linux release 7.1.1503
内核版本:3.10.0-229.el7.x86_64
查看messages日志报错信息以下:
# tail -1000 /var/log/messages | grep -i error

查看dmesg报错信息以下:
# dmesg | grep -E "error|Error|ERROR|fail|Fail|FAIL"
报错缘由:
因为BIOS中开启了中断重映射,在ERST(芯片集中的错误校验表)校验时发生错误,致使高级配置电源管理模块没法处理IPMI驱动请求,预存数据到内存发生错误,形成kernel寻找了空指针。
网上说这是kernel的一个bug,它不会当即形成重启,会在服务器200多天内没重启过就会自动重启,可是我以为这种说法不许确,线上有台服务器和这台不管是硬件品牌型号,系统版本、内核版本都是同样的,可是运行了440多天了也没有重启过,目前不知道具体是什么缘由会诱发这个问题。
发现有问题的内核版本:
Centos 6:2.6.32-220.el6.x86_64 、2.6.32-431.el6.x86_64 、2.6.32-71.el6.x86_64
Centos 7:3.10.0-229.el7.x86_64
解决方法:
方法一:
# vi /boot/grub/grub.conf
在kernel一行最后加上添加 intremap=off 或者 intremap=no_x2apic_optout
而后重启服务器便可。
参数解释:
intremap={on,off,nosid,no_x2apic_optout}
on:(默认值)开启中断重映射,BIOS中默认开启
off:关闭中断重映射
nosid:重映射时不对SID(Source ID)作检查
no_x2apic_optout:无视BIOS的设置,强制禁用x2APIC特性,主要用于解决某些对x2APIC支持有缺陷的BIOS致使的故障
方法二:(此方法会致使多核变单核,生成环境不要使用)
# vi /boot/grub/grub.conf
在kernel一行最后加上acpi=off noacip,关闭高级电源管理接口以下:
kernel ... acpi=off noacip
而后重启服务器便可。
方法三:更新系统内核
# yum install kernel
我升级到3.10.0-514.26.2.el7内核后,问题解决。关于内核升级的方法,请参看本站文章:
Centos 7/6 内核版本由3.10.0 升级至 4.12.4方法:
http://www.jiagoumi.com/work/1167.html
参考文章:
http://www.mamicode.com/info-detail-1724724.html
http://www.bubuko.com/infodetail-1781180.html