報錯現象:
線上有臺服務器運行了了大概半年多,忽然收到報警服務器重啓了,能夠肯定不是人爲操做致使的重啓,如下是排查過程。
服務器品牌: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
![20170824173356](http://static.javashuo.com/static/loading.gif)
查看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