块¶
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 个块内。对于更大的文件系统会发生什么尚不清楚。