Alibaba Cloud Linux 2系统提供了Kdump服务。开启该服务后可捕获内核错误,方便您对内核崩溃现象进行分析。开启Kdump时会占用一部分操作系统内存空间,对应的用户态系统服务kdump.service可能会影响系统启动速度。鉴于此,在Alibaba Cloud Linux 2系统中, Kdump服务不是默认全部开启的,用户需要根据业务实际需求,进行相应的配置。本文重点介绍在Alibaba Cloud Linux 2系统中,Kdump服务的打开和关闭选项,并解释对应的风险和应对方法。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
Kdump服务的开启依赖于内核运行时预留的一段内存地址空间,该内存地址空间的大小由内核命令行参数/proc/cmdline
中的crashkernel
选项指定。我们默认在Grub中添加了crashkernel
选项,并分段式指定内存大小,整体选项为crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M
,具体含义如下:
要验证当前操作系统是否成功预留了相应大小的内存空间,可在操作系统内部执行如下命令查看。
cat /sys/kernel/kexec_crash_size
系统返回类似如下。
201326592
说明:返回结果中的
kexec crash size
单位为字节。
仅有crashekernel
内核启动选项是无法实现Kdump完整功能的,还需要配合Kdump服务。参考如下步骤,开启或关闭Kdump服务:
inactive
,则说明Kdump服务处于未激活状态。
systemctl status kdump.service
0
,则说明Kdump服务处于未激活状态。
cat /sys/kernel/kexec_crash_loaded
systemctl start kdump.service
systemctl stop kdump.service
systemctl enable kdump.service
systemctl disable kdump.service
如果您的实例无需启用Kdump服务,并希望将系统预留的内存地址空间归还给操作系统本身,以避免资源浪费,可执行下列命令,彻底关闭Kdump服务。
sh -c 'echo 0 > /sys/kernel/kexec_crash_size' systemctl disable kdump.service systemctl stop kdump.service
通过下列命令验证内存地址空间不再为Kdump预留,即返回值为0
。
cat /sys/kernel/kexec_crash_size
说明:Kdump服务预留的内存地址空间归还给操作系统后,必须重启操作系统才可再次开启Kdump服务。
说明:
- 镜像:
aliyun-2.1903-x64-20G-alibase-20190327.vhd
及之后所有版本。- 内核:
kernel-4.19.24-9.al7
及之后所有内核版本。