xref: /OK3568_Linux_fs/kernel/Documentation/filesystems/ext4/blocks.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunBlocks
4*4882a593Smuzhiyun------
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunext4 allocates storage space in units of “blocks”. A block is a group of
7*4882a593Smuzhiyunsectors between 1KiB and 64KiB, and the number of sectors must be an
8*4882a593Smuzhiyunintegral power of 2. Blocks are in turn grouped into larger units called
9*4882a593Smuzhiyunblock groups. Block size is specified at mkfs time and typically is
10*4882a593Smuzhiyun4KiB. You may experience mounting problems if block size is greater than
11*4882a593Smuzhiyunpage size (i.e. 64KiB blocks on a i386 which only has 4KiB memory
12*4882a593Smuzhiyunpages). By default a filesystem can contain 2^32 blocks; if the '64bit'
13*4882a593Smuzhiyunfeature is enabled, then a filesystem can have 2^64 blocks. The location
14*4882a593Smuzhiyunof structures is stored in terms of the block number the structure lives
15*4882a593Smuzhiyunin and not the absolute offset on disk.
16*4882a593Smuzhiyun
17*4882a593SmuzhiyunFor 32-bit filesystems, limits are as follows:
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun.. list-table::
20*4882a593Smuzhiyun   :widths: 1 1 1 1 1
21*4882a593Smuzhiyun   :header-rows: 1
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun   * - Item
24*4882a593Smuzhiyun     - 1KiB
25*4882a593Smuzhiyun     - 2KiB
26*4882a593Smuzhiyun     - 4KiB
27*4882a593Smuzhiyun     - 64KiB
28*4882a593Smuzhiyun   * - Blocks
29*4882a593Smuzhiyun     - 2^32
30*4882a593Smuzhiyun     - 2^32
31*4882a593Smuzhiyun     - 2^32
32*4882a593Smuzhiyun     - 2^32
33*4882a593Smuzhiyun   * - Inodes
34*4882a593Smuzhiyun     - 2^32
35*4882a593Smuzhiyun     - 2^32
36*4882a593Smuzhiyun     - 2^32
37*4882a593Smuzhiyun     - 2^32
38*4882a593Smuzhiyun   * - File System Size
39*4882a593Smuzhiyun     - 4TiB
40*4882a593Smuzhiyun     - 8TiB
41*4882a593Smuzhiyun     - 16TiB
42*4882a593Smuzhiyun     - 256PiB
43*4882a593Smuzhiyun   * - Blocks Per Block Group
44*4882a593Smuzhiyun     - 8,192
45*4882a593Smuzhiyun     - 16,384
46*4882a593Smuzhiyun     - 32,768
47*4882a593Smuzhiyun     - 524,288
48*4882a593Smuzhiyun   * - Inodes Per Block Group
49*4882a593Smuzhiyun     - 8,192
50*4882a593Smuzhiyun     - 16,384
51*4882a593Smuzhiyun     - 32,768
52*4882a593Smuzhiyun     - 524,288
53*4882a593Smuzhiyun   * - Block Group Size
54*4882a593Smuzhiyun     - 8MiB
55*4882a593Smuzhiyun     - 32MiB
56*4882a593Smuzhiyun     - 128MiB
57*4882a593Smuzhiyun     - 32GiB
58*4882a593Smuzhiyun   * - Blocks Per File, Extents
59*4882a593Smuzhiyun     - 2^32
60*4882a593Smuzhiyun     - 2^32
61*4882a593Smuzhiyun     - 2^32
62*4882a593Smuzhiyun     - 2^32
63*4882a593Smuzhiyun   * - Blocks Per File, Block Maps
64*4882a593Smuzhiyun     - 16,843,020
65*4882a593Smuzhiyun     - 134,480,396
66*4882a593Smuzhiyun     - 1,074,791,436
67*4882a593Smuzhiyun     - 4,398,314,962,956 (really 2^32 due to field size limitations)
68*4882a593Smuzhiyun   * - File Size, Extents
69*4882a593Smuzhiyun     - 4TiB
70*4882a593Smuzhiyun     - 8TiB
71*4882a593Smuzhiyun     - 16TiB
72*4882a593Smuzhiyun     - 256TiB
73*4882a593Smuzhiyun   * - File Size, Block Maps
74*4882a593Smuzhiyun     - 16GiB
75*4882a593Smuzhiyun     - 256GiB
76*4882a593Smuzhiyun     - 4TiB
77*4882a593Smuzhiyun     - 256TiB
78*4882a593Smuzhiyun
79*4882a593SmuzhiyunFor 64-bit filesystems, limits are as follows:
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun.. list-table::
82*4882a593Smuzhiyun   :widths: 1 1 1 1 1
83*4882a593Smuzhiyun   :header-rows: 1
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun   * - Item
86*4882a593Smuzhiyun     - 1KiB
87*4882a593Smuzhiyun     - 2KiB
88*4882a593Smuzhiyun     - 4KiB
89*4882a593Smuzhiyun     - 64KiB
90*4882a593Smuzhiyun   * - Blocks
91*4882a593Smuzhiyun     - 2^64
92*4882a593Smuzhiyun     - 2^64
93*4882a593Smuzhiyun     - 2^64
94*4882a593Smuzhiyun     - 2^64
95*4882a593Smuzhiyun   * - Inodes
96*4882a593Smuzhiyun     - 2^32
97*4882a593Smuzhiyun     - 2^32
98*4882a593Smuzhiyun     - 2^32
99*4882a593Smuzhiyun     - 2^32
100*4882a593Smuzhiyun   * - File System Size
101*4882a593Smuzhiyun     - 16ZiB
102*4882a593Smuzhiyun     - 32ZiB
103*4882a593Smuzhiyun     - 64ZiB
104*4882a593Smuzhiyun     - 1YiB
105*4882a593Smuzhiyun   * - Blocks Per Block Group
106*4882a593Smuzhiyun     - 8,192
107*4882a593Smuzhiyun     - 16,384
108*4882a593Smuzhiyun     - 32,768
109*4882a593Smuzhiyun     - 524,288
110*4882a593Smuzhiyun   * - Inodes Per Block Group
111*4882a593Smuzhiyun     - 8,192
112*4882a593Smuzhiyun     - 16,384
113*4882a593Smuzhiyun     - 32,768
114*4882a593Smuzhiyun     - 524,288
115*4882a593Smuzhiyun   * - Block Group Size
116*4882a593Smuzhiyun     - 8MiB
117*4882a593Smuzhiyun     - 32MiB
118*4882a593Smuzhiyun     - 128MiB
119*4882a593Smuzhiyun     - 32GiB
120*4882a593Smuzhiyun   * - Blocks Per File, Extents
121*4882a593Smuzhiyun     - 2^32
122*4882a593Smuzhiyun     - 2^32
123*4882a593Smuzhiyun     - 2^32
124*4882a593Smuzhiyun     - 2^32
125*4882a593Smuzhiyun   * - Blocks Per File, Block Maps
126*4882a593Smuzhiyun     - 16,843,020
127*4882a593Smuzhiyun     - 134,480,396
128*4882a593Smuzhiyun     - 1,074,791,436
129*4882a593Smuzhiyun     - 4,398,314,962,956 (really 2^32 due to field size limitations)
130*4882a593Smuzhiyun   * - File Size, Extents
131*4882a593Smuzhiyun     - 4TiB
132*4882a593Smuzhiyun     - 8TiB
133*4882a593Smuzhiyun     - 16TiB
134*4882a593Smuzhiyun     - 256TiB
135*4882a593Smuzhiyun   * - File Size, Block Maps
136*4882a593Smuzhiyun     - 16GiB
137*4882a593Smuzhiyun     - 256GiB
138*4882a593Smuzhiyun     - 4TiB
139*4882a593Smuzhiyun     - 256TiB
140*4882a593Smuzhiyun
141*4882a593SmuzhiyunNote: Files not using extents (i.e. files using block maps) must be
142*4882a593Smuzhiyunplaced within the first 2^32 blocks of a filesystem. Files with extents
143*4882a593Smuzhiyunmust be placed within the first 2^48 blocks of a filesystem. It's not
144*4882a593Smuzhiyunclear what happens with larger filesystems.
145