Extent (file systems)

Storage area in computer file system

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Extent" file systems – news · newspapers · books · scholar · JSTOR (December 2016) (Learn how and when to remove this message)

|

In computing, an extent is a contiguous area of storage reserved for a file in a file system, represented as a range of block numbers, or tracks on count key data devices. 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] Also, extent allocation results in less file fragmentation.

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. But 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 overall benefits in storage efficiency and performance are slight.[2]

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.

IBM OS/360 and successors allocate files in multiples of disk tracks or cylinders. Files could originally have up to 16 extents, but this restriction has since been lifted. The initial allocation size, and the size of additional extents to be allocated if required, are specified by the user via Job Control Language. The system attempts to allocate the initial size as a contiguous area, although this may be split if contiguous space is not available.

## Adoption

[edit]

The systems supporting file system extents include the following:

* APFS – Apple File System
* ASM – Automatic Storage Management – Oracle's database-oriented file system
* BFS – BeOS, Zeta and Haiku operating systems
* Btrfs – Extent-based copy-on-write (COW) file system for Linux
* EFS – Extent File System – SGI's first-generation file system for IRIX
* ext4 – Linux file system (when the configuration enables extents – the default in Linux since version 2.6.23)
* Files-11 – OpenVMS file system
* HFS and HFS Plus – Hierarchical File System – Apple Macintosh file systems
* High Performance File System (HPFS)  – on OS/2, eComStation and ArcaOS
* IceFS – IceFileSystem – optional file system for MorphOS
* JFS – Journaled File System – used by AIX, OS/2/eComStation/ArcaOS and Linux operating systems
* ISO 9660 – Extent-based file system for optical disc media
* MPE File System – the file system of the Multi-Programming Executive operating system.
* NTFS – used by Windows
* OCFS2 – Oracle Cluster File System – a shared-disk file system for Linux
* Reiser4 – Linux file system (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 for IRIX and Linux

Adoption outside of file systems include the following:

* Microsoft SQL Server – versions support 64 KB extents consisting of eight 8 KB pages.[3]
* Oracle Database groups blocks into extents and extents into segments.[4]

## See also

[edit]

* Comparison of file systems

## References

[edit]

1. ^ "Understanding Ext4 (part1): Extents". 2010-12-20. Archived from the original on 2015-02-03. 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 and 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."
2. ^ "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."
3. ^ "Pages and Extents Architecture Guide - SQL Server". learn.microsoft.com. Microsoft. 12 June 2024. Retrieved 18 December 2024.
4. ^ "Oracle Database 23ai Technical Architecture". docs.oracle.com. Oracle Corporation. Retrieved 18 December 2024.

## External links

[edit]

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

* v
* t
* e

File systems

* Comparison of file systems
* distributed
* Unix filesystem

Disk and
non-rotating|

* ADFS
* AdvFS
* Amiga FFS
* Amiga OFS
* APFS
* AthFS
* bcachefs
* BFS
* Be File System
* Boot File System
* Byte File System (z/VM)
* Btrfs
* CVFS
* CXFS
* DFS
* EFS
* Encrypting File System
* Extent File System
* Episode
* ext
* ext2
* ext3
* ext3cow
* ext4
* FAT
* exFAT
* Files-11
* Fossil
* GPFS
* HAMMER
* HAMMER2
* HFS (Classic Mac OS)
* HFS (MVS)
* HFS+
* HPFS
* HTFS
* JFS
* LFS
* MFS
* Macintosh File System
* TiVo Media File System
* MINIX
* NetWare File System
* Next3
* NILFS
* NILFS2
* NSS
* NTFS
* OneFS
* OpenZFS
* PFS
* QFS
* QNX4FS
* ReFS
* ReiserFS
* Reiser4
* Reliance
* Reliance Nitro
* RFS
* SFS
* Shared File System (VM)
* Smart File System
* SNFS
* Soup (Apple)
* Tux3
* UBIFS
* UFS/UFS2
* soft updates
* WAPBL
* VxFS
* WAFL
* Xiafs
* XFS
* Xsan
* zFS (z/OS)
* ZFS (Sun)

Optical disc|

* HSF
* ISO 9660
* ISO 13490
* UDF

Flash memory and SSD|

* APFS
* FAT
* exFAT
* TFAT
* EROFS
* F2FS
* JFS
* NVFS

| host-side wear leveling|

* CHFS
* JFFS
* JFFS2
* LogFS
* NILFS
* NILFS2
* YAFFS
* UBIFS

|

Distributed parallel|

* BeeGFS
* Ceph
* CXFS
* GFS2
* Google File System
* OCFS2
* OrangeFS
* PVFS
* QFS
* Xsan
* more...

NAS|

* 9P
* AFS (OpenAFS)
* AFP
* Coda
* DFS
* Google File System
* GPFS
* Lustre
* NCP
* NFS
* POHMELFS
* Hadoop
* SMB (CIFS)
* SSHFS
* more...

Specialized|

* Aufs
* AXFS
* Boot File System
* Compact Disc File System
* cramfs
* Davfs2
* EROFS
* FTPFS
* FUSE
* Lnfs
* LTFS
* NOVA
* MVFS
* SquashFS
* UMSDOS
* OverlayFS
* UnionFS

Pseudo|

* configfs
* devfs
* debugfs
* kernfs
* procfs
* specfs
* sysfs
* tmpfs
* WinFS

Encrypted|

* eCryptfs
* EncFS
* EFS
* Rubberhose
* SSHFS
* ZFS

Types|

* Clustered
* Global
* Grid
* Self-certifying
* Flash
* Journaling
* Log-structured
* Object
* Record-oriented
* Semantic
* Steganographic
* Synthetic
* Versioning

Features|

* Case preservation
* Copy-on-write
* Data deduplication
* Data scrubbing
* Execute in place
* Extent
* File attribute
* Extended file attributes
* File change log
* Fork
* Inode
* Links
* Hard
* Symbolic

Access control|

* Access-control list
* Filesystem-level encryption
* Permissions
* Modes
* Sticky bit

Interfaces|

* File manager
* File system API
* Installable File System
* Virtual file system

Lists|

* Cryptographic
* Default
* Log-structured

Layouts|

* Master Boot Record
* GUID Partition Table
* Apple Partition Map

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template