启用diskdump
diskdump中必须指定转储用的分区。可以准备用于转储的分区,也可以将swap分区指定为转储位置。但是不使用compress选项时,分区必须大于系统中安装的内存。这次不使用交换分区,而是准备了专用于转储的分区/dev/sda3。配置文件/etc/sysconfig/diskdump中有下列内容。
DEVICE=/dev/sda3
然后将/dev/sda3格式化,作为转储用分区。
service diskdump initialformat
启用diskdump服务。
chkconfg diskdump on
service diskdump start
可以通过service命令或/proc/diskdump来确认diskdump是否已启用。/proc/diskdump中显示的内容如下。
cat/proc/diskdump
sample_rate:8
block_order:2
fallback_on_err:1
allow_risky_dumps:1
dump_level:0
compress:0
total_blocks:98197
#
sda3 14329980 2441880
另外,需要设置sysctl变量kernel.panic,使Linux内核在转储提取完成后自动重新启动。这是在/etc/sysctl.conf中进行设置的。
kernel.panic=10
通过这样的设置,转储完成后10秒就会重新启动。指定设置后使用sysctl命令启用设置。
sysctl-p
到这一步设置就完成了,可以尝试提取崩溃转储。
echo c>/proc/sysrq-trigger
转储文件在内核崩溃后重新启动时另存为/var/crash/127.0.0.1-<日期>/vmcore。可以使用crash命令确认转储文件的内容。关于crash命令的内容请参考HACK#59。