Block suballocation is a feature of some computer file systems which allows large blocks or allocation units to be used while making efficient use of empty space at the end of large files, space which would otherwise be lost for other use to internal fragmentation.
File systems have traditionally divided the disk into equally sized blocks to simplify their design and limit the worst-case fragmentation.
UFS and other derived UNIX file systems support fragments [citation needed] which greatly mitigate this effect.
While this may, at first, seem like it would significantly increase file system fragmentation, the negative effect can be mitigated with readahead features on modern operating systems – when dealing with short files, several tails may be close enough to each another to be read together, and thus a disk seek is not introduced.
[2] This not only translates into conservation of disk space, but may also introduce performance increases, as due to higher locality of reference, less data has to be read, also translating into higher page cache efficiency.