ext4 以“块”为单位分配存储空间。一个块是 1KiB 到 64KiB 之间的一组扇区,并且扇区数量必须是 2 的整数次幂。块又被分组为更大的单元,称为块组。块大小在 mkfs 时指定,通常为 4KiB。如果块大小大于页大小(例如在只有 4KiB 内存页的 i386 上使用 64KiB 块),您可能会遇到挂载问题。默认情况下,文件系统可以包含 2^32 个块;如果启用了“64bit”特性,那么文件系统可以拥有 2^64 个块。结构的 konum 以其所在块号表示,而非磁盘上的绝对偏移量。

对于 32 位文件系统,限制如下:

项目

1KiB

2KiB

4KiB

64KiB

块数

2^32

2^32

2^32

2^32

inode 数

2^32

2^32

2^32

2^32

文件系统大小

4TiB

8TiB

16TiB

256TiB

每块组块数

8,192

16,384

32,768

524,288

每块组inode数

8,192

16,384

32,768

524,288

块组大小

8MiB

32MiB

128MiB

32GiB

每个文件块数,Extents

2^32

2^32

2^32

2^32

每个文件块数,块映射

16,843,020

134,480,396

1,074,791,436

4,398,314,962,956 (由于字段大小限制,实际为 2^32)

文件大小,Extents

4TiB

8TiB

16TiB

256TiB

文件大小,块映射

16GiB

256GiB

4TiB

256TiB

对于 64 位文件系统,限制如下:

项目

1KiB

2KiB

4KiB

64KiB

块数

2^64

2^64

2^64

2^64

inode 数

2^32

2^32

2^32

2^32

文件系统大小

16ZiB

32ZiB

64ZiB

1YiB

每块组块数

8,192

16,384

32,768

524,288

每块组inode数

8,192

16,384

32,768

524,288

块组大小

8MiB

32MiB

128MiB

32GiB

每个文件块数,Extents

2^32

2^32

2^32

2^32

每个文件块数,块映射

16,843,020

134,480,396

1,074,791,436

4,398,314,962,956 (由于字段大小限制,实际为 2^32)

文件大小,Extents

4TiB

8TiB

16TiB

256TiB

文件大小,块映射

16GiB

256GiB

4TiB

256TiB

注意:不使用 extents 的文件(即使用块映射的文件)必须放置在文件系统的前 2^32 个块内。使用 extents 的文件必须放置在文件系统的前 2^48 个块内。对于更大的文件系统会发生什么尚不清楚。