An extent file system (EFS) is a method of managing files and memory on a computer hard drive or other physical storage device that uses a series of contiguous areas of memory to store information instead of using smaller, more scattered units known as blocks. Some file systems allocate the space required for files in small units known as blocks, which can lead to a single file of average length being physically scattered throughout a disk, reducing the speed and efficiency of reading from that file. In the case of an extent file system, all of the smaller blocks are bound together into a larger structure known as an extent, meaning that larger files can be stored in a single contiguous location on the physical disk, increasing the speed of the drive when reading from that file. Although many operating systems support the use of extents, the term originally was applied to the specific early extent file system of the now discontinued Unix-like operating system known as IRIX®, developed by Silicon Graphics®.
The individual bits and bytes on a physical disk, such as a hard disk or a compact disk (CD), are divided into groups by the hardware, operating system and file system. These are known as logical groupings, because they do not necessarily have physical boundaries, only those that are imposed by the system. For several file systems, the logical grouping known as blocks are used as the basic amount of space that can be allocated to store a file. A block can be set to any size but generally is very small, sometimes consisting of as little as 128 bytes of space.
An extent file system groups blocks together on a disk if they are contiguous, meaning they are all physically next to one another on a disk. This collection of blocks is known as an extent. In an extent file system, when a file is written to a physical disk, an extent is allocated instead of single blocks. The advantage of using extents instead of blocks is that large files require less overhead to create and maintain, and the risk of fragmentation is reduced greatly, though not necessarily eliminated.
File fragmentation occurs when a file requires more space than any available block or extent can provide, meaning the file must be broken up and occupy two or more physically different spaces on a disk. With small blocks, large files can occupy hundreds or thousands of blocks across an entire disk, reducing the speed at which the file can be accessed. An extent file system does allow for a large file to be broken into different extents, known as indirect extents, although the number of extents that are required usually is less than if the file were allocated using smaller blocks.
In addition to reducing the amount of overhead needed for large files, because information about only a single extent needs to be stored in the file system instead of multiple pointers to different blocks, using extents also can extend the life of some storage hardware. This can occur because contiguous files require less movement from the read head mechanism of the disk drive to access information. An extent file system also allows the creation of single files that can be terabytes or more in length, because, in some cases, an extent can theoretically occupy all available physical space without the need to create extensive tables or other overhead for management.