Kdump是一种基于kexec的Linux内核崩溃捕获机制,简单来说系统启动时会预留一块内存,当系统崩溃调用命令kexec(kdump kernel)在预留的内存中启动kdump内核,
该内核会将此时内存中的所有运行状态和数据信息收集到一个coredump文件中以便后续分析调试。

本文介绍如何在Centos7/RHEL7 开启kdump。

步骤1 安装kexec-tools

[vagrant@localhost ~]$ yum install kexec-tools
 

步骤2 设置crashkernel预留内存大小

    [vagrant@localhost ~]$ cat /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=256M rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
修改crashkernel的大小,我的系统内存是1G,保留了256M,注意预留内存大小,过小会导致生成coredump文件失败(不知道设置多少时,可以尝试每次增加128M)
修改后还需重新生成grub配置文件,重启系统才能生效

    [vagrant@localhost ~]$ grub2-mkconfig -o /boot/grub2/grub.cfg
[vagrant@localhost ~]$ reboot
步骤3 修改kdump默认配置/etc/kdump.conf
centos7 默认已安装kdump,根据需要修改默认配置

    [vagrant@localhost ~]$ vi /etc/kdump.conf
#指定coredump文件存储位置
path /var/crash
#增加-c参数,代表压缩coredump文件
core_collector makedumpfile -c -l --message-level 1 -d 31
#生成coredump后,重启系统,
default reboot
步骤4 开启kdump服务

    [vagrant@localhost ~]$ systemctl start kdump.service //启动kdump
[vagrant@localhost ~]$ systemctl enable kdump.service //设置开机启动
步骤5 测试kdump功能
检查kdump是否开启成功

    [vagrant@localhost ~]$ service kdump status
Redirecting to /bin/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 Mon 2017-12-18 09:12:56 UTC; 43min ago
Process: 913 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
Main PID: 913 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/kdump.service
[vagrant@localhost ~]$ systemctl is-active kdump.service
active
手动触发crush
[root@cloud ~]# echo 1 > /proc/sys/kernel/sysrq ; echo c > /proc/sysrq-trigger
 
如果没有问题,系统会自动重启,重启后可以看到在/var/crash/目录下生成了coredump文件

    [vagrant@localhost ~]$ ls /var/crash/
127.0.0.1-2017-12-18-08:25:11
步骤6 安装crash,分析coredump文件
[vagrant@localhost ~]$ yum install crash

[vagrant@localhost ~]$ crash /var/crash/127.0.0.1-2017-12-18-08\:25\:11/vmcore /usr/src/kernels/linux-`uname -r`/vmlinux
输入问号”?“,查看crash支持的命令

    crash> ?

    * files mach repeat timer
alias foreach mod runq tree
ascii fuser mount search union
bt gdb net set vm
btop help p sig vtop
dev ipcs ps struct waitq
dis irq pte swap whatis
eval kmem ptob sym wr
exit list ptov sys q
extend log rd task
比如log命令,可以看到系统crash时的打印信息

    [ 470.018926] CPU: 0 PID: 1490 Comm: iwconfig Tainted: GF O 3.10.69 #1
[ 470.019251] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
[ 470.019603] task: ffff880039406ae0 ti: ffff880035d1c000 task.ti: ffff880035d1c000
[ 470.019931] RIP: 0010:[<ffffffff8129d3cd>] [<ffffffff8129d3cd>] memcpy+0xd/0x110
[ 470.020419] RSP: 0018:ffff880035d1dc38 EFLAGS: 00010206
[ 470.020697] RAX: ffff88003dba3508 RBX: ffff8800362eb400 RCX: 1ffffffffffffffc
[ 470.021218] RDX: 0000000000000006 RSI: 000000000000001a RDI: ffff88003dba3508
[ 470.021735] RBP: ffff880035d1dc88 R08: 0000000000016320 R09: ffff88003dba34c0
[ 470.022917] R10: 0000000000000000 R11: ffff880035d1d9c6 R12: ffff8800341a3280
[ 470.023437] R13: ffffc90000226104 R14: ffffffffffffffe2 R15: ffff88003dba34c0
[ 470.023958] FS: 00007ff662ec1740(0000) GS:ffff88003fc00000(0000) knlGS:0000000000000000
[ 470.024725] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[ 470.025223] CR2: 000000000000001a CR3: 0000000038f6a000 CR4: 00000000000406f0
[ 470.025775] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[ 470.026334] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400

