问题:如何计算为文件系统提供预定义可用空间量所需的 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% 之间波动,但似乎随着分区大小的增加而减少(见图)。
旁注#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 了解常用值。