内核参数kernel.unknown_nmi_panic配置错误导致Linux ECS实例异常重启
问题描述
Linux操作系统的ECS实例发生异常重启事件,错误提示如下:
Kernel panic - not syncing: NMI: Not continuing
同时,内核日志打印如下信息:
[645683.754132] Uhhuh. NMI received for unknown reason 20 on CPU 1. [645683.754133] Do you have a strange power saving mode enabled? [645683.754133] Kernel panic - not syncing: NMI: Not continuing
可能原因
如果Linux操作系统ECS实例的内核参数kernel.unknown_nmi_panic配置为1,则ECS会在系统收到NMI中断时主动通过panic系统重启。
通常情况下,将内核参数kernel.unknown_nmi_panic配置为1的目的是为了在发生NMI中断时,主动触发panic,从而进行系统定位。由于个别型号的CPU会在正常业务流程中产生NMI中断,在这种情况下如果将内核参数kernel.unknown_nmi_panic配置为1,将会导致ECS产生非预期的异常重启事件。
解决方案
- 远程登录ECS实例。
- 执行以下命令,查看ECS实例内核参数kernel.unknown_nmi_panic的值。
sysctl -n kernel.unknown_nmi_panic
如果内核参数的取值为1,说明是由于内核参数配置错误引起的ECS实例异常重启。
图1 排查结果
- 执行以下命令,查看是否存在内核参数kernel.unknown_nmi_panic相关配置。
在/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
图2 查看/etc/sysctl.conf文件
- 按“Esc”,输入:wq保存并退出。
- 执行以下命令,使配置生效。
图3 配置生效
该修复方案热生效,无需重启ECS。