我有一个带 ext4 fs 的 RHEL 9
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 1258291199 1258289152 600G 83 Linux
已要求它是 ext4,带有 Inodes,可容纳 100,000,000 个文件 +
我以为我可以运行 mkfs.ext4 -N 2000000000 /dev/sdb1
但是当我安装分区时获得足够多的索引节点
挂载 /dev/sdb1 /fileshare
/fileshare 显示为只有 92GB
当我运行 mkfs.ext4 /dev/sdb1 然后挂载它时, /fileshare 显示为 560gb,这就是我想要的,如何获得需要容纳大文件数(1 亿到 5 亿)但仍然有的 inode 计数560GB 磁盘大小?
答案1
为什么-N 2000000000
?你的问题表明你的目标是大约 1 亿个大关,而不是 20 亿个大关 - 你要求的索引节点比你需要的多 20 倍。解决这个问题,您可能会得到合理的结果。
然而,这里有一个关于文件大小的更大问题。虽然在一个最小 1kB/文件您只需要大约 125GB 的存储空间来保存这么多文件(包括 inode 的近似值,每 kB 4 倍),如果我们使用您的示例的 2x10^9 inode,那么这将是 2.25TB。至少。
答案2
您要求 20 亿个 inode,每个 inode 256 字节,即 476 GB inode。如果要求 5 亿,那么 inode 空间只有 120 GB 会好得多。您甚至可以缩小索引节点的大小-I 128
,但这有限制,请参阅mkfs.ext4
/手册mke2fs
页了解详细信息。
我只会使用该-i bytes-per-inode
选项,并相信您会获得良好的平衡。