18c2ecf20Sopenharmony_ci.. SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci
38c2ecf20Sopenharmony_ciBlocks
48c2ecf20Sopenharmony_ci------
58c2ecf20Sopenharmony_ci
68c2ecf20Sopenharmony_ciext4 allocates storage space in units of “blocks”. A block is a group of
78c2ecf20Sopenharmony_cisectors between 1KiB and 64KiB, and the number of sectors must be an
88c2ecf20Sopenharmony_ciintegral power of 2. Blocks are in turn grouped into larger units called
98c2ecf20Sopenharmony_ciblock groups. Block size is specified at mkfs time and typically is
108c2ecf20Sopenharmony_ci4KiB. You may experience mounting problems if block size is greater than
118c2ecf20Sopenharmony_cipage size (i.e. 64KiB blocks on a i386 which only has 4KiB memory
128c2ecf20Sopenharmony_cipages). By default a filesystem can contain 2^32 blocks; if the '64bit'
138c2ecf20Sopenharmony_cifeature is enabled, then a filesystem can have 2^64 blocks. The location
148c2ecf20Sopenharmony_ciof structures is stored in terms of the block number the structure lives
158c2ecf20Sopenharmony_ciin and not the absolute offset on disk.
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciFor 32-bit filesystems, limits are as follows:
188c2ecf20Sopenharmony_ci
198c2ecf20Sopenharmony_ci.. list-table::
208c2ecf20Sopenharmony_ci   :widths: 1 1 1 1 1
218c2ecf20Sopenharmony_ci   :header-rows: 1
228c2ecf20Sopenharmony_ci
238c2ecf20Sopenharmony_ci   * - Item
248c2ecf20Sopenharmony_ci     - 1KiB
258c2ecf20Sopenharmony_ci     - 2KiB
268c2ecf20Sopenharmony_ci     - 4KiB
278c2ecf20Sopenharmony_ci     - 64KiB
288c2ecf20Sopenharmony_ci   * - Blocks
298c2ecf20Sopenharmony_ci     - 2^32
308c2ecf20Sopenharmony_ci     - 2^32
318c2ecf20Sopenharmony_ci     - 2^32
328c2ecf20Sopenharmony_ci     - 2^32
338c2ecf20Sopenharmony_ci   * - Inodes
348c2ecf20Sopenharmony_ci     - 2^32
358c2ecf20Sopenharmony_ci     - 2^32
368c2ecf20Sopenharmony_ci     - 2^32
378c2ecf20Sopenharmony_ci     - 2^32
388c2ecf20Sopenharmony_ci   * - File System Size
398c2ecf20Sopenharmony_ci     - 4TiB
408c2ecf20Sopenharmony_ci     - 8TiB
418c2ecf20Sopenharmony_ci     - 16TiB
428c2ecf20Sopenharmony_ci     - 256PiB
438c2ecf20Sopenharmony_ci   * - Blocks Per Block Group
448c2ecf20Sopenharmony_ci     - 8,192
458c2ecf20Sopenharmony_ci     - 16,384
468c2ecf20Sopenharmony_ci     - 32,768
478c2ecf20Sopenharmony_ci     - 524,288
488c2ecf20Sopenharmony_ci   * - Inodes Per Block Group
498c2ecf20Sopenharmony_ci     - 8,192
508c2ecf20Sopenharmony_ci     - 16,384
518c2ecf20Sopenharmony_ci     - 32,768
528c2ecf20Sopenharmony_ci     - 524,288
538c2ecf20Sopenharmony_ci   * - Block Group Size
548c2ecf20Sopenharmony_ci     - 8MiB
558c2ecf20Sopenharmony_ci     - 32MiB
568c2ecf20Sopenharmony_ci     - 128MiB
578c2ecf20Sopenharmony_ci     - 32GiB
588c2ecf20Sopenharmony_ci   * - Blocks Per File, Extents
598c2ecf20Sopenharmony_ci     - 2^32
608c2ecf20Sopenharmony_ci     - 2^32
618c2ecf20Sopenharmony_ci     - 2^32
628c2ecf20Sopenharmony_ci     - 2^32
638c2ecf20Sopenharmony_ci   * - Blocks Per File, Block Maps
648c2ecf20Sopenharmony_ci     - 16,843,020
658c2ecf20Sopenharmony_ci     - 134,480,396
668c2ecf20Sopenharmony_ci     - 1,074,791,436
678c2ecf20Sopenharmony_ci     - 4,398,314,962,956 (really 2^32 due to field size limitations)
688c2ecf20Sopenharmony_ci   * - File Size, Extents
698c2ecf20Sopenharmony_ci     - 4TiB
708c2ecf20Sopenharmony_ci     - 8TiB
718c2ecf20Sopenharmony_ci     - 16TiB
728c2ecf20Sopenharmony_ci     - 256TiB
738c2ecf20Sopenharmony_ci   * - File Size, Block Maps
748c2ecf20Sopenharmony_ci     - 16GiB
758c2ecf20Sopenharmony_ci     - 256GiB
768c2ecf20Sopenharmony_ci     - 4TiB
778c2ecf20Sopenharmony_ci     - 256TiB
788c2ecf20Sopenharmony_ci
798c2ecf20Sopenharmony_ciFor 64-bit filesystems, limits are as follows:
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci.. list-table::
828c2ecf20Sopenharmony_ci   :widths: 1 1 1 1 1
838c2ecf20Sopenharmony_ci   :header-rows: 1
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci   * - Item
868c2ecf20Sopenharmony_ci     - 1KiB
878c2ecf20Sopenharmony_ci     - 2KiB
888c2ecf20Sopenharmony_ci     - 4KiB
898c2ecf20Sopenharmony_ci     - 64KiB
908c2ecf20Sopenharmony_ci   * - Blocks
918c2ecf20Sopenharmony_ci     - 2^64
928c2ecf20Sopenharmony_ci     - 2^64
938c2ecf20Sopenharmony_ci     - 2^64
948c2ecf20Sopenharmony_ci     - 2^64
958c2ecf20Sopenharmony_ci   * - Inodes
968c2ecf20Sopenharmony_ci     - 2^32
978c2ecf20Sopenharmony_ci     - 2^32
988c2ecf20Sopenharmony_ci     - 2^32
998c2ecf20Sopenharmony_ci     - 2^32
1008c2ecf20Sopenharmony_ci   * - File System Size
1018c2ecf20Sopenharmony_ci     - 16ZiB
1028c2ecf20Sopenharmony_ci     - 32ZiB
1038c2ecf20Sopenharmony_ci     - 64ZiB
1048c2ecf20Sopenharmony_ci     - 1YiB
1058c2ecf20Sopenharmony_ci   * - Blocks Per Block Group
1068c2ecf20Sopenharmony_ci     - 8,192
1078c2ecf20Sopenharmony_ci     - 16,384
1088c2ecf20Sopenharmony_ci     - 32,768
1098c2ecf20Sopenharmony_ci     - 524,288
1108c2ecf20Sopenharmony_ci   * - Inodes Per Block Group
1118c2ecf20Sopenharmony_ci     - 8,192
1128c2ecf20Sopenharmony_ci     - 16,384
1138c2ecf20Sopenharmony_ci     - 32,768
1148c2ecf20Sopenharmony_ci     - 524,288
1158c2ecf20Sopenharmony_ci   * - Block Group Size
1168c2ecf20Sopenharmony_ci     - 8MiB
1178c2ecf20Sopenharmony_ci     - 32MiB
1188c2ecf20Sopenharmony_ci     - 128MiB
1198c2ecf20Sopenharmony_ci     - 32GiB
1208c2ecf20Sopenharmony_ci   * - Blocks Per File, Extents
1218c2ecf20Sopenharmony_ci     - 2^32
1228c2ecf20Sopenharmony_ci     - 2^32
1238c2ecf20Sopenharmony_ci     - 2^32
1248c2ecf20Sopenharmony_ci     - 2^32
1258c2ecf20Sopenharmony_ci   * - Blocks Per File, Block Maps
1268c2ecf20Sopenharmony_ci     - 16,843,020
1278c2ecf20Sopenharmony_ci     - 134,480,396
1288c2ecf20Sopenharmony_ci     - 1,074,791,436
1298c2ecf20Sopenharmony_ci     - 4,398,314,962,956 (really 2^32 due to field size limitations)
1308c2ecf20Sopenharmony_ci   * - File Size, Extents
1318c2ecf20Sopenharmony_ci     - 4TiB
1328c2ecf20Sopenharmony_ci     - 8TiB
1338c2ecf20Sopenharmony_ci     - 16TiB
1348c2ecf20Sopenharmony_ci     - 256TiB
1358c2ecf20Sopenharmony_ci   * - File Size, Block Maps
1368c2ecf20Sopenharmony_ci     - 16GiB
1378c2ecf20Sopenharmony_ci     - 256GiB
1388c2ecf20Sopenharmony_ci     - 4TiB
1398c2ecf20Sopenharmony_ci     - 256TiB
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ciNote: Files not using extents (i.e. files using block maps) must be
1428c2ecf20Sopenharmony_ciplaced within the first 2^32 blocks of a filesystem. Files with extents
1438c2ecf20Sopenharmony_cimust be placed within the first 2^48 blocks of a filesystem. It's not
1448c2ecf20Sopenharmony_ciclear what happens with larger filesystems.
145