1、安装kexec-tool
首先安装kexec-tools工具包:
yum install kexec-tools
2、配置为kdump转存
kdump要求操作系统正常使用的时候,不能使用kdump kernel所占用的内存,配置这个需要修改grub文件:
使用bios安装:
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=UUID=2b3e41f8-1b09-407b-b876-e5db3ca4b25b rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=128M LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-504.el6.x86_64.img
使用uefi安装:
load_video
set gfxpayload=keep
insmod gzio
insmod part_msdos
insmod xfs
set root='hd0,msdos1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos1 --hint-efi=hd0,msdos1 --hint-baremetal=ahci0,msdos1 --hint='hd0,msdos1' 71415a24-f9bf-4400-96e7-5ad44f1191c5
else
search --no-floppy --fs-uuid --set=root 71415a24-f9bf-4400-96e7-5ad44f1191c5
fi
linux16 /vmlinuz-3.10.0-123.el7.x86_64 root=UUID=e6f5e7c9-8928-414a-b937-3a0b7466e64d ro crashkernel=auto vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rd.lvm.lv=rhel_node60/root rd.lvm.lv=rhel_node60/swap rhgb quiet LANG=zh_CN.UTF-8 intel_pstate=disable
initrd16 /initramfs-3.10.0-123.el7.x86_64.img
3、配置转储路径
默认的vmcore文件存储在/var/crash目录下。
可以修改这个路径,配置文件是/etc/kdump.conf:
path /usr/local/cores //这里必须要保证这个路径是存在的,否则启动kdump服务会失败
把core dump文件写入一个设备中,把配置文件中的#raw /dev/vg/lv_kdump这一行的#符号去掉然后把后面的改成自己的设备路径,如下:
raw /dev/sdb1
要把dump文件存储在一个使用NFS协议的远程机器上,把配置文件中的#nfs my.server.com:/export/tmp这行前面的#符号删除,然后后面参数部分替换成自己的主机名和路径名。如下:
nfs penguin.example.com:/export/cores
4、配置kdump动作
当kdump在指定的位置创建core文件失败,root文件系统会被挂在,kdump会试图把dump文件保存在本地。可以通过修改/etc/kdump.conf配置文件修改这个默认操作。修改#default shell这行,然后把shell替换为自己想要的默认动作。例如:
default halt
5、启动kdump服务
在系统boot时候启动kdump服务
systemctl enable kdump.service
现在应该为多用户启用了kdump服务,相对的systemctl stop kdump可以禁用这个服务。在root权限下,使用下面的命令可以使kdump服务在当前会话可用
systemctl enable kdump.service
这里要注意的是当kdump服务启动时候,前面定义为内核转储目标目录必须存在, 否则服务将失败。此时kdump服务已经开启成功了,可以使用下面命令来查看是否开启成功。
systemctl status kdump.service