Skip to content

宝塔面板 Inode 可用空间不足问题排查

宝塔面板(BT Panel)提示 Inode 可用不足 10%,导致无法创建新文件的原因分析与清理方案,含小文件查找、日志清理、临时文件清理等完整步骤。

更新于 查看 Markdown

Inode 可用空间不足

问题现象

在宝塔面板首页磁盘信息区域,看到如下提示:

Inode可用不足10%,请前往文件管理清理不必要文件

宝塔面板 Inode 占用 91% 告警

此时尽管磁盘容量(如上图仅用了 16%)仍有大量剩余,但服务器却无法创建新文件、无法写入日志,网站也可能出现 500 错误或 “No space left on device” 报错。


什么是 Inode?

Inode(索引节点,Index Node) 是 Linux 文件系统中的一种数据结构,用来存储文件的元数据,例如:

  • 文件大小
  • 文件所有者和权限
  • 创建/修改/访问时间
  • 文件数据块在磁盘上的位置指针

每一个文件或目录都会独占一个 Inode。文件系统在格式化时,会根据分区大小预先分配固定数量的 Inode,这个数量上限在创建文件系统时就已确定,之后无法扩容(XFS 除外,但扩容也很麻烦)。

你可以把 Inode 理解为图书馆的书目索引卡:

  • 磁盘空间 = 书库的物理空间
  • Inode = 书目索引卡的数量

即使书库还有很多空位,一旦索引卡用完,就无法再登记新书入库——哪怕每本“书”只有几字节大小。


为什么 Inode 会耗尽?

常见原因:

原因 说明
大量小文件 Session 文件、缓存碎片、日志分片等,每个文件占一个 Inode
PHP Session 堆积 默认存储在 /tmp 目录,过期未清理时会积累数十万个文件
邮件队列堆积 Sendmail/Postfix 的队列目录下每封邮件都是独立文件
容器/Docker 残留层 Docker 镜像层解压后会产生大量小文件
npm / Composer 缓存 node_modules 和依赖包包含海量小文件
系统日志轮转残留 /var/log 下未清理的历史日志文件

如何确认 Inode 使用情况

通过 SSH 登录服务器,执行:

df -i

输出示例:

Filesystem       Inodes  IUsed  IFree  IUse% Mounted on
/dev/sda2       4980736 4531208 449528   91%  /
tmpfs            503974     651 503323    1%  /dev/shm

IUse% 达到 90% 以上即需要关注,达到 100% 则完全无法创建新文件。


找出占用 Inode 最多的目录

执行以下命令,统计各目录下的文件数量(从根目录开始,只看第一层,耗时较短):

for dir in /*; do echo "$dir: $(find "$dir" -xdev | wc -l)"; done 2>/dev/null | sort -t: -k2 -rn | head -20

或者针对可疑目录深入排查:

# 查看 /tmp 下各子目录文件数
find /tmp -maxdepth 1 -type d | while read d; do
  echo "$d: $(find "$d" | wc -l)"
done

清理方案

1. 清理 PHP Session 文件

# 查看 session 文件数量
ls /tmp/sess_* 2>/dev/null | wc -l

# 删除 7 天前的 session 文件
find /tmp -name "sess_*" -mtime +7 -delete

2. 清理系统临时文件

# 删除 /tmp 下超过 3 天的文件(保留目录结构)
find /tmp -type f -mtime +3 -delete

3. 清理系统日志

# 清理 7 天前的日志文件
find /var/log -type f -mtime +7 -name "*.log" -delete
find /var/log -type f -mtime +7 -name "*.gz" -delete

# 或使用 journalctl 清理 systemd 日志(保留最近 3 天)
journalctl --vacuum-time=3d

4. 清理 Docker 残留资源

# 清理未使用的镜像、容器、网络、缓存
docker system prune -f

5. 通过宝塔面板文件管理器清理

进入「文件」页面,按文件数量排序,找到文件数异常多的目录,批量删除不需要的临时文件。


清理后验证

df -i

确认 IUse% 已下降到安全范围(建议低于 80%)。


Navigation

Type to search…

↑↓ navigate↵ selectEsc close