Linux kdump配置详解

2023-12-06 11:31:45 浏览数 (2)

1. 检查当前kdump服务状态

1.1 检查是否已经配置加载kdump环境

代码语言:javascript复制
grep crashkernel /proc/cmdline

结果确认:

如果能看到crashkernel=auto字样,表示已经加载

  • 备注1:如果当前没有加载运行,以下操作都将无效(因为kdump服务必须要在操作系统启动前先加载1个kdump的内核环境)。
  • 备注2:auto也可能是具体的内存大小,如128M或512M等。

1.2 检查kdump服务是否正在运行

代码语言:javascript复制
systemctl status kdump

结果确认:

确认为运行状态active (running)

1.3 检查当前系统内存使用情况

备注:请特别关注已用内存,

代码语言:javascript复制
free -h

结果确认:

记录:Mem行的total和used列

1.4 检查kdump存储目录空间情况

kdump.conf 配置文件里的coredump存储目录,确认目录位置和目录的空间(或目录所在的挂载点文件系统可用空间)

代码语言:javascript复制
cat /etc/kdump.conf

结果确认:

确认这2行已经开启

代码语言:javascript复制
path /var/crash  
core_collector makedumpfile -l --message-level 1 -d 31

备注1:默认coredump位置是 /var/crash/,这个目录可以根据实际情况修改crash目录空间必须要大于步骤2检查的内存used使用【极限情况下,crash目录应该大于memory swap的总量,比如主机内存和swap完全耗尽的场景,通常不需要这么大,但是至少是比已用内存的2倍为好】,如果crash目录容量不足,请修改到有足够容量的目录(或挂载点),重启kdump服务

1.5 修改sysconfig kdump参数

代码语言:javascript复制
vi /etc/sysconfig/kdump
# 将下面这一行注释掉,然后复制一行,去掉里面的reset_devices配置
#KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 nr_cpus=1 reset_devices cgroup_disable=memory mce=off acpi_no_memhotplug"
修改后:
KDUMP_COMMANDLINE_APPEND="irqpoll maxcpus=1 nr_cpus=1 cgroup_disable=memory mce=off acpi_no_memhotplug"

1.6 ( 重要:这一步会导致服务器重启,生成环境下请慎重执行!!!)测试触发coredump动作

手工触发coredump动作,开始收集coredump

代码语言:javascript复制
echo 1 > /proc/sys/kernel/sysrq 
echo c > /proc/sysrq-trigger执行命令:

备注:根据内存使用量和存储空间写入速度不同,coredump时间不同,无准确时间,coredump收集完成后,主机会自动重启。

2. Kdump结果验证

收集coredump文件

正确结果:

如果crash目录下的127.0.0.1-时间戳的子目录,并且目录下有vmcore文件,则表示收集成功。

0 人点赞