Kdump详解

Kdump详解

​ Kdump是在系统崩溃、死锁或死机时用来转储内存运行参数的一个工具和服务,是一种新的crash dump捕获机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。kdump需要配置两个不同目的的kernel,其中一个我们在这里称作standard(标准的)(production)kernel;另一个称之为Crash(崩溃的)(capture)kernel。打个比方,如果系统一旦崩溃,那么正常的内核就没有办法工作了,在这个时候将由kdump产生一个用于(capture)捕获当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个dump core文件中以便于Ret Hat工程师分析崩溃的原因,一旦内存信息收集完成,系统将会自动重启这和以前的diskdump、netdump同理,只不过kdump是RHEL6特有的。

​ standard(production)kernel,指的是我正在使用的kernel,当standard kernel在使用时出现crash时,kdump会切换到crash kernel,简单来说,standard kernel会正运行时发生crash,而crash(capture)kernel会被用来捕获production kernel在crash时产生的crash dump。

​ 捕获crash dump是在新的crash(capture)kernel的上下文中来捕获的,而不是在standard kernel上下文进行。

​ 具体是当standard kernel方式crash的时候,kdump通过kexec自动启动进入到crash kernel当中。如果启动了kdump服务,standard kernel会预留一部分内存,这部分内存用来启动crash kernel。

​ kdump机制主要包括两个组件:kdump和kexec

​ 什么是kexec

​ kexec是一个快速启动kernel的机制,它运行在某一正在运行的kernel中,启动一个新的kernel(crash kernel),而且不用重新经过BIOS就可以完成启动。因为一般BIOS都会花费很长的时间,尤其是在大型并且同时连接许多外部设备的server上的环境下,BIOS会花费更多的时间。

​ 查看Linux系统是否开启打开kdump:

[root@localhost ~]# ulimit -c        #如果输出为0,就是关闭,为unlimited则是打开,我的是关闭的
0

​ 临时打开/关闭kdump:

[root@localhost ~]# ulimit -c unlimited		#临时打开
[root@localhost ~]# ulimit -c
unlimited		#验证为开启了
[root@localhost ~]# ulimit -c 0				#临时关闭
[root@localhost ~]# ulimit -c
0				#验证为关闭了

你可能感兴趣的:(gaki)