最近有一台物理服務器,centos7操作系統,無故重啟,每天都會發生這種情況:
解決:
升級內核
CentOS 允許使用 ELRepo,這是一個第三方倉庫,可以將內核升級到最新版本,使用ELRepo升級內核,比較簡單;
1、
沒升級之前先查看一下內核:uname -sr
![]()
ELRepo 倉庫每過一段時間可能會升級,具體情況可參考此網站:http://elrepo.org/tiki/tiki-index.php

要在 CentOS 7 上啟用 ELRepo 倉庫,請運行:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #導入key,如果失敗, 執行下面一步yum
yum update nss
![]()
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm #升級安裝 ELRepo

2、
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available #查看

3、
安裝最新的主線穩定內核:
yum --enablerepo=elrepo-kernel install kernel-ml #中間會有提示都輸入y即可
4、
編輯/etc/default/grub 並設置 GRUB_DEFAULT=0 意思是 GRUB 初始化頁面的第一個內核將作為默認內核。

查看系統當前可使用的內核;
cat /boot/grub2/grub.cfg |grep menuentry

圖中4.18版本的就是剛才安裝的內核,
5、
#修改開機時默認使用的內核,(此處應看清自己的內核版本,不要一味的復制)
grub2-set-default 'CentOS Linux (4.18.3-1.el7.elrepo.x86_64) 7 (Core)'
![]()
然后重啟系統;
6、
重啟完后查看當前使用的內核,發現已經升級完成了;

我的系統升級完內核,觀察了一個多星期,沒有出現過自動重啟的現象;
還有一些其他的解決辦法,我沒有測試,如下: (具體問題還要仔細去分析日志)
如:
解決方法:
# 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導致的故障
