Extent (file systems)
An extent is a contiguous area of storage reserved for a file in a file system, represented as a range. A file can consist of zero or more extents; one file fragment requires one extent. The direct benefit is in storing each range compactly as two numbers, instead of canonically storing every block number in the range.[1]
Extent-based file systems can also eliminate most of the metadata overhead of large files that would traditionally be taken up by the block-allocation tree. Because the savings are small compared to the amount of stored data (for all file sizes in general) but make up a large portion of the metadata (for large files), the benefits in storage efficiency and performance are slight,[2] whereas the reduction in metadata is significant and reduces exposure to filesystem corruption as one bad sector in the block-allocation tree causes much greater data loss than one bad sector in stored data.
In order to resist fragmentation, several extent-based file systems do allocate-on-flush. Many modern fault-tolerant file systems also do copy-on-write, although that increases fragmentation. As a similar design, the CP/M file system uses extents as well, but those do not correspond to the definition given above. CP/M's extents appear contiguously as a single block in the combined directory/allocation table, and they do not necessarily correspond to a contiguous data area on disk.
Adoption
The following systems support extents:
- ASM – Automatic Storage Management – Oracle's database-oriented filesystem
- BFS – BeOS, Zeta and Haiku operating systems
- Btrfs – GPL'd extent-based file storage for Linux
- Ext4 – Linux filesystem (when the configuration enables extents – the default in Linux since version 2.6.23)
- Files-11 – Digital Equipment Corporation (subsequently Hewlett-Packard) OpenVMS filesystem.
- HFS and HFS Plus – Hierarchical File System – Apple Macintosh filesystems
- High Performance File System (HPFS) – on OS/2 and eComStation
- IceFS – IceFileSystem – optional file system for MorphOS
- JFS – Journaled File System – used by AIX, OS/2/eComStation and Linux operating systems
- Microsoft SQL Server – versions 2000–2008 support extents of up to 64 KB[3]
- Multi-Programming Executive – a filesystem by Hewlett-Packard
- NTFS – Microsoft's latest-generation file system
- OCFS2 – Oracle Cluster File System – a shared-disk file system for Linux
- Reiser4 – Linux filesystem (in "extents" mode)
- SINTRAN III – file system used by early computer company Norsk Data
- UDF – Universal Disk Format – standard for optical media
- VERITAS File System – enabled via the pre-allocation API and CLI
- XFS – SGI's second-generation file system
See also
References
- ↑ "Understanding Ext4 (part1): Extents". 2010-12-20. Retrieved 2015-02-02.
What's really a departure for EXT4 however, is the use of extents rather than the old, inefficient indirect block mechanism used by earlier Unix file systems (e.g. EXT2/EXT3) for tracking file content. Extents are similar to cluster runs in the NTFS file system; essentially, they specify an initial block address and the number of blocks that make up the extent. A file that is fragmented will have multiple extents, but EXT4 tries very hard to keep files contiguous.
- ↑ "Ext4 Disk Layout". 2015-01-26. Retrieved 2015-02-02.
If flex_bg is enabled, it is possible to allocate very large files with a single extent, at a considerable reduction in metadata block use, and some improvement in disk efficiency.
- ↑ "Understanding Pages and Extents". msdn.microsoft.com. Retrieved 2014-08-14.
External links
Look up extent in Wiktionary, the free dictionary. |
- Getting to know the Solaris filesystem, Part 1: Allocation and storage strategy – a comparison of block-based and extent-based allocation
|