在业务使用过程中,经常遇到服务器概率性崩溃(准确来说是内核崩溃),重启后一切ok,但是这种隐藏的bug在商业领域是不可接受的,宕机出现即是大问题。因此内核提供了一种保留崩溃现场的机制,保存内核崩溃的现场信息在硬盘等下电不易失的存储介质,方便程序员可以分析崩溃原因。
如上图,kdump功能主要分为3部分:
1)kdump使能阶段:安装kdump,然后重启系统生效,系统会预留一段内存作为第二内核和日志存储用;kdump启动会使用kexec命令加载第二内核完毕,等待触发panic启动;
2)系统panic,进入第二内核,内核将出错信息保存在/proc/vmcore提供给用户;
3)日志转储完毕,重启系统,/var/crash分析日志;
2.1、安装kdump
sudo apt install linux-crashdump -y //麒麟系统内核已使能kdump的支持, 故仅需要安装linux-crashdump包即可,安装过程中有个选项提示框,选择yes表示kdump安装后随系统启动默认启动
vim /etc/default/kdump-tools //也可检查配置文件确认kdump是否开机默认启动,1表示随开机启动
reboot //重启生效
kdump-config show //查看kdump配置信息
如上图当前kdump状态是Not ready to kdump(这边状态起不来,待更...)
echo c > /proc/sysrq-trigger //模拟内核崩溃,会触发一个空指针的kernel panic,可验证kdump机制是否运行
sudo yum update
sudo yum install kexec-tools -y
vim /etc/default/grub //需要将GRUB_CMDLINE_LINUX="crashkernel=auto..."中的auto修改为128M。一般设为128M或256M。
sudo grub2-mkconfig -o /boot/grub2/grub.cfg // 更新grub配置
reboot
sudo vim /etc/kdump.conf //更改kdump默认配置,设置内核crash后自动reboot
sudo systemctl restart kdump
sudo systemctl enable kdump
echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger
如果配置成功,系统将自动重启,重新进入系统,可以看到/var/crash文件夹下生成了相应文件,是一个以生成coredump日期为文件名的文件,如图所示:
cockpit是麒麟服务器系统自带的系统监控软件
cockpit地址:https://服务器IP:9090 (注意开放防火墙)
用户名密码均为服务器的用户名和密码
默认是打开的,下面测试配置是发送内核故障,演示内核崩溃的场景,随后会自动重启并在/var/crash目录下生成crash文件
-------------------------
麒麟软件以安全可信操作系统技术为核心,旗下拥有“银河麒麟”、“中标麒麟”两大产品品牌,面向通用和专用领域打造安全创新操作系统产品和相应解决方案,现已形成了服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云等产品。麒麟软件系列产品能同时支持飞腾、鲲鹏、龙芯、申威、海光、兆芯等国产CPU。企业坚持开放合作共建产业生态,为客户提供完整的国产化解决方案。
麒麟软件官网:https://www.kylinos.cn
麒麟生态适配查询:https://eco.kylinos.cn/zoology/commercial.html
优麒麟社区:https://www.ubuntukylin.com/comunity
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!