1.5 XFS

The XFS file system is a highly scalable, high-performance 64-bit journaling file system that is designed to meet extreme computing challenges. XFS is very good at manipulating large files and performs well on high-end hardware.

Access Control

XFS uses the POSIX extended access control model.

Availability

XFS supports metadata journaling, which facilitates quicker crash recovery. The journal can be stored within the data section (an internal log) of the file system, or on a separate device to minimize disk contention. On XFS, the journal tracks high-level operations that are being performed. Journal updates are performed asynchronously to avoid incurring a performance penalty. If a server crash occurs, XFS retains file system consistency by redoing operations that were incomplete prior to the crash. Recovery occurs at mount time. The recovery speed is independent of the size of the file system. If recently modified data was not flushed to disk before a system crash, XFS zeros any unwritten data blocks on reboot in order to avoid any possible security issues that might be caused by residual data.

Scalability

XFS originated at Silicon Graphics, Inc. (SGI) for Irix and was designed specifically for large files and large volume scalability. It scales to petabyte volumes to handle extremely large file systems (up to 16 exabytes), files (8 exabytes), and directory structures (tens of millions of entries). Video and multi-media files are best handled by this file system.

XFS uses allocation groups that can be independently addressed by the file system. This allows concurrent file system access to groups by multiprocessor systems.

Speed

Before writing the data to the file system, XFS reserves (preallocates) the free space needed for a file. Thus, file system fragmentation is greatly reduced. Performance is increased because the contents of a file are not distributed throughout the file system.

Free space and inodes are handled by B+ trees inside the allocation groups. The use of B+ trees greatly contributes to XFS’s performance and scalability.

XFS uses delayed allocation to reduce the number of writes it needs to make. It holds a pending transaction in RAM and reserves the appropriate amount of space, but does not write it immediately. Some short-lived temporary data might become obsolete by the time XFS decides where actually to save it, so it does not need to be written. In this way, XFS increases write performance and reduces file system fragmentation. Because delayed allocation results in less frequent write events than in other file systems, it is likely that data loss after a crash during a write is more severe.

Proprietary Versions

SGI offers a closed source cluster parallel version of XFS called cXFS, which uses an asymmetrical model. The unique feature of cXFS is that its slave nodes can run on UNIX, Linux, and Windows, making it a cross-platform file system. Its master node must run on SGI hardware.