Btrfs is a new copy on write filesystem for Linux aimed at implementing advanced features while focusing on fault tolerance, repair and easy administration. Initially developed by Oracle, Btrfs is licensed under the GPL and open for contribution from anyone.
Linux has a wealth of filesystems to choose from, but we are facing a number of challenges with scaling to the large storage subsystems that are becoming common in today's data centers. Filesystems need to scale in their ability to address and manage large storage, and also in their ability to detect, repair and tolerate errors in the data stored on disk.
The main Btrfs features include:
- Extent based file storage (2^64 max file size)
- Space efficient packing of small files
- Space efficient indexed directories
- Dynamic inode allocation
- Writable snapshots
- Subvolumes (separate internal filesystem roots)
- Object level mirroring and striping
- Checksums on data and metadata (multiple algorithms available)
- Integrated multiple device support, with several raid algorithms
- Online filesystem check
- Very fast offline filesystem check
- Efficient incremental backup and FS mirroring
- Online filesystem defragmentation
Currently the code is in an early implementation phase, and not all of these have yet been implemented. See the Development timeline for detailed release plans.
- Linux 2.6.32 released, with btrfs support for -ENOSPC, snapshot/subvolume deletion, discard support and performance improvements. More details in the Changelog
- An interesting article about Btrfs: "A Btrfs update"
- Btrfs rescue live boot images available Rescue me
- v0.19 Released (June 2009) For 2.6.31-rc (FORWARD ROLLING FORMAT CHANGE) Changelog
- v0.18 Released (Jan 2009) For 2.6.29-rc2 Changelog
- v0.17 Released (Jan 2009) Included in 2.6.29-rc1 Changelog
- v0.16 Released (Aug, 2008) Changelog
- v0.15 Released (May 29, 2008)
- v0.14 Released (April 30, 2008)
- v0.13 Released
- Getting started
- Using Btrfs with Multiple Devices
- Conversion from Ext3 and Ext4
- Btrfs design
- Multiple Device Support
- Code documentation
Source Code Download
The benchmarks from IBM demonstrate some bottlenecks we have in the extent recording on large workloads. We're working on fixes for these.
The phoronix workload is mostly CPU based, but they do have a few filesystem benchmarks. Btrfs performs well, but you can see the checksumming and metadata duplication show up on their single disk streaming write workload. dbench in general measures lots of different caching effects, and is not a great measure of everyday performance.
- 05-2009 Phoronix test with ssd mode
This test show that btrfs is slower with ssd option activated. Ssd code has been updated during 2.6.30-rc and is expected to be faster.