Mar*_*cki 5 linux filesystems partition ext4
问题:如何计算为文件系统提供预定义空间所需的 ext4 分区的大小?
示例:我想要一个具有 100 GB 空间的文件系统(根据df
),并且想知道在 GParted 中为我的新 ext4 分区提供多少 MiB 空间。
背景:我注意到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%
Run Code Online (Sandbox Code Playgroud)
使用默认的 ext4 配置(GParted、LinuxMint 和可能的其他配置),块与 inode 的比率为 4:1,块大小为 4096,而 inode 大小为 256,因此数据与 inode 的比率为 64:1(来源:)tune2fs -l
。因此,inode 表仅贡献 1.5625% 的 ext4 文件系统开销。
剩余的开销在哪里发生,我该如何计算?我已经对各种 ext4 分区大小(10,000 到 380,000 MiB)进行了测试,开销在 ~1.8% 到 ~2.3% 之间波动,但似乎随着分区大小的增加而减少(见图)。
旁注 #1:我的问题与 KiB(2¹?字节)与 KB(10³ 字节)、MiB(2²?字节)与 MB(10?字节)、GiB(2³?字节)与 GB 无关(10?字节)等等。
旁注#2:这也不是关于保留块(默认为 5%),如df
.
那么,可用的最大容量可以估计为[Partition Size] * (1 - inode_size / inode_ratio - reserved-blocks-percentage)
。因此,要获得特定容量,请计算[Partition Size] = [Capacity] / (1 - inode_size / inode_ratio - reserved-blocks-percentage)
..请参阅 /etc/mke2fs.conf 了解常用值。