A New Linux File-System Aims For Speed While Having ZFS/Btrfs-Like Features
Another year, another new file-system, or so it seems in the Linux world. The main goal for this new file-system is to "match ext4 and xfs on performance and reliability, but with the features of btrfs/zfs."
This new file-system is Bcachefs. BcacheFS is based on BCache, the Linux kernel block layer cache for pairing a large-capacity hard drive with a low-capacity, high-performance solid-state drive to act as a cache. In developing this block layer cache, Kent Overstreet (the primary Bcache/Bcachefs) developer realized they were basically writing their own file-system in the process. He explained, "the bcache codebase has been evolving/metastasizing into a full blown, general purpose posix filesystem - a modern COW filesystem with checksumming, compression, multiple devices, caching, and eventually snapshots and all kinds of other nifty features...I and the other people working on bcache realized that what we were working on was, almost by accident, a good chunk of the functionality of a full blown filesystem - and there was a really clean and elegant design to be had there if we took it and ran with it."
While BCache was just merged in Linux 3.14 back in 2013, he and the developers realized for years that Bcache was heading into the direction of becoming its own file-system. Kent Overstreet was previously working for Google while hacking on Bcache though at the moment he's unemployed to continue developing this Bcachefs full-time. He's aiming for this file-system to match the performance/reliability of EXT4 and XFS while boasting the features of Btrfs and ZFS.
Kent Overstreet announced the Bcachefs project officially last night on the LKML. He feels that this has evolved into a general purpose copy-on-write (COW) file-system that is nearly feature-complete. However, the on-disk format is still subject to change though he has made stability and correctness improvements recently. He proclaimed in the announcement, "It probably won't eat your data - but no promises."
Right now Bcachefs supports multiple disk devices, caching/tiering built-in, native Zlib file-system compression support, and CRC32C and 64-bit checksumming. The checksumming and Zlib transparent compression support are handled by mount options and not currently enabled by default. He's also planning on adding support for snapshots, erasure coding, and native support for SMR devices and raw flash.
In Overstreet's LKML announcement, he shared some performance numbers for Bcachefs compared to EXT4, XFS, and Btrfs even though he says he hasn't been focusing on performance yet rather working on correctness items first. Even with claims of Bcachefs performance to be further optimized, his benchmarks show fairly good results.
He hasn't planning to try to land Bcachefs into the kernel's staging tree for Linux 4.3 nor would it appear anytime soon, but he's hoping to get more developers involved and at least some testing of this new file-system. Of course, I couldn't resist trying out Bcachefs myself with the initial results on a M.2 SSD comparing it against the popular mainline Linux file-systems.