Centos7/RHEL7 开启kdump的更多相关文章

  1. Linux CentOS7/RHEL7关闭ctrl+alt+delete功能键

            这是本人测试的经过,纯粹记录来看看,最终解决方法在最后面,中间讲的是遇到的一些坑,可以略过不看!!        本人操作经验,转载请表明出处:http://www.cnblogs.c ...

  2. centos7/rhel7下安装redis4.0集群

    相关介绍:Redis从3.0版本开始支持集群! 集群一般由多个节点组成,节点数量至少6个才能保证组成完整高可用的集群. 每个节点需要开启配置文件中的cluster-enabled yes,让Redis ...

  3. CentOS7/RHEL7 pacemaker+corosync高可用集群搭建

     TOC \o "1-3" \h \z \u 一.集群信息... PAGEREF _Toc502099174 \h 4 08D0C9EA79F9BACE118C8200AA004B ...

  4. CentOS7/RHEL7安装Redis步骤详解

    CentOS7/RHEL7安装Redis步骤详解 CentOS7/RHEL7安装Redis还是头一次测试安装了,因为centos7升级之后与centos6有比较大的区别了,下面我们就一起来看看Cent ...

  5. centos7/rhel7安装较高版本ruby2.2/2.3/2.4+

    环境需求: 在Centos7.3中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比如2.2,2.3,2.4...那就有点麻烦了,譬如:我准备使用redis官方给 ...

  6. 转:centos7/rhel7安装较高版本ruby2.2/2.3/2.4+

    centos7/rhel7安装较高版本ruby2.2/2.3/2.4+   环境需求:  在Centos7.3中,通过yum安装ruby的版本是2.0.0,但是如果有些应用需要高版本的ruby环境,比 ...

  7. centos7/RHEL7最小化系统安装gnome图形界面

    应用场景:对于比较熟悉linux系统的用户来说,全命令行系统可能来的比较简单明了高效,也存在某些情况下需要有像winodws下弹出对话框的情形需求,或者对于初识linux习惯windows界面的用户来 ...

  8. CentOS7关闭/开启防火墙出现 Unit iptables.service failed to load

    在vm中安装好tomcat,而且在liunx中使用nc命令可以返回成功,但是更换到window中访问不到tomcat的情况,是由于linux防火墙的问题造成的,传统的解决方式有2中 第一种解决方案: ...

  9. centos7/rhel7下配置PXE+Kickstart自动安装linux系统

    应用场景:临时安装一个系统或者批量安装linux系统,无需人工介入选择下一步,减少在安装系统上的时间浪费,提高工作效率. DHCP + TFTP + Syslinux + FTP + Kickstar ...

随机推荐

  1. 爬虫系列之mongodb

    mongo简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非 ...

  2. Linux下python3、virtualenv、Mysql、redis安装配置

    一.在Linux安装python解释器 1.下载python3源码包 cd /opt/ wget https://www.python.org/ftp/python/3.6.2/Python-3.6. ...

  3. 【坦克大战】Unity3D多人在线游戏(泰课的坦克大战--旋转的螺丝钉)

    [坦克大战]Unity3D多人在线游戏 http://www.taikr.com/my/course/937 1.NetworkManager的介绍: 说明:选择固定生成时会自动寻找有StartPos ...

  4. [BZOJ 2285] [SDOI 2011] 保密

    Description 传送门 Solution 这道题的最大难点在于读懂题意(雾 分数规划求出 \(n\) 到 \(1\cdots n_1\) 每个点的最小 \(\sum\frac{t_i}{s_i ...

  5. 清北澡堂 Day 3 上午

    1.数论函数的卷积公式 (ƒ*g)(n)=Σd|nƒ(d)×g(n/d) 已知f*[1~n],g[1~n] 怎么求(f*g)[1~n]? 一个个求复杂度O(n根号n) 如何加速? 考虑更换枚举顺序(这 ...

  6. 你可能不知道的 Mac 技巧 - 文本操作

    找不到 Mac 上的 Home,End,PageUp?想截图还得打开 QQ?不知道 Mac 如何剪切文件?找不到全屏窗口的按钮?找不到隐藏文件夹?不知道如何向后删除?想少用鼠标,多用键盘?…… 希望我 ...

  7. 【ASP.NET】website转webapplication

    *以下操作都以VS2013为参考: #新建两种web项目 1.添加webapplication项目: 2.添加website项目: #比较两种web项目新建的webform页面的不同点: 1.文件目录 ...

  8. DirectX11 With Windows SDK--09 纹理映射与采样器状态

    前言 在之前的DirectX SDK中,纹理的读取使用的是D3DX11CreateShaderResourceViewFromFile函数,现在在Windows SDK中已经没有这些函数,我们需要找到 ...

  9. HDU 5965(三行扫雷 dp)

    题意是在一个 3 行 n 列的图上进行扫雷,中间一行没有雷,且中间一行的每一格都会显示周围的雷数,问根据已知的雷数在上下两行设置地雷的方法数. 分析知每一列所填雷数的和与周围的雷数有关,但每列具体的填 ...

  10. H5_0001:localStorage本地存储

    localStorage的优势 1.localStorage拓展了cookie的4K限制 2.localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数 ...