如何解决服务器存储 inode 耗尽的问题

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

当文件系统的inode使用率达到100%时,无法写入文件,即使有空闲空间。通过使用-T small参数创建ext4文件系统,可以解决此问题。还介绍了查找和删除大小为0的空文件的方法,以及定期打包和归档历史小文件的方法。

🔎

延伸解读

inode耗尽与磁盘空间无关

文章指出,即使硬盘只使用了约30%的空间,也可能因inode使用率达到100%而无法写入新文件。inode记录文件属性和数据块编号,每个文件占用一个inode。当服务器存储大量1KB左右的小文件时,inode消耗极快,导致空间充足却无法创建文件。因此,监控inode使用率与监控磁盘空间同样重要。

-T small参数的实际效果与代价

通过对比实验,使用-T small参数创建ext4文件系统后,inode数量从65536增加到262144,多了近20万个。但代价是数据块大小从4KB变为1KB,存储同样大小的文件会占用更多数据块,数据更分散,可能影响大文件的读取速度。因此,该参数更适合小文件为主的场景,而非通用场景。

已有文件系统的临时缓解方法

对于已出现inode不足的文件系统,文章给出两种临时方案:一是删除大小为0的空文件,使用find命令时注意-size 0c表示文件大小为0,而-size 1k表示占用空间为1KB;二是定期打包归档历史小文件,减少文件数量。这些方法无需重建分区,但只能缓解,不能根本增加inode总数。

❓

Q&A

inode耗尽会导致什么问题?

当inode使用率达到100%时,无法写入新文件,即使有空闲空间。

如何创建更多inode以优化小文件存储?

可以使用-T small参数创建ext4文件系统,以获取更多inode。

使用-T small参数创建文件系统有什么影响?

使用-T small参数会将数据块大小从4KB变为1KB,可能影响文件读取速度。

如何查找并删除空文件以解决inode不足?

可以使用命令find PATH -name '*' -type f -size 0c查找并删除大小为0的空文件。

除了创建新文件系统,还有哪些方法可以解决inode不足?

可以删除大小为0的空文件或定期打包归档历史小文件。

创建文件系统时默认参数下的inode数量是多少?

默认参数下,创建的ext4文件系统有65536个inode。

🏷️

标签

➡️

继续阅读