Linux - 救命,我的 inode 用完了!

Linux - 救命,我的 inode 用完了!

我有一个包含大量小文件的文件系统。目前大约 80% 的 inode 已被使用(我已使用 进行检查df -i),但只有 60% 的磁盘空间已被使用。我如何“增加” inode 的数量?如果只是磁盘空间,我知道我可以增加磁盘的大小(此磁盘位于 LVM 上)。如果我增加磁盘的大小,是否会让我拥有更多 inode?

如果有帮助的话,我愿意扩大该磁盘所在的文件系统。

答案1

人mke2fs

您将看到 inode 数量为 -N

因此,您可以在格式化新分区时指定它。目前没什么帮助,是吧?

tune2fs 用于调整文件系统,但似乎没有办法添加更多 inode。

但也许 ext3 或 4 会这样做,而其他人知道……?

所以现在您有一个选择:备份、重新格式化分区、恢复。

答案2

回答原始问题,尽管对于提问者来说可能已经晚了 - 是的,在 LVM2 上增加 EXT2/3 也会增加 inode 限制。

刚刚有一个 1G 大小的分区,其 inode 限制为 65k。之后

lvextend -L+1G /dev/vg/var
umount /var
resize2fs /dev/vg/var
mount /var

...我的 inode 限制现在是 128k。

答案3

如果您知道小文件会占用您的磁盘空间,那么您应该使用具有动态 inode 分配的 FS,例如 ReiserFS 或任何新的现代 FS(XFS、JFS),而不是 EXT2/3/4(我假设您正在使用,您没有这么说)。

在您的情况下,文件系统迁移可能是一个不错的选择。

答案4

Ext4 也面临同样的问题,如果您创建一个小分区并且拥有大量小文件,那么您将耗尽 inode,而且如果您有flex_bg功能,则无法用来tune2fs增加 inode。

就我个人而言,我会选择 ext4 而不是任何版本的 rieserfs,格式化时只需执行以下操作:

mkfs.ext4 -I 512 /dev/foo
tune2fs -i0 -c0 -o journal_data_writeback /dev/foo

通过这种方式格式化,您将在 512M 的启动分区上获得 33160 个 inode。

作为一个使用 reiserfs 多年的人,我认为它的内核支持不如 ext*,而且文件系统随着时间的推移会变得碎片化并且变慢。

相关内容