我有一个包含很多小文件的文件系统。目前使用了大约 80% 的 inode(我检查了df -i
),但是只使用了 60% 的磁盘空间。我怎样才能“增加”inode 的数量?如果只是磁盘空间,我知道我可以增加磁盘的大小(这个磁盘在 LVM 上)。如果我增加磁盘的大小,那会让我有更多的 inode 吗?
如果有帮助的话,我愿意扩大这个磁盘所在的文件系统。
我有一个包含很多小文件的文件系统。目前使用了大约 80% 的 inode(我检查了df -i
),但是只使用了 60% 的磁盘空间。我怎样才能“增加”inode 的数量?如果只是磁盘空间,我知道我可以增加磁盘的大小(这个磁盘在 LVM 上)。如果我增加磁盘的大小,那会让我有更多的 inode 吗?
如果有帮助的话,我愿意扩大这个磁盘所在的文件系统。
要回答最初的问题,即使提问者可能迟到了 - 是的,增加 LVM2 上的 EXT2/3 也会增加 inode 限制。
刚刚有一个 1G 大小的分区,有 65k inode 限制。后
...我的 inode 限制现在是 128k。
男人 mke2fs
您将看到 -N 表示 inode 的数量
因此,您可以在格式化新分区时指定它。现在没那么有用吧?
调整文件系统的 tune2fs 似乎没有办法添加更多的 inode。
但也许 ext3 或 4 会这样做,而其他人知道....?
所以现在你有一个选择:备份、重新格式化分区、恢复。
如果您知道小文件会占用您的磁盘空间,那么您应该使用具有动态 inode 分配的 FS,例如 ReiserFS 或任何新的现代 FS(XFS、JFS)而不是 EXT2/3/4(我假设您正在使用,你没这么说)。
在您的情况下,文件系统迁移可能是一个不错的选择。
作为权宜之计,挂载一个新的文件系统,然后 cp/rm/ln-s 那里的一些 fs 层次结构。现在你有一些备用的 inode 了!你不能在两个 fses 之间 mv 文件,所以要小心破坏需要这样做的东西,但对于许多应用程序来说,这可能是透明的。
然后按照 Paul 的建议制作一个新的 fs,然后迁移到它上面。
Ext4 也有同样的问题,如果你创建一个小分区并且有大量的小文件,你会用完 inode,如果你有
flex_bg
in 功能,你就不能用它tune2fs
来增加 inode。就我个人而言,我会在任何版本的 rieserfs 上使用 ext4,格式化时只需执行以下操作:
以这种方式格式化将在 512M 引导分区上为您提供 33160 个 inode。
作为一个使用 reiserfs 多年的人,我这么说,内核支持不如 ext*,而且文件系统随着时间的推移变得碎片化并且变慢。
选择 resiserfs 或任何其他没有 inode 限制的 fs。特别是关于日志文件,您可能可以将大量未使用的小文件打包到一个更大的 tar 文件中,以释放大量 inode =)