zoukankan      html  css  js  c++  java
  • kdumpctl: No memory reserved for crash kernel.

    kdump 是一种 kernel crash dump 的机制,它可以在内核 crash 时保存系统的内存信息用于后续的分析。kdump 是基于 kexec 的。
    crash 是一个用于交互式地分析正在运行的 Linux 系统或者 kernel crash 后的 core dump 数据的工具。

    记录一下问题及其解决方法:

    在 centos7 中的 kdump.service 服务一直不能正常启动,如下:

    [root@mesos-slave-dev001-cqdx ~]# systemctl status kdump.service
    ● kdump.service - Crash recovery kernel arming
       Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
       Active: failed (Result: exit-code) since 二 2016-07-19 14:07:37 CST; 1min 1s ago
      Process: 5416 ExecStart=/usr/bin/kdumpctl start (code=exited, status=1/FAILURE)
     Main PID: 5416 (code=exited, status=1/FAILURE)
    
    719 14:07:35 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: Starting Crash recovery kernel arming...
    719 14:07:37 mesos-slave-dev001-cqdx.qiyi.virtual kdumpctl[5416]: No memory reserved for crash kernel.
    719 14:07:37 mesos-slave-dev001-cqdx.qiyi.virtual kdumpctl[5416]: Starting kdump: [FAILED]
    719 14:07:37 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: kdump.service: main process exited, code=exited, status=1/FAILURE
    719 14:07:37 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: Failed to start Crash recovery kernel arming.
    719 14:07:37 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: Unit kdump.service entered failed state.
    719 14:07:37 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: kdump.service failed.
    

    需要在 kernel 启动命令行参数中添加 crashkernel 参数,并启动 kdump 服务。
    一般设置为 crashkernel=auto 表示根据系统内存自动 reserve 一些内存给 kernelcrash 用,在 x86_64 系统中内存大于等于 2GB 时会 reserve 内存,最小保留内存计算方法是:160 MB + 2 bits for every 4 KB of RAM.
    当然,也可以设置 crashkernel=512M 这样的固定保留内存。

    用 yum install kexec-tools 安装 kdump 工具和服务
    用 systemctl start kdump 命令可以启动 kdump.service,用 systemctl enable kdump 让 dump 服务在开机时自动启动。
    kdump.service 相关的配置文件 /etc/kdump.conf 里面可以修改一些默认的配置,比如 dump 完成后的动作(默认是 reboot)、dump 文件存放的方式(本地目录、NFS、scp 到另外服务器等)。

    现在来看问题:

    其实是需要设置一下 crashkernel=auto
    检查后,发现 /etc/default/grub 文件并不存在,添加该文件的配置信息,如下:

    GRUB_TIMEOUT=5
    GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
    GRUB_DEFAULT=saved
    GRUB_DISABLE_SUBMENU=true
    GRUB_TERMINAL_OUTPUT="console"
    GRUB_CMDLINE_LINUX="crashkernel=auto net.ifnames=0 biosdevname=0 rhgb quiet"
    GRUB_DISABLE_RECOVERY="true

    然后让其生效:

    # grub2-mkconfig -o /boot/grub2/grub.cfg

    最后,reboot 机器即可。

    [root@mesos-slave-dev001-cqdx ~]# systemctl status kdump.service
    ● kdump.service - Crash recovery kernel arming
       Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
       Active: active (exited) since 二 2016-07-19 14:15:16 CST; 14min ago
     Main PID: 1082 (code=exited, status=0/SUCCESS)
       Memory: 0B
       CGroup: /system.slice/kdump.service
    
    719 14:15:13 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: Starting Crash recovery kernel arming...
    719 14:15:16 mesos-slave-dev001-cqdx.qiyi.virtual kdumpctl[1082]: kexec: loaded kdump kernel
    719 14:15:16 mesos-slave-dev001-cqdx.qiyi.virtual kdumpctl[1082]: Starting kdump: [OK]
    719 14:15:16 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: Started Crash recovery kernel arming.
    719 14:15:19 mesos-slave-dev001-cqdx.qiyi.virtual systemd[1]: Started Crash recovery kernel arming.
  • 相关阅读:
    python自动生成小学四则运算题目
    软件工程第一章心得体会
    Python微信机器人
    利用python进行微信好友分析
    python操作数据库读书笔记
    初学爬虫之访问goole网页与爬取中国大学排名。
    python之预测体育竞技分析
    5、用python写一个自己的网页
    用turtle实现动态汉诺塔
    面向对象与正则表达式的学习(自动更正,和代数运算)
  • 原文地址:https://www.cnblogs.com/qianggezhishen/p/7349326.html
Copyright © 2011-2022 走看看