問題描述
使用Linux操作系統的彈性云主機發生異常重啟事件,錯誤提示如下:
Kernel panic – not syncing: NMI: Not continuing
同時,內核日志輸出如下信息:
[…] Uhhuh. NMI received for unknown reason 20 on CPU 1.
[…] Do you have a strange power saving mode enabled?
[…] Kernel panic - not syncing: NMI: Not continuing
可能原因
如果Linux操作系統彈性云主機的內核參數kernel.unknown_nmi_panic配置為1,則云主機實例會在系統收到NMI中斷時主動panic導致系統重啟。NMI中斷(Non-Maskable Interrupt,非可屏蔽中斷)是操作系統中的一種特殊類型的中斷,它具有比其他中斷更高的優先級,并且通常無法被屏蔽或忽略。因此NMI中斷通常用于處理一些關鍵的系統事件,例如硬件故障、系統崩潰、內存校驗錯誤等,這些事件需要立即引起處理,而不能等待其他正在進行的任務完成。內核參數kernel.unknown_nmi_panic配置為1的目的是為了通過觸發NMI中斷主動通過panic系統進行問題定位。不過由于個別型號的CPU會在正常業務流程中同樣產生NMI中斷,如果在這種情況下仍將內核參數kernel.unknown_nmi_panic配置為1,將會觸發云主機產生非預期的異常重啟事件。
解決方案
-
遠程登錄彈性云主機。
-
執行以下命令,查看該云主機關于內核參數kernel.unknown_nmi_panic的配置值
sysctl -n kernel.unknown_nmi_panic如果該參數的取值為1,說明是由于內核參數配置錯誤引起的云主機異常重啟。
[root@centos ~]# sysctl -n kernel.unknown_nmi_panic 1 -
在系統的/etc/sysctl.conf文件中查看是否存在內核參數kernel.unknown_nmi_panic相關配置。如果存在kernel.unknown_nmi_panic=1的配置,將該配置改為kernel.unknown_nmi_panic=0;如果不存在kernel.unknown_nmi_panic=1的配置,則在該文件中增加kernel.unknown_nmi_panic=0的配置信息。
-
執行systecl -p命令使配置生效。
[root@centos ~]# sysctl -p kernel.unknown_nmi_panic = 0
結果驗證
執行以下兩個命令,查看結果是否均為0。如果驗證結果符合預期,則說明修改成功。
[root@centos~]#cat
/proc/sys/kernel/panic_on_unrecovered_nmi
0
[root@centos ~]# sysctl -n kernel.unknown_nmi_panic
0