zoukankan      html  css  js  c++  java
  • 开机报错:Kernel panic

    昨天一台机器被重启后没办法启动,报以下错误:

      看这个以为原先虚拟机内存太小了,需要调大一些,但是设置了原先的2倍也没办法启动,感觉应该像是内核参数可能被调整错误了。 故进入救援模式查看原有系统中 /etc/sysctl.conf文件配置信息,果然 vm.min_free_kbytes值设置的超级大,达到了2T的内存大小。故修改器中为2G大小,之后就可以正常开机了。

    宕机原因:vm.min_free_kbytes 设定值高于 LowTotal 值,系统认为没有足够的lowmem,而触发OOM Killer,将进程强行杀掉

     具体分析:

      系统中内存分为 lowmem和highmem,其中 lowmem为寻址内存,当lowmem耗尽时,系统会触发OOM Killer将多余进程杀掉来释放内存(2.6内核会杀掉占用内存最高的进程)

     其中,64位系统会将所有内存大小都划分到 lowmem中,防止lowmem不够用,而32位系统时分开的,上限为896M左右,具体可通过 egrep 'High|Low' /proc/meminfo 命令查看。

       如果键vm.min_free_kbytes 的值设定大于LowTotal的值,则系统会认为当前没有足够的内存来触发OOM Killer,直至将所有进程杀掉,重启无法启动也是因为当启动时刚启动一个进程,系统就认为内存不足而将其杀掉,导致无法启动。

       在32位的linux里,系统认为lowmem就是当前内存的大小,只要lowmem不够用就认为内存不够用了,就开始杀进程来释放,设定vm.min_free_kbytes也就让系统空闲出多少lowmem,所以设定值超出lowmem会出现异常。

      

  • 相关阅读:
    CF Round433 B. Jury Meeting
    CF Round433 C. Planning
    繁忙的都市
    联络员
    组合数模板
    Rinne Loves Xor
    [SDOI2016]齿轮
    水题(water)
    Music Problem
    小H和游戏
  • 原文地址:https://www.cnblogs.com/Binggo30/p/13689411.html
Copyright © 2011-2022 走看看