linux kdump centos7,Centos kdump使用中的问题

centos机器配置了kdump后,在意外宕机后,会生成vmcore以便机器重启后分析问题原因。但是在高性能机器中,由于内存配置非常大,使得每次panic后重启时间比较长(内存256G,系统盘为双ssd组成的raid1,时间大概20分钟左右)。在线上业务不能长时间处于中断状况下,往往都会通过带外强行重启,使得vmcore文件不能完整的生成,这样给后续分析与解决问题造成很大困难。

本文的目的是优化kdump,减少系统宕机时生成vmcore的时间,或者通过其他方式获取内存中指定的信息。

解决方案

从centos6.4 开始,在系统panic时会多生成一个vmcore-dmesg.txt文件,此文件记录的就是panic时刻栈信息,接着生成vmcore文件。

这样即使vmcore生成过程中,强行重启机器,依然有栈信息可以分析。

遇见问题

1. vmcore生成过程中强行重启机器,vmcore-dmesg.txt文件未生成,定位原因为内存数据还未下刷到磁盘。在centos6.6中已经修补此问题,解决办法就是在vmcore-dmesg.txt文件生成后,调用了sync命令

2. 在打了热补丁的机器上,由于lsmod查看到部分模块已经从/lib/modules下删除,导致生成kdump.img过程中找不到对应的ko文件而失败,这个可以更改/sbin/mkdumprd脚本,增加modinfo判断模块是否存在,如果不存在,则该模块就skip

3. 将centos7内核移植到centos6中,由于centos7内核ext4兼容ext3,默认ext3模块不编译,使用centos6系统自带/sbin/mkdumprd脚本生成kdump.img会触发找不到ext3模块的错误,解决办法可以有以下几种:

3.1 使用centos7中的/sbin/mkdumprd、kdump-lib.sh脚本,并修改/sbin/mkdumprd脚本中dracut命令,去掉--hostonly-cmdline参数(测试失败,参数--hostonly-cmdline很重要)

3.2 使用centos6自带的/sbin/mkdumprd脚本,判断模块名称为ext3时,强行换成ext4  (测试成功,但方法不好)

4. yum update kexec-tools执行完后,重启kdump服务卡住,原因为/var/lock/kdump文件存在,导致锁等待,进一步定位,为第一次mkdumprd命令执行未退出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
kdump是一个在Linux内核崩溃时收集dump信息的工具。它的设计目标是在遇到内核崩溃时,能够提供完整的内核转储信息,以便开发人员进行分析和调试。 kdump的工作原理是在系统启动时,设置一个保护内存区域,用于在内核崩溃时存储dump信息。当系统出现崩溃时,kdump会触发一个内核崩溃的路径,将所有的内核状态信息存储在这个保护区域。然后,kdump会加载一个独立的小内核,这个小内核只包含了最小的功能,仅仅用于将之前存储的内核状态信息写入磁盘。这样,即使主内核发生崩溃,kdump仍然能够将dump信息保存下来。 kdump所收集的dump信息包含了内核的堆栈、寄存器的状态、内核模块列表、内核代码和数据段等。这些信息对于开发人员分析和调试内核问题非常有帮助。无论是内核的软件错误、硬件故障还是系统配置错误,都能够通过kdump的信息来定位和解决问题。 为了使用kdump,我们首先需要安装kexec工具,然后对系统进行一些配置,如设置内存保护区域的大小、crashkernel参数等。配置完成后,重新启动系统,当系统崩溃时,kdump就会自动工作。 总结来说,kdump是一个非常有用的Linux内核调试工具,能够在内核崩溃时提供完整的dump信息,为开发人员提供了方便的分析和调试手段。它能够帮助我们快速定位和解决各种内核问题,提高系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值