Understanding the Different Linux File Systems
Updated: Nov 4, 2020
When it comes to computer systems, most people are familiar with the commercial OS like Windows and macOS. While there are open-source OS programs available on both these systems, where a community of people can share and collaborate on ideas to make a system better, the Linux system is a complete OS system.
This OS source indicates that anyone who has enthusiasm and skills can develop a new Linux file system. For this reason, Linux systems are available in many variations. Here are some of the most well-known and utilized Linux systems:
Ext, which stands for Extended File System, is the first system developed for Linux. Ext has been in constant development, releasing four (4) main revisions. Since its introduction in 1992, Ext was the major upgrade from the Minix file system. Ext does not include significant features relevant today, which resulted in Linux distributions letting this system go.
The first revision of Ext resulted in Ext2, which is the first to support extended file attributes and two terabyte drives. Although efficient, the downside of Ext2 is that it does not support journaling. When the system does not track substantial changes in data, it writes to diskless. This file type makes it useful for flash memory like portable flash drives. Since the revision, there are more file systems similar to Ext2 with the same, modernized features that emerged. If you look for similar features to Ext2, newer systems like exFAT or FAT32 are worth consideration.
For the third revision of Ext, the Ext3 now includes journaling. Journaling integrates to become backward compatible with the previous revision. The partitions between Ext2 and ext3 makes it possible to perform conversions without formatting. Although extremely useful, you would still be better off using the newest revision, Ext4.
The fourth revision of Ext came in 2008. Improvements made Ext more backward compatible. This compatibility allows you to mount the Ext4 file system as Ext3 or Ext2 or Ext3 as Ext4. Major upgrades also included reduced file fragmentation to enable people to obtain larger volumes and files. Features like Delayed allocation also improved flash memory duration. Ext4 is the latest revision so far that it underwent numerous testing. Thus, this version has been the default version of the Linux file system, making it widely popular.
ReiserFS was initially demonstrated to the public in 2001 as another alternative to Ext4. The features implemented a progressive and innovative system that the Ext series would not be able to apply. Thus, it was eventually replaced by Reiser4 in 2004. This version improved specific errors from the previous version, although it stopped four years later. The primary developer of Reiser4, Hans Reiser, was imprisoned later that year.
BtrFS refers to B-Tree File Systems developed by Oracle to establish an alternative to the Ext series. This file system enables drive pooling, automatic snapshot, transparent compression, and online defragmentation. BtrFS compares with the former default Linux system, ReiserFS. According to the primary developer of Ext4, Ted Ts’o, “BtrFS is the way forward.” BtrFS developers expect it to deliver enhancements to scalability, reliability, and efficiency.
Before Oracle took over ZFS, Sun Microsystems for Solaris developed this file system in 2001. Since it is an open-source system under the CDDL license, Linux is unable to claim it. ZFS is the conjugation of significant features of a file system and a volume manager. ZFS features drive pooling, automatic snapshot, and dynamic disk striping. In contrast with other systems, ZFS can create a file system that spans across a series of drives or pools. You can also be able to implement storage to a pool by merely integrating an additional drive. ZFS added a checksum, which identifies corrupted files. Ubuntu is currently utilizing the 16/04 version of ZFS.
IBM developed a journaled File System or JFS in 1990 before Linux took over.
This 64-bit journaling file system is compatible with files, either large or small. JFS boasts excellent performance while utilizing low CPU usage. For this reason, partitions are resizable, although not shrinkable. Linux distribution supports JFS, but it was designed for AIX. Therefore, Ext4 has considerably more extensive production testing on Linux servers compared with JFS.
Silicon initially established XFS for the SGI IRX OS and ported it to Linux in 2001. XFS has a plethora of similarities between Ext4, including delayed allocation features and file fragmentation. On top of that, XFS also does not support mounted snapshots. XFS can be efficient for various types of servers that deal with limited file size. It excels when used with large files and does not work well with small files.
XFS vs. Ext4
Although XFS is older than the latest version of the Ext series, there have been notable differences. As it serves as the primary supported system for RedHat Enterprise Linux, it underwent a series of advancements over time. For this reason, there are considerably more high-performance features in XFS than in Ext4.
Another significant difference between the two is that Ext4 tends to perform better on systems that run on limited I/O capacity. Both Ext3 and Ext4 performs better on limited bandwidth (< 200MB/s) and up to ~1,000 IOPS capability. XFS tends to perform better for systems that run on higher capacity. It is because XFS consumes double the CPU-per-metadata operation compared to Ext3 and Ext4. Thus, if those who rely on CPU-bound workload with little concurrency work better and faster using Ext3 or Ext4. Presently, Ext4 is the maintainer deployed in the Android OS of Google. This option allows you to see Ext4 in more phones and tablets or devices that operate less powerful hardware.
Principled Technologies performed tests on Red Hat enterprise 6 servers. These are some of their findings summarized in graph:
Depending on the findings, XFS is likely to be the best choice even with smaller storage arrays. XFS also consumes about twice the CPU-per-metadata operation compared to Ext3 and Ext4. For anything with higher capability, XFS tends to be faster. In general, Ext3 or Ext4 is better if an application uses a single read/write thread and small files, while XFS shines when an application uses multiple read/write threads and bigger files.
The report is available here.
In summation, a plethora of Linux file systems are available, however, those mentioned are among the most popular and widely utilized. These file systems have various uses, wherein some have specific services, such as being for flash memory devices. Every system is worth taking a look at to determine which is most suitable for your needs.