大促前夕,生产环境三台机器同时崩了是一种什么体验

admin 2026-05-24 05:42:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 大促前夕三台生产服务器因自动更新中断导致GRUB/initramfs损坏,作者通过grubrescue手动修复、救援模式重装引导、重建initramfs恢复业务。根因为yum更新超时,建议大促前禁用自动更新、验证grub安装、/boot独立分区、保留多内核并定期备份配置。 综合评分: 85 文章分类: 应急响应,实战经验,安全运营


cover_image

大促前夕,生产环境三台机器同时崩了是一种什么体验

原创

刘军军 刘军军

运维星火燎原

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,万一敲错了会不会把磁盘写坏。我说不会。那只是内存操作。不写盘。

但说真的,那几分钟手是抖的。三台生产同时挂。换谁不慌。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:运维星火燎原 刘军军 刘军军《大促前夕,生产环境三台机器同时崩了是一种什么体验》

评论:0   参与:  0