Users of a Linux system pay little attention to the underlying file system. In fact, there is a tendency during Linux installation to often work with the default file system listed without exploring other available options. For Windows, things are a lot easier since NTFS is the dominant file system. There are numerous file systems available to you under Linux. These include Ext4, XFS, ZFS, and BTRFS.
The most widely used file systems are Ext4 and XFS, with the latter being the standard file system in RHEL-based distributions and Ext4 the standard file system in Debian and Ubuntu distributions. Some of the factors to consider when choosing a file system are scalability, stability, and data integrity.
In this guide, we will focus on Ext4 and XFS file systems and try to understand the differences between the two.
The Ext4 file system
The Ext4 file system (Extended Filesystem) is the fourth generation of the Ext file system family, the origin of which goes back to the Minix operating system introduced in 1987. The Ext filesystem is the first filesystem to underpin the Linux kernel when it was first introduced back in 1992. It came into play in 2008 with Linux 2.6.28. Successor to its predecessor ext3.
Ext4 perfectly manages many small files and ensures that metadata is written correctly, even if the write cache loses performance.
At a glance, its main features include:
- Large File Size Support – The Ext4 supports a single file size of up to 16 TiB (Tebibytes), while XFS supports a maximum file size of up to 8 Exbibytes.
- Delay allocation based on extent for faster file allocations.
- Backward Compatibility – Another benefit of using the Ext4 file system is its backward compatibility with the Ext3 and Ext2 systems. This improves performance and flexibility because some Ext4 functions can also be implemented in Ext3 and Ext2 file systems. In addition, the Ext3 and Ext2 file systems can be mounted as Ext4.
- Allocation Improvements – The Ext4 file system allocates blocks of memory more efficiently before writing them to disk. This greatly improves reading and writing performance.
- Journal checksums – The Ext4 file system uses the checksum option to minimize the risk of file corruption. The checksum option performs frequent checks to look for errors in the block volume. This will reduce journaling time and reduce performance.
- Faster file system checks – In addition to journaling checksums, Ext4 provides faster file system checks. For example, the fsck command runs faster and provides results in less time compared to previous versions such as Ext3 and Ext2.
- Improved Timestamps – Ext4 implements timestamps that are measured in nanoseconds, an improvement over the granularity of second-based timestamps, which is considered inadequate. In addition, an additional 408 years have been added to the timestamp to account for the upper limit of the year 2038.
- Unlimited Subdirectories – The Ext4 file system limits the number of subdirectories that can be created in a single directory, except for the directory size itself. In Ext3, a directory can have a maximum of 32,000 subdirectories. Ext4 introduced the HTreeindices function to increase the number of entries that can be stored in a directory.
- Transparent encryption – Support for transparent encryption was implemented in June 2015 for the Ext4 file system in the Linux kernel 4.1.
The XFS file system
Originally developed by Silicon Graphics in 1993, the XFS file system prides itself on being a stable and high-performance 64-bit journaling file system. The XFS file system is designed to support large file systems of up to 18 exabytes and extremely large files. The file system is designed for systems with large disk arrays, large CPUs, and those that need to store large files.
XFS is widely known for providing high scalability of I / O threads and for being great at handling large files.
The XFS file system is the standard file system in RHEL, CentOS, and other RHEL distributions such as Oracle Linux, Rocky Linux, and AlmaLinux.
Main features are:
- Larger File System Support – XfS supports file system sizes up to 1 PiB, while Ext4 supports up to 50 TiB. The supported file system size may vary depending on the Linux distribution version.
- Delayed Allocation – Use lazy file allocation scoring techniques. Block allocation occurs only when the data is finally written to disk, and it helps reduce fragmentation and improve performance.
- Online defragmentation and growing file systems
- Sophisticated metadata read-ahead algorithms
- Metadata Journaling – Metadata journaling is a feature that ensures the consistency of the file system in the event of a sudden power failure or system crash.
- Quota journaling – this eliminates the need for lengthy quota consistency checks after a system crash.
- Extended Attribute Support – This allowed the system to map multiple additional name / value pairs per file.
- Online Defragmentation and Expansion – You can defragment and enlarge the file system while it is mounted and active.
- Storage Scalability – The XFS file system is impressive for supporting large file systems, large directories, and huge volumes of files with a capacity of up to exabytes.
- Efficient storage space management – Thanks to the B-tree indexing, XFS also offers scalability for efficient storage space management.
Choosing the appropriate file system for your application is an important decision. When making a decision, you need to consider how much larger the server is, the expected I / O usage, throughput and latency, the size of the files, how much downtime the application can experience, and much more.
That was an overview of the XFS and Ext file systems. We have detailed the advantages each file system offers. With this information in mind, you can make an informed decision about which file system to choose for your operating system.