如何在Aliyun Linux 2系统中配置Kdump?

作者阿里云代理 文章分类 分类:新闻快递 阅读次数 已被围观 607

概述

Aliyun Linux 2系统提供了Kdump服务。开启该服务后可捕获内核错误,方便您对内核崩溃现象进行分析。开启Kdump时会占用一部分操作系统内存空间,对应的用户态系统服务kdump.service可能会影响系统启动速度。鉴于此,在Aliyun Linux 2系统中, Kdump服务不是默认全部开启的,用户需要根据业务实际需求,进行相应的配置。本文重点介绍在Aliyun Linux 2系统中,Kdump服务的打开和关闭选项,并解释对应的风险和应对方法。

详细信息

阿里云提醒您:

如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。

如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。

如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

内核启动选项crashkernel的说明

Kdump服务的开启依赖于内核运行时预留一段内存地址空间,该内存地址空间的大小由内核命令行参数/proc/cmdline中的crashkernel选项指定。我们默认在Grub中添加了crashkernel选项,并分段式指定内存大小,整体选项为crashkernel=0M-2G:0M,2G-8G:192M,8G-:256M。

•当您购买的ECS实例内存,或者手工配置的操作系统内存大小不超过2GiB时,由于应用程序本身可用的内存数量已处于紧缺状态,将不再为操作系统预留内存。因此,系统内存小于2GiB时,您将无法使用Kdump功能。

•当您购买的ECS实例内存,或者手工配置的操作系统内存大小超过2GiB,但是不超过8GiB时,系统将预留192MiB的内存大小。

•当您购买的ECS实例内存,或者手工配置的操作系统内存大小超过8GiB时,系统将预留256MiB的内存大小。

要验证当前操作系统是否成功预留了相应大小的内存空间,可在操作系统内部执行如下命令查看。

cat /sys/kernel/kexec_crash_size

系统返回类似如下。

201326592

注:返回结果中的kexec crash size单位为字节。

Kdump系统服务的开启与关闭

仅有crashekernel内核启动选项是无法实现Kdump完整功能的,还需要配合Kdump服务。参考如下步骤,开启或关闭Kdump服务。

1.参考如下两种方式,检查Kdump服务的运行状态。

▫执行下列命令,查看服务的运行状态。如果返回结果中Active的值为inactive,则说明Kdump服务处于未激活状态。

systemctl status kdump.service

▫执行下列命令,查看内核接口提示的状态。如果返回结果为“0”,则说明Kdump服务处于未激活状态。

cat /sys/kernel/kexec_crash_loaded

2.可参考如下命令,开启或关闭Kdump服务。

▫开启Kdump服务。

systemctl start kdump.service

▫关闭Kdump服务。

systemctl stop kdump.service

3.参考步骤1,确认Kdump服务的运行状态符合预期。

4.您还可以参考如下命令,选择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

0

注:Kdump服务预留的内存地址空间归还给操作系统后,必须重启操作系统才可再次开启Kdump服务。

阿里云代理商  阿里云分销商

本公司销售:阿里云、腾讯云、百度云、天翼云、金山大米云、金山企业云盘!可签订合同,开具发票。

我有话说: