我有一个包含大量小文件的文件系统。目前大约 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*,而且文件系统随着时间的推移会变得碎片化并且变慢。