From Ceph wiki
Btrfs is a new Linux file system that is based on a snapshottable, copy-on-write BTree data structure. It includes a variety of advanced features, including writeable snapshots, data and metadata checksums, metadata replication, basic integrated multi-device support (raid0, raid1, raid10).
Internally, Btrfs bears some resemblance to Ebofs, the userland object file system developed for and was used in Ceph. However, Btrfs includes some critical features Ebofs does not (namely, copy-on-write semantics for file data; plus dropping the requirement that all metadata be stored in-memory), and is well maintained and tested. To avoid reinventing the wheel, Ceph uses btrfs on individual storage nodes (OSDs) to store object data, and we focus on adding any additional functionality needed to btrfs where it will hopefully benefit non-Ceph users as well. Currently it is recommended that OSDs use btrfs for the underlying storage, but it is not mandatory.
As of 2.6.29, btrfs is now in the mainline Linux kernel. Using a recent kernel is the easiest route.
Alternatively, you can also build btrfs for an older kernel. Please see
You probably want the btrfs-unstable-standalone tree, which should build on kernels as old as 2.6.18 or so. (Note that at the time of this writing the backports are a bit behind; YMMV.)
You also need the userland tools (mkfs.btrfs, btrfsck, etc.) in the btrfs-progs-unstable tree.