已索引
注意:无论是开启还是关闭kdump,都需要重启操作系统来重新分配内存。开启必须要重启才能生效。关闭可以不重启,但是不会释放内存。
Kdump is a kernel crash dumping mechanism. In the event of a system crash, kdump will capture information from your system that can be invaluable in determining the cause of the crash. Note that kdump does require reserving a portion of system memory that will be unavailable for other uses.
启用kdump
如果安装了图形界面,RHEL安装完成后的初始启动过程中会出现Kdump配置界面。Kdump是一种基于kexec的系统崩溃信息捕获机制,用于分析系统崩溃原因。当操作系统的内存足够时(大于等于2G),可以选择启用或者禁用Kdump。一旦启用kdump,立即会有128M的内存被保留给Kdump使用。如果操作系统内存较低,则不能启用Kdump功能。
如果安装系统时没有开启Kdump,可以通过如下方法进行开启(示例环境Redhat 6.5):
# system-config-kdump
该工具修改 /etc/kdump.conf 配置文件,自动在grub.conf中增加crashkernel=512M来保留内存给Kdump使用,并且将kdump服务设置为开机启动。
启用Kdump后,需要重启系统,初次启动系统时会生成 /boot/initrd-*.x86_64kdump.img文件。
启动完成后,检查Kdump服务状态:
# service kdump status
Kdump is operational
# free -m
会发现内存总量少了相应的数量。
模拟系统崩溃
通过sysrq强制系统崩溃,注意:不要在生产环境做此步操作
echo "c" > /proc/sysrq-trigger
该命令会让系统崩溃,如果没有开启 Kdump,系统会一直卡在那儿,如果开启了Kdump,执行后等待约几秒,系统会自动重启。
重启后查看宕机文件:
# ll -h /var/crash/'127.0.0.1-2017-10-22-21:37:57'
total 40M
-rw-------. 1 root root 40M Oct 22 21:38 vmcore
-rw-rw-r--. 1 root root 77K Oct 22 21:37 vmcore-dmesg.txt
禁用kdump
使用system-config-kdump工具禁用Kdump,仅仅是设置 chkconfig 为off,将crashkernel=512M从grub.conf中删除,服务仍然在运行,需要执行 service kdump stop 来停止kdump服务,但需要注意的是,即使停止了该服务,保留的内存也不会释放。