![如何计算为文件系统提供预定义可用空间量所需的 ext4 分区的大小?](https://linux22.com/image/12348/%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E4%B8%BA%E6%96%87%E4%BB%B6%E7%B3%BB%E7%BB%9F%E6%8F%90%E4%BE%9B%E9%A2%84%E5%AE%9A%E4%B9%89%E5%8F%AF%E7%94%A8%E7%A9%BA%E9%97%B4%E9%87%8F%E6%89%80%E9%9C%80%E7%9A%84%20ext4%20%E5%88%86%E5%8C%BA%E7%9A%84%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
问题:如何计算为文件系统提供预定义可用空间量所需的 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 了解常用值。