Chinaunix首页 | 论坛 | 博客
  • 博客访问: 122195
  • 博文数量: 25
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 251
  • 用 户 组: 普通用户
  • 注册时间: 2014-04-29 14:18
个人简介

不以物喜,勿以己悲;乐观向上,持之以恒。

文章分类

全部博文(25)

文章存档

2015年(25)

我的朋友

分类: LINUX

2015-07-19 21:39:10

本文将以centos系统为例,说明kdump的配置。


什么是kdump


kdump 是一种crash dump捕获机制,用来捕获kernel crash时候产生的crash dump。

kdump需要配置两个不同目的的kernel,其中一个我们在这里称作standard(production) kernel;另外一个称之为crash(capture)kernel。

standard(production)kernel,是指正在使用的kernel,当standard kernel在使用的过程中出现crash的时候, kdump会切换到crash kernel。

简单来说,standard kernel会在运行时发生crash,而crash(capture) Kernel 会被用来捕获production kernel crash时候产生的crash dump。

捕获crash dump是在新的crash(capture)kernel 的上下文中来捕获的,而不是在standard kernel上下文进行。

具体是当standard kernel方式crash的时候,kdump通过kexec(后面介绍)自动启动进入到crashkernel当中。

如果启动了kdump服务,standard kernel会预留一部分内存, 这部分内存用来启动crashkernel。

kdump机制主要包括两个组件:kdump和kexec。


什么是kexec


kexec 是一个快速启动kernel的机制,它运行在某一正在运行的kernel中,启动一个新的kernel(这里是crashkernel),而且不用重新经过BIOS就可以完成启动。因为一般BIOS都会花费很长的时间,尤其是在大型并且同时连接许多外部设备的Server上的环境下,BIOS会花费更多的时间。


内核kdump选项及其依赖选项


CONFIG_DEBUG_INFO=Y

CONFIG_CRASH_DUMP=y

CONFIG_PROC_VMCORE=y

CONFIG_KEXEC=y


kexc-tools工具安装


kdump需要安装kexec-tools-2.0.0-145.el6.x86_64.rpm工具,依赖包如下:

1. busybox-1.15.1-10.el6.x86_64.rpm

2. elfutils-libs-0.148-1.el6.x86_64.rpm

3. kpartx-0.4.9-31.el6.x86_64.rpm

注:以上安装包都在centos6的iso中。


kdump配置


修改grub.conf

kernel行增加 crashkernel=192M


注:在centos6中crashkernel=xxxM 。在centos5.2中 crashkernel=xxxM@xxM 格式请注意。default=1,表示缺省启动项为第2项(按照 0、1、2...排列)。crashkernel=128M@16M 增加的位置,在kernel 所在的行末尾加,但要放在initrd之前。

配置好grub.conf后重启机器,切换到带有crashkernel参数的内核启动。


配置vmcore保存路径

默认情况下kdump会将保存的文件保存在/var/crash目录下,可以修改kdump.conf,更改此路径。vmcore的大小与内存有关,所以一定要确保vmcore保存路径空间容量够用。


kdump服务开启


1. 执行 chkconfig --level35 kdump on

2. 执行service kdump start;显示Kdump is operational表示配置成功。


验证配置


1. 通过sysrq强制系统崩溃 echo c 〉/proc/sysrq-trigger;

2. 机器会panic重启,等待重启后,正常会在/var/crash 目录下生成一个时间目录里面有vmcore文件;


问题总结


1. 在服务开启时可能会出现Yourrunning kernel is using more than 70% of the amount of space you reserved forkdump, you should consider increasing your crashkernel reservation 的警告。需要将crashkernel的内存值需要放大即可解决警告信息。

2. 当echo c > /proc/sysrq-trigger时,可能会出现OOM的情况,这个是因为crashkernel的值太小。推荐使用192M,如还出现OOM可继续加大。

3. 在centos6.0的情况下,默认crashkernel=auto。当物理内存小于4G的情况下,这个值不管用,需给出固定的值。

阅读(1657) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:Centos kdump使用中的问题

给主人留下些什么吧!~~