创建具有 2^32-1 个 inode 的 ext4 文件系统有什么缺点吗?
我有一个 1tb 驱动器,我想在上面存储 8 亿到 15 亿个小文件。似乎最大值是 40 亿,所以我想知道是否可以在创建 fs 时将其设置为最大值,或者我应该找到其他解决方案。
创建具有 2^32-1 个 inode 的 ext4 文件系统有什么缺点吗?
我有一个 1tb 驱动器,我想在上面存储 8 亿到 15 亿个小文件。似乎最大值是 40 亿,所以我想知道是否可以在创建 fs 时将其设置为最大值,或者我应该找到其他解决方案。
根据Stack Overflow 和Unix & Linux(见下文)上的类似问题,将 ext4 文件系统上的 inode 数量最大化是个坏主意。
最好使用另一个文件系统或将磁盘拆分为多个文件系统。
总结一下:
一个 inode 占用 256 个字节。它可以配置为 128,但即使:
创建 ext4 文件系统时,您可以指定 如下定义的使用类型
/etc/mke2fs.conf
:为了存储许多小文件,
small
可以使用该类型:这意味着:对于每 4096 字节的磁盘空间(文件系统大小),将保留一个 inode,每个 inode 的大小为 128 字节。因此,该命令
mkfs.ext4 -T small /dev/something
将在占用 31 GB 的 1TB 文件系统上创建 2.44 亿个 inode。这 2.44 亿个文件将至少占用 250 GB(每个文件至少 1024 字节)。要以小占用空间(128 字节)保存 10 亿个 inode,仅 inode 就需要 128 GB。如果使用尽可能小的块大小(根据 mk2efs 的手册页为 1024),那么这 10 亿个文件将至少占用 1TB(但请记住,由于 inode 有 128 GB,因此您只剩下 872 GB)。
ext4 的最小块大小为 1024 字节。因此,您不能存储超过 1 TB / 1024 = 10 亿个文件,拥有更多 inode 毫无意义。
作为一般经验法则,
inode_ratio
不应小于 ,blocksize
因为您不能(轻松)在一个块中存储多个文件。如果文件系统以这种方式配置,则可以将文件的前 60 个字节直接存储在 inode 中。在这种情况下,文件不会占用(常规)块;在此处阅读此类内联数据,但还要考虑inode 大小。
从对U&L 问题的评论:
参考: