如何计算为文件系统提供预定义可用空间量所需的 ext4 分区的大小?

如何计算为文件系统提供预定义可用空间量所需的 ext4 分区的大小?

问题:如何计算为文件系统提供预定义可用空间量所需的 ext4 分区的大小?

示例:我想要一个具有 100 GB 空间的文件系统(根据df),并且想知道需要在 MiB 中为 GParted 中的新 ext4 分区提供多少空间。

背景:我注意到df(1K 块等于 1024 字节)显示的文件系统大小与lsblk -b(1 大小单位等于 1 字节)不同。我明白这是因为lsblk显示了分区df显示的大小文件系统(实际可用于文件的空间)。

例子:

$ df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda10      90187896   57032  85506480   1% /home/user

$ lsblk -b
NAME  MAJ:MIN RM        SIZE RO TYPE MOUNTPOINT
sda10   8:10   0 94371840000  0 part /home/user

df-calculation: 90187896*1024 = 92352405500 bytes
lsblk:                          94371840000 bytes
overhead:                       1 - 92352405500/94371840000 ~ 2.14%

使用默认的 ext4 配置(GParted、LinuxMint 以及可能的其他配置),块与 inode 的比率为 4:1,块大小为 4096,而 inode 大小为 256,因此数据与 inode 的比率为 64:1(来源:tune2fs -l)。因此,inode 表仅占 ext4 文件系统开销的 1.5625%。

剩余的开销发生在哪里以及如何计算?我对各种 ext4 分区大小(10,000 到 380,000 MiB)进行了测试,开销在 ~1.8 和 ~2.3% 之间波动,但似乎随着分区大小的增加而减少(见图)。

文件系统开销 [%] 超过分区大小 [MiB]

旁注#1:我的问题与 KiB(21⁰ 字节)与 KB(103 字节)、MiB(22⁰ 字节)与 MB(10⁶ 字节)、GiB(23⁰ 字节)与 GB(10⁹ 字节)等无关。

旁注#2:这也与保留块(默认为 5%)无关,如 中所示df

答案1

嗯,可用的最大容量可以估计为[Partition Size] * (1 - inode_size / inode_ratio - reserved-blocks-percentage).因此,要获得特定容量,请计算[Partition Size] = [Capacity] / (1 - inode_size / inode_ratio - reserved-blocks-percentage)..请参阅 /etc/mke2fs.conf 了解常用值。

相关内容