Rain Wiki · Linux

Inodes 与“设备上没有空间”

什么是 inode、如何使用 df -i 查看 inode 使用情况,以及如何查找包含数百万个小文件的目录。

Linux · Rain Wiki

inode 是类 Unix 文件系统用于存储文件相关信息(如所有者、权限、大小以及数据存放位置)的数据结构。每个文件占用一个 inode,且许多文件系统的 inode 数量是固定的,因此数百万个微小文件会导致出现“设备上没有空间”的错误,而 df -h 却显示仍有剩余空间。

如何查看

'df -i' 列出每个文件系统的总 inode 数、已用 inode 数和可用 inode 数。'ls -i' 显示文件的 inode 号,'stat <file>' 显示文件的 inode 详细信息。

常见原因

Web 应用程序的会话或缓存目录、邮件队列、未轮转的小日志文件以及构建缓存可能会产生数百万个文件。

查找目录

GNU du 可以统计 inode:'du --inodes -x / | sort -n | tail' 会列出条目最多的目录。

如何解决 inode 耗尽问题

  1. 确认:df -i(IUse% 接近 100%)。
  2. 查找目录:sudo du --inodes -x --max-depth=3 / | sort -n | tail -20
  3. 在删除任何内容之前,先检查是什么创建了这些文件。
  4. 使用该应用程序自身的工具或 find 删除该应用程序的旧文件,例如在不带 -delete 进行预演之后运行:find /path -type f -mtime +7 -delete。

注意事项

  • 务必先在不带 -delete 的情况下运行 find 并仔细阅读列表。
  • ext4 的 inode 数量在创建文件系统时即已固定。

资料来源

最后更新: 2026-10-08

相关文章