Kdump & Crash 学习笔记(四)
时间:2010-09-16 来源:ChaoYe89
四:设置Kdump
上次说过了Kdump配置Dump Target,这次来说说Kdump其他的配置选项:
#path /var/crash
#core_collector makedumpfile -c
#link_delay 60
#kdump_post /var/crash/scripts/kdump-post.sh
#extra_bins /usr/bin/lftp
#disk_timeout 30
#extra_modules gfs2
#default shell
1) path /var/crash这个在上次已经说过了,就不再赘述了。重点需要讲一下的是core_collector这个选项!core_collector这个选项非常有用,下面就详细说一下core_collector:
2) core_collector是用来指定内核收集的,例子里采用的是makedumpfile作为收集器。查找一下系统,发现makedumpfile位于这个位置:
[root@Derek-Laptop derek]# whereis makedumpfile
makedumpfile: /sbin/makedumpfile
makedumpfile有很多选项,简要列了一下:
-c: Compress dump data by each page.
-d: Specify the type of unnecessary page for analysis.
Dump | zero cache cache user free
Level | page page private data page
-------+---------------------------------------
0 |
1 | X
2 | X
4 | X X
8 | X
16 | X
31 | X X X X X
--message-level: Specify the message types.
Message | progress common error debug report
Level | indicator message message message message
---------+------------------------------------------------------
0 |
1 | X
2 | X
4 | X
* 7 | X X X
8 | X
16 | X
31 | X X X X X
需要注意的是-d选项,这在拥有巨大内存的机器上非常有用。例如SGI的UV,几个TB的内存全部Dump的话,非常低效。这个时候,加上-d 31,也就是Kdump在makedumpfile的时候,过滤掉zero page, cache page, cache private, user data, free page。这会大大加速Dump的速度,生成更小的vmcore。如果不需要全部过滤,那也可以通过指定其他的级别,最大为31,最小为0,也就是不做过滤。
还有就是--message-level的选项,如果熟悉Kernel的Message Level的话,这个应该不难理解。如果不了解的话,也没有关系,因为这个选项在我使用Kdump的时候,并不常常用到。可能是水平不够^_^
我在学习的过程中,最常用的就是:
core_collector makedumpfile -c -d 31
3) link_delay 60这个选项一般与网络Dump相关,因为有些情况下,网络建立有一定的延迟,比如说DNS、IP、Gate等等情况下有延迟。所以设定60秒的延迟,在Kdump内核启动后,会等待60秒,等待网络的建立,再生成vmcore,通过NFS、SCP来传输vmcore。
4) kdump_post /var/crash/scripts/kdump-post.sh这个可以用来在Dump vmcore完毕后执行一个脚本。用户可以自定义需要执行的动作。
5) extra_bins /usr/bin/lftp这个可以用来把额外的bin包含到Kdump Kernel中。说到这个就必须要说一下BusyBox了。Busybox把很多UNIX的工具都集成到了一个很小的可执行的文件中,而实际上,在Kdump Kernel提供的Shell环境中的所有命令都是由Busybox提供的。关于Busybox,东西实在很多,有机会慢慢说。
所以,这一行实际上的操作是把指定外的可执行文件包含到了Kdump Kernel之中。这样就能在Kdump Kernel之中使用很多你需要的程序了,比如lftp!
6) disk_timeout 30这个没有用过,所以不好乱说
7) extra_modules gfs2这个也是非常有意思的东西,可以把你需要的额外的内核模块包含进来。关于这个,我会再写一篇文章详细说明的。
8) default shell这个是用来指定默认操作的。比如说,我使用了如下的配置:
core_collector makedumpfile --error
很明显,makedumpfile没有--error这个参数选项。这会导致makedumpfile失败,Kdump Kernel在遇到这种情况的时候,就会根据default的选项,做相应的操作。这里设置的是shell,那么Kdump Kernel就会Drop到Shell去。你可以查看网络情况,使用Busybox提供的一些命令。
default这个配置,除了shell之外,还可以设置为:reboot和halt。
这就是大概的kdump的配置了,说的不是很细致。贴一个我自己使用的Kdump.conf
[root@Derek-Laptop derek]# tail /etc/kdump.conf
#kdump_post /var/crash/scripts/kdump-post.sh
#extra_bins /usr/bin/lftp
#disk_timeout 30
#extra_modules gfs2
#default shell
ext4 UUID=2c560b75-fc2b-4346-a669-6403e954498a path /var/kdump core_collector makedumpfile -c -d 31 default shell
Tips: 如往常一样,一些文档提供: 1) Busybox 的项目主页 2) man kdump.conf 3) /sbin/makedumpfile --help 4) man mkdumprd
ext4 UUID=2c560b75-fc2b-4346-a669-6403e954498a path /var/kdump core_collector makedumpfile -c -d 31 default shell
Tips: 如往常一样,一些文档提供: 1) Busybox 的项目主页 2) man kdump.conf 3) /sbin/makedumpfile --help 4) man mkdumprd
相关阅读 更多 +