Kdump简单介绍 什么是Kdump? 而kdump的主要流程如下: 下面我将会从系统开始的过程来介绍一下kdump的整体过程的: 系统启动阶段 在系统启动的时候,会调用start_kernel这个函数。 【在kdump的脚本里面有具体的过程】 在启动kdump服务的时候,会按照配置将crash kernel的镜像以及initramfs给加载到预留内存中。 当然,在我们对kdump.conf文件进行了修改以后,我们是需要重启kdump服务来将修改生效的。那么为什么我们需要重启才能生效呢? :systemctl restart kdump 重启kudmp服务 在源码中,kdump是通过判断配置文件的修改时间来确定是不是修改的,我们这里touch了配置文件,在重启的时候kdump就会重新打包
检查当前kdump服务状态1.1 检查是否已经配置加载kdump环境grep crashkernel /proc/cmdline结果确认:如果能看到crashkernel=auto字样,表示已经加载备注 1:如果当前没有加载运行,以下操作都将无效(因为kdump服务必须要在操作系统启动前先加载1个kdump的内核环境)。 1.2 检查kdump服务是否正在运行systemctl status kdump结果确认:确认为运行状态active (running)1.3 检查当前系统内存使用情况备注:请特别关注已用内存,free -h结果确认:记录:Mem行的total和used列1.4 检查kdump存储目录空间情况kdump.conf 配置文件里的coredump存储目录,确认目录位置和目录的空间(或目录所在的挂载点文件系统可用空间 服务1.5 修改sysconfig kdump参数vi /etc/sysconfig/kdump# 将下面这一行注释掉,然后复制一行,去掉里面的reset_devices配置#KDUMP_COMMANDLINE_APPEND
日志(本章节) 11.Linux日志-日志小结 在Linux基础-系统安装的时候,我们曾经在部署介绍说kdump功能,那什么是kdump呢? kdump 提供了一种在系统崩溃时仍能获取关键数据的方法,避免了信息丢失和无法复现问题的困难。 集成和配置:kdump 需要事先进行配置才能正常工作。管理员需要为其指定一个用于保存转储文件的合适的文件系统分区,并确保系统在崩溃时能够自动触发 kdump 的操作。 2.kdump需要专门的内存,在系统安装的时候可以选。 3.kdump文件一般比较大,需要预留足够的空间,避免空间不够大,导致生成日志失败,我见过都是几十G。 4.kdump可以提前测试模拟崩溃,避免配置导致kdump无法生成。 5.已知内核bug,或者硬件故障可能会出发系统崩溃而产生kdump日志。
命令检查系统是否配置正确: $ kdump-config show DUMP_MODE: kdump USE_KDUMP: 1 KDUMP_SYSCTL: kernel.panic_on_oops =1 KDUMP_COREDIR: /var/crash // kdump 文件的存储目录 crashkernel addr: 0x /var/lib/kdump/vmlinuz: symbolic kdump USE_KDUMP: 1 KDUMP_SYSCTL: kernel.panic_on_oops=1 KDUMP_COREDIR: /var/crash crashkernel 调用了 kdump-config savecore: # vim /etc/init.d/kdump-tools KDUMP_SCRIPT=/usr/sbin/kdump-config ="$KDUMP_STAMPDIR/vmcore-incomplete" KDUMP_COREFILE="$KDUMP_STAMPDIR/vmcore.
kdump简介kdump,这个名字在Linux运维圈内并不陌生,它是Linux内核崩溃转储机制的一种实现。 安装与配置kdump步入正题,首先需要在我们的服务器操作系统中安装kdump。 :sudo yum check updatessudo yum install kdump接下来是配置kdump的重头戏。 分析和解读kdump生成的内核转储文件当成功地使用kdump捕获到内核转储文件后,接下来的重点是如何解读这些文件以找到问题的根源。这时,crash工具就成为了我们的得力助手。 结束语通过本文的介绍,希望读者能够对kdump有了更深入的了解,并能够在实际工作中有效运用kdump来提升运维工作效率。记住,掌握kdump,就是掌握了一把破解系统故障密码的钥匙。祝您运维愉快!
一、KDUMP的工作原理 KDUMP利用了kexec机制,它允许在内核崩溃后直接加载并运行一个新的内核,而无需通过BIOS或固件重新引导系统。 生成内存转储:崩溃内核启动后,使用kdump工具生成内存转储文件,将其保存到预先配置的位置(如本地磁盘、NFS共享或远程服务器)。 二、KDUMP的配置 配置KDUMP主要包括以下几个步骤: 1. 配置KDUMP服务 编辑KDUMP配置文件/etc/kdump.conf,指定内存转储文件的保存位置: bash path /var/crash 启动并启用KDUMP服务: bash sudo systemctl start kdump sudo systemctl enable kdump 三、验证KDUMP配置 为了验证KDUMP是否正确配置,可以手动触发系统崩溃: bash echo c > /proc 五、KDUMP的实际应用 KDUMP在生产环境中应用广泛,尤其是在需要高可用性和快速故障排除的系统中。
kdump概述 kdump kdump 是一种先进的基于 kexec 的内核崩溃转储机制,用来捕获kernel crash(内核崩溃)的时候产生的crash dump。 当内核产生错误时,kdump会将内存导出为vmcore保存到磁盘。 kdump流程 当系统崩溃时,kdump 使用 kexec 启动到第二个内核。 第一个内核启动时会保留一段内存给kdump用。 启动kdump服务 systemctl start kdump.service // 启动kdump服务 service kdump status // 查看kdump状态 测试kdump是否可以正常 qemu使用kdump 我们经常会使用qemu去启动虚拟机。qemu启动的内核发生错误也可以用kdump生成vmcore文件。
什么是 crash 如前文所述,当 linux 系统内核发生崩溃的时候,可以通过 kdump 等方式收集内核崩溃之前的内存,生成一个转储文件 vmcore。 48] phys_addr_t phys_addr; [56] void *caller; } SIZE: 64 精彩案例 如前文所述,当 linux 系统内核发生崩溃的时候,可以通过 kdump 该系统已经配置了 kdump 启用,因此在系统发生崩溃之后,在 /var/crash/ 当天日期 / 目录下面生成一个 vmcore 文件,下面我们来对这个文件进行分析。 内核固然高深,但是通过 kdump 和 crash 这对战友的亲密配合,很多问题都会迎刃而解。本文仅为您介绍了 crash 的基本知识,更多的技巧还需要读者在实践中不断探索和总结。
crashkernel=2G-16G:512M,16G-:768M" 注意最后的 “crashkernel=2G-16G:512M,16G-:768M” 参数,表示系统内存在2G~16G之间的时候,kdump 再看看我4G的那台机器,发现并没有启用kdump。噢,原来相差的500M内存在这里啊! 什么是kdump? kdump是Linux内核的一个功能,可在发生内核错误时创建核心转储。 当被触发时,kdump会导出一个内存映像(也称为vmcore),该映像可用于调试和确定崩溃的原因。 [1][2] 那我能不能把kdump预留的内存调小一点呢? kdump是为了出错后方便分析错误。那我们干脆不分析了吧!那直接关掉kdump功能即可!
工具kdump的配置是在生产系统的Linux环境中配置的.下面根据操作系统的不同,简单介绍一下如何安装kdump.3.1 Centos/RHEL/Tlinux 环境下的安装首先确认当前系统中是否已经安装过 kdump.可以运行如下命令确认kdump服务是否已进有了:systemctl status kdump.service.如果没有,则按照如下步骤安装:1) 安装kexec-tools执行如下命令:yum kdump.service //启动kdumpsystemctl enable kdump.service //设置开机启动7) 检查kdump是否开启成功service kdump status8) 验证kdump功能注意下面的命令将触发OS重启,并在/var/crash目录下(根据kdump.conf配置)生成一个带有时间的目录,目录下会生成vmcore文件.测试命令如下:echo 1 > /proc /etc/default/kexec,设置LOAD_KEXEC=true修改/etc/default/kdump-tools,设置USE_KDUMP=13) 验证kdump功能运行如下测试命令验证,同样需要注意的是这将触发重启
其中,kdump占用的内存是可以自行设置的,如无特殊要求,请勿自行修改kdump占用的内存大小。 关闭或调小银河麒麟操作系统默认分配的kdump内存值kdump默认分配内存为1024M1.修改kdump分配的内存或 删除crashkernel=auto,high 字段,(关闭kdump服务systemctl stop kdump.service,disable kdump服务systemctl disable kdump.service。 不做该步骤也可以释放kdump预留内存。),配置同步grub.cfg。2.配置同步grub.cfg。通过测试发现:/boot/grub2/下没有grub.cfg,那么启动方式为UEFI。
服务启动失败 先来说一下,什么是kdump Kdump是一个内核崩溃转储机制,在系统崩溃的时候,Kdump将捕获系统信息,这对于针对崩溃的原因非常有帮助。 注意,Kdump需要预留一部分系统内存,而且这部分内存对于其他用户是不可用的。 安装虚拟机时,给虚拟机设置的内存为1G,所以说系统关掉了kdump功能,造成了kdump服务启动失败。 找到了原因,重新给crashkernel设置参数即可: 在 kdump 的配置中,往往困惑于 crashkernel 的设置。“crashkernel=X@Y”,X 应该多大? Y 又应该设在哪里呢? 将crashkernel=auto 改为crashkernel=128M 后保存,如果还不能解决问题,改为256m试试 重新启动系统,kdump服务启动成功。
但是实际的应用场景中,pvpanic实际上和kdump工具冲突。下面我们来分析一下为什么冲突,以及如何解决。 分析 pvpanic和kdump为什么冲突 在配置了kdump的情况下,panic发生之后,内核会尝试加载新的内核,根据配置参数dump内存到磁盘中。 那么,guest内部的kdump得不到运行。 所以,kdump和pvpanic不能够同时生效运行。 引入的另外一个问题是,配置了kdump之后,发生了panic的话,guest内部发生重启,而我们无法区分是guest内部的正常重启还是kdump重启,会给我们的监控带来很大的困难。 这样,兼容了原有的逻辑,也可以解决上述的kdump和pvpanic冲突的问题。 在完整功能的upstream过程中,得到了Paolo的支持,感谢Paolo。
' means 'grep -F'.三、grep对文件的操作1.在当前目录下过滤以.conf结尾且内容包含ssh字符的文件[root@server001 etc]# grep ssh *.conf kdump.conf :# ssh <user@server>kdump.conf:# sshkey <path>kdump.conf:# - Will use the sshkey to do ssh dump.kdump.conf:# Specify the path of the ssh key to use when dumpingkdump.conf:# The default value is /root/.ssh/kdump_id_rsa.kdump.conf:# The default core_collector for raw/ssh dump is:kdump.conf:#ssh user@my.server.comkdump.conf:#sshkey /root/.ssh/kdump_id_rsasestatus.conf
port port="2000" protocol="tcp" accept' 关闭内核日志以节省内存 策略:服务器安装系统后会发现内存大小往往比实际配置小很多,这是因为系统内核预留了一部分内存,例如kdump 2.确认是否启用kdump systemctl status kdump 3.停用 kdump systemctl stop kdump sudo systemctl disable kdump 4.编辑
Linux日志-lastlog日志 6.Linux日志-cron日志 7.Linux日志-sar日志 8.Linux日志-journal日志 9.Linux日志-dmesg日志 10.Linux日志-kdump 从功能来区分,主要包括系统日志(message和journal);登录日志(btmp,wtmp,lastlog);安装相关(secure);内核相关(dmesg和kdump);任务计划日志cron;监控日志 有的日志是有systemctl方式运行进程的,比如cron,kdump,rsyslog,还有些是某些进程控制的,我们只需要了解即可,并不需要特别搞清楚他们的逻辑关系。
kdumpctl: kdump: kexec: failed to load kdump kernel kdumpctl: kdump: Starting kdump: [FAILED] systemd : kdump.service: Main process exited, code=exited, status=1/FAILURE systemd: kdump.service: Failed with nokaslr novmcoredd hest_disable disable_cpu_apicid=0' --initrd=/boot/initramfs-4.18.0-80.7.1.el8.x86_64kdump.img
kdumpctl: kdump: kexec: failed to load kdump kernel kdumpctl: kdump: Starting kdump: [FAILED] systemd : kdump.service: Main process exited, code=exited, status=1/FAILURE systemd: kdump.service: Failed with nokaslr novmcoredd hest_disable disable_cpu_apicid=0' --initrd=/boot/initramfs-4.18.0-80.7.1.el8.x86_64kdump.img
systemctl --failed可以查看启动失败的服务: $ systemctl --failed UNIT LOAD ACTIVE SUB DESCRIPTION kdump.service 在以上的示例中,kdump和php-fpm启动失败,如果出现这种情况,需要检查一下服务的启动脚本和它所依赖的服务。 参考链接 CentOS 7 开放端口和关闭防火墙
提示对分区进行格式化,点击同意格式化 第五步:关闭 kdump内核崩溃转储机制 进入设置 kdump 的界面 取消勾选 第六步:网络和主机名 开启网络 第七步:配置完成,开始安装 开始安装 在安装的过程中设置超级管理员