如何计算 Linux 文件系统的适当 inode/block 大小

如何计算 Linux 文件系统的适当 inode/block 大小

我有一个旧的 reiser 文件系统,我将把它转换为 Ext3。我遇到的问题是确定此分区的正确块大小和 inode 大小。

该分区大小为 44 GB,必须容纳 3,000,000 多个大小在 1 kb 到 10 kb 之间的文件,我如何找出 inode 和块大小的最佳比例?

下面的方法我试过,似乎没问题,但是复制文件的速度非常慢。

mkfs.ext3 \
 -t ext3 \
 -c \
 -c \
 -b 1024 \
 -i 4096 \
 -I 128 \
 -v \
 -j \
 -O sparse_super,filetype,has_journal\
  /dev/sdb1

谢谢。

答案1

对于如此有限的问题,没有“正确”的答案。如果您要设置台式机或笔记本电脑,请执行以下操作:

mkfs.ext3 /dev/sda1

该程序可以比没有经验的人更好地选择。如果你要存储一个大型网站,扩展由于可能存在大量的单个小文件,因此可能需要高达 25% 的 inode。

但你实际上只是告诉mkfs程序“最多 25% 的 inode”。大多数文件系统创建设置都用于专门的应用程序,例如 RAID 条带化,其中文件系统的几何形状必须进行调整,否则速度会非常慢。

我知道每个人都有自己喜欢的文件系统设置。我还没有找到任何人能够证明在 40 GB 的台式机或笔记本电脑分区上偏离默认值的实用性。

扩展并不是所有东西的最佳文件系统!我的笔记本电脑使用三种不同的分区格式类型,因为某些分区包含许多小的、单独的文件。其他分区则包含数量少得多的较大文件(适合 ext3 系统),例如 /home 分区。

/usr可以有 500,000 个独立文件,扩展笨重,但是還是苍蝇。另一件事是访问控制列表. 您必须告知mkfs.ext3您将使用访问控制列表,如果您要使用它们。访问控制列表是对权限的微调,通常在单用户系统上并不重要。但是如果你有一组 20 个普通用户,并且你想对其中一些用户进行不同的访问控制,你必须使用访问控制列表

我个人喜欢軟體系对于通用文件系统,尽管它不能与 SELinux 一起开箱即用。但它是最复杂和最高效的文件系统。它用于多个品牌的 HPC。如果您愿意,可以谷歌搜索它。扩展浪费了 8% 的分区空间。这太离谱了。

ext4更好。我不会给你写命令行。你必须确定分区的用途,并据此设计文件系统。扩展很可靠,但坦克也一样。但这并不意味着你想开着它逛街。

希望这会有帮助。

答案2

每个文件都需要一个 inode,inode 的大小将定义在需要另一个 inode 和足够的块来处理文件之前它可以达到的直接块的数量。

因此,就您而言,最小 inode 数量将为 3.000.000+。如果您使用默认值,您将获得 12 个直接块。因此,使用 1kB 的块大小,您将获得所需的数据。

显然,您可以减少 inode 大小并增加块大小以增加 inode 数量。这将减少可用空间,但同一文件系统中可以容纳更多文件。

相关内容