今天更新了一下服务器系统,然后重启了一下服务器,结果发现服务器启动失败。
打开阿里云控制终端发现是服务器 kernel panic 了,显示如下信息:
当时我怎么也想不通为何是“unable to mount root fs”,后来才意识到:是因为几天前使用 yum update 升级内核时由于内存不足导致 initramfs 创建时发生错误,既然 initramfs 都错了那么 kernel panic 也是情理之中的事情了。
事情的前因后果是这样的:
由于机器内 apache 进程占用了大量内存,剩余内存只有约 150 MB,在执行 yum update 时,yum 没有因内存不足而崩溃,软件包脚本也没有因内存不足而崩溃,但是——创建 initramfs 的时候,depmod 因为内存不足崩溃了!更要命的是,depmod 崩溃时 pty 上没有任何出错信息(错误信息在显示在 tty 上 pty 里看不到),而且 initramfs 能够被创建出来!这样,一个崩坏的 initramfs 就正大光明地进入了 /boot,然后的事情大家就都知道了。
p.s. #1 阿里云的客服态度很好~~帮我把服务器从旧的正常的内核启动了,还告诉我怎么拼手速进入 GRUB 界面。
p.s. #2 事实上 yum 也可能崩溃,此时还需要 rpm –rebuilddb 和 yum-complete-transaction 来解决问题。
p.s. #3 修复完问题之后我立马掏了 300 块钱把服务器升级到了 1GB 内存,原来的 512MB 内存实在是太捉襟见肘了。