kdump 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kdump 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。由于 kdump 利用 kexec 启动捕获内核,绕过了 BIOS,所以第一个内核的内存得以保留。这是内核崩溃转储的本质。
测试操作系统:suse10 SP3
1、安装kdump所需要的rpm包
——所需要的包在操作系统盘中都可以找到,无需到处下载
部署kdump工具,需要安装三个rpm包,分别是kernel-kdump-2.6.16.60-0.54.5.x86_64.rpm、kdump-0.3.0-8.14.x86_64.rpm、kexec-tools-1.101-32.54.10.x86_64.rpm ,依顺序安装即可,其中需要注意kdump包和kexec-tools互为依赖关系,在安装时需要同时制定他们两个包,如下:
2、测试rpm包是否正确安装
执行 rckdump status 或者 service kdump status,如果出现“kdump kernel not loaded”则表示安装成功:
3、为kdump预留内存空间
在配置预留空间内存时,可以参考以下表格:
suse 10 系统X86和X86_64结构,参考以下配置预留表格
Memory |
crashkernel= |
0 - 12 GB |
|
13 - 48 GB |
|
49 - 128 GB |
|
129 - 256 GB |
如果是suse11 系统X86和X86_64结构,参考以下配置预留表格
Memory |
crashkernel= |
0 - 12 GB |
64M |
13 - 48 GB |
128M |
49 - 128 GB |
256M |
129 - 256 GB |
512M |
3、修改/boot/grub/menu.lst文件
在/boot/grub/menu.lst文件中找到resume=/dev/system/swap splash=silent showopts这行,然后在本行末尾增加:[email protected]
注:本机内存为2G,因此[email protected],实际情况请参考上面的表格。
本部分设置也可以使用suse自带的图形化工具yast,只需要点点鼠标即可,连预留空间都不要输入,我就不赘述了。
4、配置kdump开机自启动
执行命令:chkconfig kdump on
至此kdump的部署工作已经完成,我们需要重启服务器 让配置生效,执行reboot。
5、确认kdump配置是否成功。
执行 rckdump status
显示kdump配置成功。
6、kdump的测试
kdump主要就是用来当系统出现内部错误时,可以自动转储错误信息,并自动完成服务器重启,我们测试一下:
执行一下两条命令:
1)sync
2)echo c >/proc/sysrq-trigger -----“c”必须小写
执行完第二条命令,系统将会进入死机状态,然后服务器会自动重启。
重启完成后,我们去dump目录查看是否已经正确生成转储文件。
转储的文件位置:/var/log/dump
转储目录正确生成,kdump配置成功。
博文最下面的附件是suse关于kdump官方文档描述,可以下载下载下来看看。
另有关于kdump的系统介绍,大家可以去了解:
http://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/