文章总结: 大促前夕三台生产服务器因自动更新中断导致GRUB/initramfs损坏,作者通过grubrescue手动修复、救援模式重装引导、重建initramfs恢复业务。根因为yum更新超时,建议大促前禁用自动更新、验证grub安装、/boot独立分区、保留多内核并定期备份配置。 综合评分: 85 文章分类: 应急响应,实战经验,安全运营
大促前夕,生产环境三台机器同时崩了是一种什么体验
原创
刘军军 刘军军
运维星火燎原
2026年5月22日 00:00 山西
在小说阅读器读本章
去阅读
我睡着了。手机震。值班的打电话。说三台交易机起不来了。业务掉了5%。
嗯。我醒了。开电脑。穿衣服?没穿。直接坐起来。
先连iDRAC。第一台。
屏幕上是这个:
grub rescue>
我敲了ls。
grubrescue> ls
(hd0) (hd0,msdos1) (hd0,msdos2)
然后我想看看哪个分区有boot。先试第一个:
grub rescue> ls (hd0,msdos1)/
报错。unknown filesystem。再试第二个:
grub rescue> ls (hd0,msdos2)/
出来了。boot目录。嗯,就是它。
然后我手动设root和prefix。怎么说呢,就是敲这几行:
grub rescue> set root=(hd0,msdos2)
grub rescue> set prefix=(hd0,msdos2)/boot/grub2
grub rescue> insmod normal
grub rescue> normal
哎。GRUB菜单出来了。选内核启动。进去了。
好了。第一台恢复。业务先顶着。
第二台
也卡在grub rescue。但是敲insmod normal的时候,报错:
grub rescue> insmod normal
error: file'/boot/grub2/i386-pc/normal.mod' not found.
我试了别的模块。也不行。GRUB核心文件丢了。 rescue模式修不了。
这时候凌晨1点50了。群里一直在催。我把流量切到别的机器。然后在这台的iDRAC里挂载欧拉ISO。重启。进救援模式。
进去以后,先chroot:
# chroot /mnt/sysimage
然后重装GRUB。我打了:
# grub2-install /dev/sda
结果:
Installing for i386-pc platform.
grub2-install: error: cannot finda GRUB drive for /dev/sda. Check your device.map.
报错了。我一看,/boot/grub2/device.map这个文件不存在。手动建一个:
#echo"(hd0) /dev/sda" > /boot/grub2/device.map
然后再装:
# grub2-install /dev/sda
Installation finished. No error reported.
然后生成配置:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.0-xxx
Found initrd image: /boot/initramfs-4.18.0-xxx.img
done
重启。好了。
第三台。
这台最烦。不是grub rescue。能进GRUB菜单。但是选了内核之后卡在这里:
Loading initial ramdisk ...
[ 0.000000] [Firmware Bug]: TSC_DEADLINE disabled due to Errata; please update microcode to version: 0x3b (or later)
一直不动。我猜initramfs坏了。先试Advanced里的上一个内核。还是一样卡住。那就是initramfs的问题。
重新生成。进救援模式。挂ISO。chroot。然后:
# dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
生成完。重启。好了。
三台都恢复了。
我后来查原因。看了yum历史。发现当天晚上10点有个自动更新。更新了kernel和grub2包。但是网络超时。部分文件没写完整。三台坏的程度不一样。第一台GRUB模块损坏。第二台GRUB核心整个没了。第三台initramfs生成一半断了。
后来我跟团队定了几条规则。大促前禁止自动更新。每次内核更新后手动验证grub2-install。/boot单独分区。至少保留两个内核版本。每周备份GRUB配置。
第二天同事问我,在grub rescue里敲insmod normal,万一敲错了会不会把磁盘写坏。我说不会。那只是内存操作。不写盘。
但说真的,那几分钟手是抖的。三台生产同时挂。换谁不慌。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:运维星火燎原 刘军军 刘军军《大促前夕,生产环境三台机器同时崩了是一种什么体验》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论