• CentOS7配置kdump


    CentOS7配置kdump

    1.kdump简介

    • kexec是一个快速启动机制,允许通过已经运行的内核的上下文启动一个Linux内核,不需要经过BIOS。BIOS可能会消耗很多时间,特别是带有众多数量的外设的大型服务器。这种办法可以为经常启动机器的开发者节省很多时间。

    • kdump是一个新的,而且非常可信赖的内核崩溃转储机制。崩溃转储数据可以从一个新启动的内核的上下文中获取,而不是从已经崩溃的内核的上下文。当系统崩溃时,kdump使用kexec启动到第二个内核。第二个内核通常叫做捕获内核(capture kernel),以很小内存启动,并且捕获转储镜像。

    • 第一个内核保留了内存的一部分,第二个内核可以用来启动。注意,在启动时,kdump保留了一定数量的重要的内存,这改变了红帽企业Linux 5最小内存需求。为了计算系统需要的真正最小内存,可以参看 http://www.RedHat.com/rhel/details/limits/ 上列出的最小内存需求,加上kdump使用的内存数量,以决定真正的最小内存的需求。

    • 因为第一个内核的内存内容已经被保留,所以kexec可以不经过BIOS,启动捕获内核。这是内核崩溃转储的根本。

    2.配置kdump

    • (1)安装kexec-tools:使用kdump服务,必须要用到kexec-tools工具包。
    sudo yum update
    sudo yum install kexec-tools
    
      安装完成之后可以通过kexec -version查看kexec的版本。
    
    • 1
    • 2
    • 3
    • 4
    • (2)配置kdump kernel,也可以不配置
    1.修改grub文件
    vim /etc/default/grub
    需要将GRUB_CMDLINE_LINUX="crashkernel=auto..."中的auto修改为128M。一般设为128M或256M。
    
    2.更新grub配置
     只要更改了grub文件,都需要更改grub配置。
     sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    
     3.重启系统
    reboot
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • (3)修改kdump默认配置,也可以不配置
    vim /etc/kdump.conf
    
    其中,需要注意的三行内容是
    path /var/crash            #指定coredump文件放在/var/crash文件夹中
    core_collector makedumpfile -c -l -message-level 1 -d 31   #加上-c表示压缩,原文件中没有
    default reboot         #生成coredump后,重启系统
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • (4)开启kdump服务
    systemctl start kdump.service     //启动kdump
    systemctl enable kdump.service    //设置开机启动
    
    检查kdump开启成功
    service kdump status
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如下所示,表示开启成功
    在这里插入图片描述

    • (5)手动触发crash
    #echo 1 > /proc/sys/kernel/sysrq
    #echo c > /proc/sysrq-trigger
    
    • 1
    • 2

    如果配置成功,系统将自动重启,重新进入系统,可以看到/var/crash文件夹下生成了相应文件,是一个以生成coredump日期为文件名的文件,如图所示:
    在这里插入图片描述
    打开dmesg文件可以看到内核转储内容于你触发crash的内容是对的上的

    [1212551.621023]  __handle_sysrq.cold.9+0x45/0xec
    [1212551.621491]  write_sysrq_trigger+0x2b/0x30
    [1212551.621959]  proc_reg_write+0x3c/0x60
    [1212551.622426]  vfs_write+0xa5/0x1a0
    [1212551.622889]  ksys_write+0x4f/0xb0
    [1212551.623369]  do_syscall_64+0x5b/0x1b0
    [1212551.623835]  entry_SYSCALL_64_after_hwframe+0x65/0xca
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    vscode中golang插件配置
    好用的go开源模块汇总
    常用linux指令
    读大嘴生平咨询---->关于商业模式的思考
    photoprism 源码阅读
    C语言的算法
    C语言输出函数和输入函数
    C语言基本概念
    servlet(3)
    servlet(2)
  • 原文地址:https://www.cnblogs.com/xuanbjut/p/14135756.html
Copyright © 2020-2023  润新知