# Inodes 与“设备上没有空间”

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

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

## 资料来源

- [inode(7)](https://man7.org/linux/man-pages/man7/inode.7.html)
- [df(1)](https://man7.org/linux/man-pages/man1/df.1.html)
- [du(1)](https://man7.org/linux/man-pages/man1/du.1.html)
- [find(1)](https://man7.org/linux/man-pages/man1/find.1.html)

最后更新: 2026-10-08
URL: https://raincleaner.eu/zh/wiki/linux/inodes
