一、简介

本文主要介绍如何打开Kdump并对其相关文件进行配置。前面章节已经对Kdump调试机理进行总结总结,具体可以点击下面链接:

Kdump调试机理总结(一)

crash工具分析vmcore文件常用命令总结(三)

二、Kdump整体介绍

1、kdump
kdump 是一种先进的基于 kexec 的内核崩溃转储机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。当内核产生错误时,kdump会将内存导出为vmcore保存到磁盘。

2、 kdump流程
当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核启动时会保留一段内存给kdump用。

3、kdump的配置流程具体如下:

内核配置
安装kdump(kexec-tools)工具
修改内核启动参数
修改kdump配置文件
启动kdump功能
验证Kdump功能
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

三、Kdump具体配置

3.1 内核配置
通常设备默认内核是已经配置了Kdump功能的。
想要确认当前内核是否支持kexec,可通过查看在/sys/kernel/下有没有kexec等文件去确认,同时通过查看 /sys/kernel/kexec_crash_loaded 的值,判断Kdump功能是否加载(“1”为已经加载,“0”为还未加载)

[root@localhost /]# cat /sys/kernel/kexec_crash_loaded
  • 1

如果没有,则需要我们对内核进行配置,具体如下(make menuconfig):

CONFIG_KEXEC=y
Boot options --->[*] Kexec system call (EXPERIMENTAL)
//此参数告诉系统使用Kexec跳过BIOS和引导(新)内核。(提供内核层面的kexec功能支持)
CONFIG_CRASH_DUMP=y
Boot options --->[*] Build kdump crash kernel (EXPERIMENTAL)
//崩溃转储需要启用。没有此选项,Kdump将毫无用处。(提供内核层面的kdump功能支持)
CONFIG_SYSFS=y
File systems --->Pseudo filesystems --->[*] Tmpfs virtual memory file system support
//启用sysfs文件系统支持
CONFIG_PROC_VMCORE=y
File systems --->Pseudo filesystems --->-*- /proc file system support--->[*] /proc/vmcore support
//此配置允许Kdump将内存转储保存到/proc/vmcore。
CONFIG_DEBUG_INFO=y
Kernel hacking --->Compile-time checks and compiler options --->[*] Compile the kernel with debug info
//此参数表示将使用调试符号构建内核。尽管这将增加内核映像的大小,但是具有可用的符号对于深入分析内核崩溃非常有用,因为它不仅使您可以跟踪导致崩溃的有问题的函数调用问题,而且可以跟踪特定行在相关来源中。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.2 安装kdump(kexec-tools)工具

[root@localhost /]# yum install kexec-tools
//安装完成之后可以通过kexec -v查看kexec的版本
  • 1
  • 2

3.3 修改内核启动参数
(1)直接配置

[root@localhost /]# vim /boot/grub2/grub.cfg
//直接在加载内核这一行(linux ${prefix}/vmlinuz console=tty xxx)最后加上crashkernel=auto
//auto为自动根据内存分配vmcore的生成的大小,也可以指定具体大小,如crashkernel=128M,具体grub.cfg的配置可以查看本人博客:
  • 1
  • 2
  • 3

grub.cfg配置总结

(2)通过工具重置grub.cfg

[root@localhost /]#  vim /etc/default/grub
  • 1

修改为

GRUB_CMDLINE_LINUX="crashkernel=auto" //自动分配大小,部分系统需要指定固定大小
  • 1

说明:
crashkernel=xxx //预留内存大小
注意:
注意预留内存大小,过大/过小都会导致生成vmcore文件失败(不知道设置多少时,可以尝试每次增加128M)

[root@localhost /]#  grub2-mkconfig -o /boot/grub2/grub.cfg
  • 1

(3)重启确认配置是否成功

[root@localhost /]# reboot
[root@localhost /]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-4.4.13-200.nd7.3.x86_64 root=/dev/sda3 ro rhgb quiet loglevel=0 LANG=zh_CN.UTF-8 crashkernel=auto
  • 1
  • 2
  • 3

说明:
如果在cmdline里找到了crashkernel参数,代表已经将配置写入内核了.

3.4 修改kdump配置文件

[root@localhost /]#  vim /etc/kdump.conf  //其中需要注意的三行内容:
path /var/crash #指定coredump文件放在/var/crash文件夹中
core_collector makedumpfile -c -l -message-level 1 -d 31 #加上-c表示压缩,原文件中没有
default reboot #生成coredump后,重启系统
  • 1
  • 2
  • 3
  • 4

3.5 启动kdump功能

[root@localhost /]#  systemctl enable kdump.service
[root@localhost /]# systemctl start kdump.service
[root@localhost 桌面]# systemctl status kdump.service
● kdump.service - Crash recovery kernel arming
Loaded: loaded (/usr/lib/systemd/system/kdump.service; disabled)
Active: active (exited) since 四 2022-05-05 19:12:31 CST; 1min 14s ago
Process: 2272 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
Main PID: 2272 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/kdump.service 5月 05 19:12:31 localhost kdumpctl[2272]: kexec: loaded kdump kernel

5月 05 19:12:31 localhost kdumpctl[2272]: Starting kdump: [OK]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注意:
本人在用x86的系统打开kdump服务时,指定的crashkernel=auto不生效,导致启动失败,可以用crashkernel=128M@48M格式测试;

3.6 验证Kdump功能
我们来模拟系统异常崩溃,验证之前的操作是否都成功了:

[root@localhost /]# echo 1 > /proc/sys/kernel/sysrq
[root@localhost /]# echo c > /proc/sysrq-trigger
  • 1
  • 2

重启后,查看/var/crash目录

[root@localhost /]# ls /var/crash/
  • 1

保留内存是否预留成功,可以通过cat /proc/meminfo查看。

[root@localhost /]# cat /proc/meminfo | grep Crash
  • 1

四、其他相关链接

1、Kdump调试机理总结(一

2、crash工具分析vmcore文件常用命令总结(三)

3、grub.cfg配置总结

4、编译linux内核常见报错总结

</article>

[转帖]Kdump配置及使用(详细)总结(二)的更多相关文章

  1. 【转】android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

    原文网址:http://www.cnblogs.com/zdz8207/archive/2012/11/27/android-ndk-install.html android 最新 NDK r8 在w ...

  2. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  3. 配置WebLogic的详细步骤

    配置WebLogic的详细步骤 1.安装好WebLogic后,进入配置阶段,点击"Getting started with WebLogic Server 10.3.6" 2.进入 ...

  4. Windows Server 2016 配置 IIS 的详细步骤

    Ø  简介 本文主要记录 Windows Server 2016 环境下,安装配置 IIS 的详细步骤.需要说明的是,在选择"功能"或"角色服务"时不建议将所有 ...

  5. Mac配置Hadoop最详细过程

    Mac配置Hadoop最详细过程 原文链接: http://www.cnblogs.com/blog5277/p/8565575.html 原文作者: 博客园-曲高终和寡 https://www.cn ...

  6. android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创)

      android 最新 NDK r8 在window下开发环境搭建 安装配置与使用 详细图文讲解,完整实际配置过程记录(原创) 一直想搞NDK开发却一直给其他事情耽搁了,参考了些网上的资料今天终于把 ...

  7. iis7.5安装配置php环境详细清晰教程,三步实现【图文】

    iis7.5安装配置php环境详细清晰教程,三步实现[图文] iis7.5是安装在win7.win8里的web服务器,win2003.win2000的web服务器使用的是iis6.0,由于win7.w ...

  8. centos7 yum搭建lnmp环境及配置wordpress超详细教程

    yum安装lnmp环境是最方便,最快捷的一种方法.源码编译安装需要花费大量的人类时间,当然源码编译可以个性化配置一些其它功能.目前来说,yum安装基本满足我们搭建web服务器的需求. 本文是我根据近期 ...

  9. PhpStorm中如何配置SVN,详细操作方法 - 郑加全的博客 - CSDN博客

      登录|注册       郑加全的博客       目录视图 摘要视图 订阅 CSDN日报0711——<离开校园,入职阿里,开启新的程序人生>      征文 | 你会为 AI 转型么? ...

  10. Nginx配置Https(详细、完整)

    Nginx配置Https(详细.完整) 原文链接:请支持原创 前置条件: 在配置https之前请确保下面的步骤已经完成 服务器已经安装nginx并且通过http可以正常访问 不会安装nginx的可以参 ...

随机推荐

  1. 测试攻城狮必备技能点!一文带你解读DevOps下的测试技术

    [摘要]本文将从DevOps模式下对测试人员的活动的变化,以及常用的测试技术层面进行解读. 项目的软件开发模式主要经历瀑布模型.敏捷开发和DevOps这几个阶段,其中DevOps主要解决开发和运维.运 ...

  2. 掌握ROMA Compose,报表清单不秃头

    摘要:在没有ROMA Compose之前,完成一个跨数据源的关联查询是一个十分艰巨的任务. 1. ROMA Compose为何诞生 试想这样一个场景,主管让刚入职的小沛明天下班前给他发一份报表.小沛兴 ...

  3. 如何只用一个小时定制一个行业AI 模型?

    摘要:华为云通过ModelArts Pro提供更多的行业套件和工作流可以供用户直接使用,进一步降低AI行业落地难度,让传统企业客户无需掌握算法知识亦可实现自身业务与AI技术的融合. 去年,在华为开发者 ...

  4. 6种方法帮你搞定SimpleDateFormat类不是线程安全的问题

    摘要:本文主要讲述在高并发下SimpleDateFormat类为何会出现安全问题,以及如何解决SimpleDateFormat类的安全问题. 本文分享自华为云社区<[高并发]SimpleDate ...

  5. 火山引擎 DataTester:构建增长闭环,3-5 人即可搭建企业增长团队

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 增长是一个老生常谈的话题,对许多企业而言这个词都很熟悉,但在实践过程中仍然有很多的疑问,比如指标体系应该怎么搭建? ...

  6. 用 Java?试试国产轻量的 Solon v1.10.1

    相对于 Spring Boot 和 Spring Cloud 的项目: 启动快 5 - 10 倍. (更快) qps 高 2- 3 倍. (更高) 运行时内存节省 1/3 ~ 1/2. (更少) 打包 ...

  7. Spring解决泛型擦除的思路不错,现在它是我的了。

    你好呀,我是歪歪. Spring 的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽. 但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻 ...

  8. CentOS 7上安装 Jenkins 2.227 -- yum 方式

    CentOS 7上安装 Jenkins 2.227 -- yum 方式 装插件的时候会报版本过低,建议安装 2.346 安装 Jenkins # [root@localhost ~]# ll /etc ...

  9. SQL Server 2016 自动备份、收缩数据库

    一般策略为:Oracle: 周一.二 增量备份,周三差异备份,周四.五.六增量备份,周日完整备份(建多计划) MsSQL: 周一.六差异备份,周日完整备份(建多计划) 打开SQL server配置管理 ...

  10. 浅谈 Java 中的 AutoCloseable 接口

    本文对 try-with-resources 语法进行了较为深入的剖析,验证了其为一种语法糖,同时给出了其实际的实现方式的反编译结果,相信你在看完本文后,关于 AutoCloseable 的使用你会有 ...