Rain WikiWindows · Linux · Android

Inodes 与“设备上没有空间”

概念ext4 及类似文件系统

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

1如何查看

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

2常见原因

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

3查找目录

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 数量在创建文件系统时即已固定。

资料来源

  1. inode(7) man7.org
  2. df(1) man7.org
  3. du(1) man7.org
  4. find(1) man7.org

最后审核: