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 耗尽问题
- 确认:
df -i(IUse% 接近 100%)。 - 查找目录:
sudo du --inodes -x --max-depth=3 / | sort -n | tail -20 - 在删除任何内容之前,先检查是什么创建了这些文件。
- 使用该应用程序自身的工具或 find 删除该应用程序的旧文件,例如在不带 -delete 进行预演之后运行:
find /path -type f -mtime +7 -delete。
注意事项
- 务必先在不带 -delete 的情况下运行 find 并仔细阅读列表。
- ext4 的 inode 数量在创建文件系统时即已固定。
相关文章
- df (磁盘剩余空间)如何读取 df 的输出,为什么普通用户在 Avail 降为零之前 Use% 就可能达到 100%,以及如何使用 df -i 检查 inode。
- 使用 find 查找大文件和旧文件如何使用 find 在 Linux 上列出大文件或旧文件、安全地预览它们,并仅删除你已检查过的内容。
- 使用 du 和 ncdu 查看磁盘使用情况如何使用 du 和交互式的 ncdu 查找 Linux 磁盘中被占满的内容,并提供保留在单个文件系统中的选项。
资料来源
最后审核: