Linux File Systems: Ext4. Btrfs. Do we understand what we need?
Lately I have been reading a lot about Ext4, Btrfs and the next generation of Linux file systems in general. What frustrates me about all these articles is the lack of understanding in what the file system is attempting to accomplish/address. You have file systems that are catered to Flash devices, to desktop usage, enterprise class computing while others resort to compression methods as a space saving technique. As an end-user or administrator you will most likely utilize the file system that will be the most appropriate in your environment. What are you trying to solve? What is the I/O profile that you are catering to? How is this storage medium going to be accessed? All of these are important questions to ask when deploying a file system to manage a specific type of data computing.
Let us first start with a brief history of GNU/Linux. Linux began as a hobby/project intended as a desktop alternative. Almost immediately ports became available to the GNU/Linux environment in which now it was able to serve web, print and other services. It did not take much longer for it to be adopted into business environments in which it was starting to run the behind the scenes.
Since its beginning, most file systems utilized were intended for desktop use. That includes ext2/3-fs, ReiserFS (Reiser4), etc. Companies such as IBM and SGI had developed JFS and XFS (and CXFS) as a higher performing and easily scalable solution. This addressed more of the needs for enterprise class computing requirements. The needs being performance. Redundancy was still important but judged on a different scale and usually managed by external methods or through other applications.
Flash forward to the present and let us take a look at Ext4-fs and Btrfs. A lot of journalists/bloggers have been doing a lot of comparisons between the two and unless I am mistaken, both attempt to resolve two different problems. Ext4-fs (an upgrade to the Ext3-fs desktop file system) will still be a “desktop file system” while Btrfs is a solution to compete with the Sun Microsystems enterprise capable ZFS. Both are to be utilized in completely different arenas. On the one hand, the one will run on a local disk while the other can be deployed and run efficiently with external storage in a data center, some of which are under the management of external RAID controllers with their own features and accessible via Fibre Channel, Serial Attached SCSI (SAS), iSCSI, etc. protocols; as is common with deployments of ZFS. I can attest to this personally.
Again, we are talking about a totally different playing field. And if that is the case, then why are we treating both Linux file systems as competitors with each other? Why are we treating Ext4-fs as a short term file system solution until Btrfs can replace (after it has become stable)?
I am excited to see what the future holds for both file system but am more intrigued to see the path that Btrfs follows, at least once it has become stable and engineered to truly rival ZFS. ZFS is an extremely well designed file system that offers features and functionality that Btrfs is just catching up to. But that is a topic for another time.
