先看现象。CentOS 7 的 /boot 单独分了 200M,里面堆了六个旧内核,yum update kernel 报 installing package kernel needs 24M on the /boot filesystem,df 显示只剩 96M,先删了 /boot 里几个旧 config 文件腾出几 M,装到一半还是同样的报错。

把日志和配置对完,能解释这个现象的基本就这几处。每次升级都保留旧内核,initramfs 单个三四十 M,几个就占满。还有一种是installonly_limit 设成 5,手工 rpm 装的 kernel 不计入这个限制。

少数情况下是/boot 当初只分了 200M,在 CentOS 7 上撑不住两轮以上升级。

先看占用与内核数量

df -h /boot; ls -lh /boot/vmlinuz-* /boot/initramfs-*

然后清掉除当前外的旧内核包

package-cleanup --oldkernels --count=2

应急时按版本精确删

rpm -q kernel | grep -v "$(uname -r)" | xargs -r yum -y remove

等前面都确认过,再把保留数调小

在 /etc/yum.conf 写 installonly_limit=2

当时还开着另一个排查窗口,两边日志对照着看才定位到。

改完先别撤,确认这几项。df -h /boot 使用率降到 50% 以下,yum update kernel 能装完,uname -r 与 rpm -q kernel 里最新版本一致且重启正常。

补一句。删内核前一定要确认当前运行版本不是要删的那个;/boot 太小的机器只能靠调小保留数维持,根治要重建分区。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189