华为云服务器内核参数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相关配置。

vim /etc/sysctl.conf

在/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保存并退出。
执行以下命令,使配置生效。

sysctl –p

图3 配置生效

该修复方案热生效,无需重启ECS。

结果验证

执行以下命令,查看结果是否为0。

cat /proc/sys/kernel/panic_on_unrecovered_nmi

图4 检查结果1

执行以下命令,查看内核参数sysctl -n kernel.unknown_nmi_panic是否为0。

图5 检查结果2

如果验证结果符合预期,说明修改成功。

父主题: 操作系统类(Linux)

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家