Introduction
============

BTRFS is a modern copy on write (COW) filesystem for Linux aimed at
implementing advanced features while also focusing on fault tolerance, repair
and easy administration. Its main features and benefits are:

*  Snapshots which do not make a full copy of the files
*  Built-in volume management, support for software-based RAID 0, RAID 1, RAID 10 and others
*  Self-healing - checksums for data and metadata, automatic detection of silent data corruptions

Feature overview:

*  Extent based file storage
*  2\ :sup:`64` byte == 16 EiB :ref:`maximum file size<administration-limits>` (practical limit is 8 EiB due to Linux VFS)
*  :doc:`Space-efficient packing of small files<Inline-files>`
*  Space-efficient indexed directories
*  :ref:`Dynamic inode allocation<administration-flexibility>`
*  :doc:`Writable snapshots, read-only snapshots, subvolumes (separate internal filesystem roots)<Subvolumes>`
*  :doc:`Checksums on data and metadata<Checksumming>` (crc32c, xxhash, sha256, blake2b)
*  :doc:`Compression (ZLIB, LZO, ZSTD), heuristics<Compression>`
*  :doc:`Integrated multiple device support<Volume-management>`:

    * File Striping (like RAID0)
    * File Mirroring (like RAID1 up to 4 copies)
    * File Striping+Mirroring (like RAID10)
    * Single and Dual Parity implementations (like RAID5/6, experimental, not production-ready)

*  SSD/NVMe (flash storage) awareness, :doc:`TRIM/Discard<Trim>` for reporting free blocks for
   reuse and optimizations (e.g. avoiding unnecessary seek optimizations,
   sending writes in clusters.
*  :doc:`Background scrub<Scrub>` process for finding and repairing errors of files with redundant copies
*  :doc:`Online filesystem defragmentation<Defragmentation>`
*  :doc:`Offline filesystem check<btrfs-check>`
*  :doc:`In-place conversion<Convert>` of existing ext2/3/4 and reiserfs filesystems
*  :doc:`Seeding device.<Seeding-device>` Create a (readonly) filesystem that
   acts as a template to seed other Btrfs filesystems. The original filesystem
   and devices are included as a readonly starting point for the new filesystem.
   Using copy on write, all modifications are stored on different devices; the
   original is unchanged.
*  :doc:`Subvolume-aware quota<Qgroups>` support
*  :doc:`Send/receive of subvolume changes<Send-receive>`, efficient
   incremental filesystem mirroring and backup
*  :doc:`Batch, or out-of-band deduplication<Deduplication>` (happens after writes, not during)
*  :doc:`Swapfile support<Swapfile>`
*  :doc:`Tree-checker<Tree-checker>`, post-read and pre-write metadata verification
*  :doc:`Zoned mode support<Zoned-mode>` (SMR/ZBC/ZNS friendly allocation, emulated on non-zoned devices)
