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