df -i /var/www
find wp-content/uploads -type f | wc -l
find wp-content/uploads -type f -name '*-150x150.*' | wc -l

上传报 No space left on device,df -h 显示根分区还有 18G 空闲,网站却连缩略图都生成不了。df -i 一看,IUse% 已经 100%。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:主题和插件各自 add_image_size,一张图落盘七个尺寸,三万张图就是二十多万个文件。inode 在格式化时就定死了,跟剩余容量没关系,小文件越多消耗越快。

「缩略图 inode 耗尽」排查到最后往往是很小的一处差异,前面那些复杂猜测可以先放一放。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。

把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。

处理上按这个顺序:先用 df -i 确认是 inode 而不是块空间,两个指标别混;统计 uploads 下各尺寸的文件数,把一年没人访问的尺寸停掉;合并重复尺寸,只保留主题实际调用的那几个,再批量删除旧文件。

确认没问题再收工,df -i 的 IUse% 降到八成以下,上传图片不再报 No space left。

作者 9823189