XFS is one of the Silicon Graphics (SGI ) developed journaling file system for UNIX -like operating systems such as Linux. The developed until the end of 1994 exclusively for IRIX 64- bit file system convinces with its robust structure and high speed. Many developers appreciate an XFS powerful than ReiserFS. Since 1 May 2001, the file system is officially open source available for Linux, version 2.4. Since kernel version 2.6, it is an official part of the kernel. XFS provides access control lists, and since version 1.0 supports XFS and quotas for both the individual user and for groups. For the simultaneous and conflict-free access to XFS, there is the proprietary solution CXFS (cluster XFS).
History of XFS
XFS is one of the oldest available for UNIX journaling file systems at all. It is characterized by a mature, largely error-free code base. Originally XFS development began at SGI and was first presented in 1994 to IRIX. In 2000, XFS was eventually licensed under the GPL and released in 2001 for the first time on Linux. Almost all modern Linux distributions include XFS support.
General values and properties
- Maximum file size 8 Exbibyte
- Maximum file system size 16 Exbibyte
- Maximum file name length of 255 bytes
- Journal enables consistent data management
- Suitable for large and small files, as well as for large directories
- Supports block sizes of 512 bytes to 64 kibibyte
- Backup and resize on the fly (without unmount the file system )
- GRIO = IO Guaranteed Bandwidth ( Guaranteed write and read rates ), eg for video streaming server
- Support for Hierarchical Storage Systems ( HSM)
- Support for Volume Manager
- Supports access control lists
- Supports disk quotas
- Suitable for the treatment of sparse files
The XFS file system can be found for example in NAS devices and also in televisions with USB recording function. XFS is not natively supported by Windows and not all programs can deal with XFS.
Special features of XFS
To quickly access specific files are stored on XFS directory contents in a B - tree ⁺. This increases to a small extent, although the latency in the output of a complete directory contents, but reduces the access time to individual files in file directories with many entries.
Maximum file size
XFS is characterized by a full 64 -bit design. The data structures are designed to create files with a size of up to 8 Exbibyte (263 ) on an XFS - formatted disk. Today's operating systems use these limits are not yet out. So Linux 2.4 supports a maximum file size of 16 Tebibyte (244 = 212 · 232) in a memory page size of 4 kibibyte (212 ) and 64 Tebibyte (246 = 214 · 232) in a memory page size of 16 kibibyte (214).
Run by XFS journal is stored serially (there is no storage in complex data structures such as trees or heaps ). In this case, the journal both in specially reserved areas on the appropriate media and stored on external storage media is performed. XFS adds transactions on the file system, however, asynchronously ( the file system driver -blocking works ) are added to the journal. This operation can be carried out faster than on comparable systems, in case of failure (power failure ) can, however, some entries in the journal are missing.
Subsequent to a fault occurs, the file system check but at least restore consistency and fill data areas that could not be written with zeros. This potential errors are excluded by " residual data ".
Special memory allocation
Another special feature of XFS are so-called availability groups (English allocation group). These form a separate unit in the XFS system and independently manage both the free space and inodes. This allows multiple processes simultaneously access a file system (if any process accesses a different occupancy group).
Size -Based Assignment
Information about free extents are stored in B - trees ⁺, which makes it possible to find suitable storage areas and so to avoid fragmentation mostly.
XFS supports block sizes of 512 bytes to 64 kibibyte. This allows a file system adapted to the expected use to create. Both small and large files can be well managed.
In addition to the size-based assignment XFS provides also a further reduction of possible fragmentation due to delayed availability. In this case, files are stored in the memory as long as possible, before they are written to disk. This increases the probability that the XFS driver can find a suitable storage area and so dispense with fragmentation. However, this is the risk of data loss, for example due to power outages, larger.
Disadvantages of XFS
The design of XFS has compared to some other file systems also have disadvantages: In current implementations, it is not possible to reduce an XFS file system. Deleted files can not be restored. Because of the delayed write data data loss in the currently open files in a system crash (eg power failure) may be larger than other file systems ( see section: Delayed occupancy).
The Journal is optimized for high performance, and therefore architecture dependent: When changing the processor architecture (eg i386 on x86 -64) must be cleared with the Journal xfs_repair before mounting the filesystem.
On some architectures with specific cache architectures ( such as Intel XScale, ARM V5TE ) the use of XFS is not recommended as it get there sooner or later to file system corruption with data loss. This is with Linux kernel 22.214.171.124 provoking on an Intel XScale 80219 by unpacking the kernel source code on a XFS drive with subsequent write or delete attempts within seconds. The problem was circumvented by the XFS file system was disabled on ARM.