btrfs-progs/Documentation/ch-fs-limits.rst

50 lines
2.1 KiB
ReStructuredText

maximum file name length
255
This limit is imposed by Linux VFS, the structures of BTRFS could store
larger file names.
maximum symlink target length
depends on the *nodesize* value, for 4KiB it's 3949 bytes, for larger nodesize
it's 4095 due to the system limit PATH_MAX
The symlink target may not be a valid path, i.e. the path name components
can exceed the limits (NAME_MAX), there's no content validation at ``symlink(3)``
creation.
maximum number of inodes
2\ :sup:`64` but depends on the available metadata space as the inodes are created
dynamically
Each subvolume is an independent namespace of inodes and thus their
numbers, so the limit is per subvolume, not for the whole filesystem.
inode numbers
minimum number: 256 (for subvolumes), regular files and directories: 257,
maximum number: (2\ :sup:`64` - 256)
The inode numbers that can be assigned to user created files are from
the whole 64bit space except first 256 and last 256 in that range that
are reserved for internal b-tree identifiers.
maximum file length
inherent limit of BTRFS is 2\ :sup:`64` (16 EiB) but the practical
limit of Linux VFS is 2\ :sup:`63` (8 EiB)
maximum number of subvolumes
the subvolume ids can go up to 2\ :sup:`48` but the number of actual subvolumes
depends on the available metadata space
The space consumed by all subvolume metadata includes bookkeeping of
shared extents can be large (MiB, GiB). The range is not the full 64bit
range because of qgroups that use the upper 16 bits for another
purposes.
maximum number of hardlinks of a file in a directory
65536 when the *extref* feature is turned on during mkfs (default), roughly
100 otherwise and depends on file name length that fits into one metadata node
minimum filesystem size
the minimal size of each device depends on the *mixed-bg* feature, without that
(the default) it's about 109MiB, with mixed-bg it's is 16MiB