解决CentOS配置kdump失败的问题

  Kdump是一个内核崩溃转储机制,在系统崩溃的时候,Kdump将捕获系统信息,这对于针对崩溃的原因非常有帮助。注意,Kdump需要预留一部分系统内存,而且这部分内存对于其他用户是不可用的。因为最近在开发一个内核模块,在测试的时候有时会导致内核崩溃,但是在虚拟机中没法看到完整的oops信息,所以不知道是在哪个位置崩溃。即使在代码中加了打印调试信息的语句,有时也会看不到。因此,决定在CentOS上配置一个kdump环境,这样可以更快地定位问题。但是安装之路真是崎岖啊。

  我安装CentOS时总是最小安装,很多包都是在用的时候通过yum或者在安装盘中找包安装,当然也没有图形界面。在网上找个一个教程,然后按照上面的步骤配置,重启系统,但是kdump服务启动失败,报下面的错误:


 但是我已经明明在/etc/grub.conf中指定了crashkernel参数,而且也是按照提示的错误的格式配置的,通过cat /proc/cmdline命令也能看到配置的crashkernel项。在google上搜索了很久,也找到了一些别人解决这个问题的办法,但是不适用我的这个,不知道怎么回事,试遍了都不行。

  遇到这种问题,真是蛋都碎了!!!而且现在还比较着急,没办法只能暂时搁置kdump,用printk来定位错误了,但是总是要修改、编译,实在是折磨的不行。在同事的建议下,尝试在图形界面下配置试试看能不能成功。

  第二次安装的时候我选择完全安装,也就是在下面这个界面选择“现在自定义”,然后在选择包的界面把所有的都选了(我之前是没选数据库之类的,也没有成功,所以还是全选吧,反正空间也不是问题)。

 

在安装完成重启后开始进行一些初始化的配置,在最后一项是配置Kdump,但是蛋疼的问题又出现了。


看到这个“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”),但是我后来分配了4G内存给虚拟机,但是还是提示这个错误。后来想起kdump还有一个图形界面配置的命令,所以在终端下输入system-config-kdump命令,会弹出下面的界面:


选择Target settings,会弹出下面的界面:


我第一次点开的时候没有红色圈住的那部分,后来就点了那个“Reload”按钮,然后再点击了“apply”按钮,在终端下输入service kdump restart终于启动成功了!真是太爽了!

 赶紧测试一下,输入echo "c">/proc/sysrq-trigger,界面会出现一些信息,类似下面一样:


过一会系统就会自动重启,这个时候就说明你的kdump已经配置成功了,重启之后/var/crash目录下就可以看到有一个文件夹,文件夹的名字是日期,里面就是你需要的core文件。至此终于神奇的误打误撞成功了。如果你还没成功,就把那几个“apply”、“reload”,“enable”,“disable”按钮来回点,多试几次,说不定也像我一样成功了。

最后总结一下整个过程:

1、完全安装CentOS 6.2,所有的包都选,一个也不要落下。

2、安装按成后忽略“没有足够的内存配置kdump”(在英文界面下提示的是“insufficient memory to configure kdump”)这个错误,进入系统后打开终端输入system-config-kdump命令,如果没有,先安装。

3、在界面中先点击reload按钮,然后在点击“apply”让配置生效,重启系统,测试看是否成功。

你可能感兴趣的:(解决CentOS配置kdump失败的问题)