文档首页/ 弹性云服务器 ECS/ 故障排除/ 操作系统类(Linux)/ 内核参数kernel.unknown_nmi_panic配置错误导致Linux ECS实例异常重启
更新时间:2024-10-30 GMT+08:00

内核参数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产生非预期的异常重启事件。

解决方案

  1. 远程登录ECS实例。
  2. 执行以下命令,查看ECS实例内核参数kernel.unknown_nmi_panic的值。

    sysctl -n kernel.unknown_nmi_panic

    如果内核参数的取值为1,说明是由于内核参数配置错误引起的ECS实例异常重启。

    图1 排查结果
  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文件
  2. 按“Esc”,输入:wq保存并退出。
  3. 执行以下命令,使配置生效。

    sysctl –p

    图3 配置生效

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

结果验证

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

    cat /proc/sys/kernel/panic_on_unrecovered_nmi

    图4 检查结果1
  2. 执行以下命令,查看内核参数sysctl -n kernel.unknown_nmi_panic是否为0。
    图5 检查结果2

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