Have you heard about a file system called Btrfs? If so, then you would be among a select group of individuals who have ever been introduced to it or who know anything about it at all. If you haven’t heard about this file system, then I’ll introduce you to it in this article, give you a little information about its history, and tell you the latest hype about where Btrfs fits in with the future development and implementation of Linux.
Btrfs stands for B-tree File System. This file system name is pronounced either as “B-tree File System,” “B-tree FS,” “Butter FS,” “Better FS,” or “Butterfuss.” Although it is a B-tree File System, the term “B-tree” should not be confused with the term “Binary Tree.”
In the world of Computer Science, a B-tree is a data structure in a tree arrangement that keeps the data sorted while allowing searches, sequential access, insertions, and deletions in logarithmic time. In essence, a B-tree is related to a Binary Tree in that the former is a generalization of the latter since a node can have more than two children (Corner, 1979, p. 123). Btrfs is a file system developed by Oracle beginning in 2007, and is a GPL-licensed copy-on-write (COW) file system developed for Linux. Btrfs was developed as a replacement file system for Linux that was intended to address the lack of support for pooling, snapshots, checksums, and multi-device spanning not prevelant in the Linux ext3 or ext4 file systems. It is critical that these elements be incorporated into the Linux file system since Linux is beginning to scale up to more and more applicability in the Enterprise, and if Linux is to be a viable operating system in the future of the Enterprise, it will be necessary for it to possess the capability to access large data volumes, handle large file sizes, and deal with large data storage requirements.
The core data structure of Btrfs resides in a copy-on-write B-tree, which was originally proposed by an IBM researcher by the name of Ohad Rodeh. Simultaneously with the beginning of the development of Btrfs, Chris Mason, an engineer working for SuSE Linux, was orchestrating the development of another file system for Linux known as ReiserFS. However, later in 2007, Chris Mason dropped work on ReiserFS and went to work for Oracle to assist with the development of the file system using B-trees. By now, the original designer of ReiserFS, Hans Reiser, was embroiled in a murder investigation into the death of his wife and further development of this file system had halted. Later, it would be determined through the courts that Hans was guilty of the crime of murder against his wife, and he was imprisoned. All further development of the ReiserFS was terminated. Thus, the move ahead on the development of Btrfs was continued.
Many of the prominent features of the Btrfs as contained within the Linux kernel 3.6 released on 30 September 2012 are:
- Online defragmentation
- Online volume expansion and compression
- Online block device addition and removal
- Online load balancing
- Offline file system checking
- Implementation of RAID 0, 1, & 10
- Subvolumes consisting of one or more separately mountable volumes within each partition
- Snapshots consisting of read-only or copy-on-write clones or subvolumes
- In-place rollback capability from ext3/4 to Btrfs
- Hierarchical per-volume quotas
In a recent “Weather Forecast” issued by the Linux Foundation, it was noted that with the release of Linux kernel 3.6 on 30 September 2012, the Btrfs was now capable of calculating the differences between two Btrfs subvolumes or snapshots and serializing the result, which leads the way for easy mirroring of volumes and incremental backups. In addition, it was reported that Btrfs through further development had acquired the capability of allocating disk quotas to subvolumes, which is a feature that is appealing to web hosting companies. Most importantly, however, was the information released by the Linux Foundation that Oracle had made the decision wherein it intended to use the Btrfs in its Enterprise distribution of Linux. This sends a clear signal to the World that Linux is advancing into a more active use on a global scale through the implementation of Btrfs as its defacto file system. Problems remaining to be resolved with Btrfs though are the development of a repair tool for the file system and the successful merging of RAID 5/6 support.
For more information on the future of Btrfs in Linux, visit The Linux Foundation website.