From Fedora Project Wiki
m (→‎Scope: link to supporting compression level in defrag)
Line 35: Line 35:
** Update anaconda to perform the installation using <code>mount -o compress=zstd:1</code>
** Update anaconda to perform the installation using <code>mount -o compress=zstd:1</code>
** Set the proper option in fstab (alternatively: set the XATTR)
** Set the proper option in fstab (alternatively: set the XATTR)
** Add support for [https://github.com/kdave/btrfs-progs/issues/328 setting compression level when defragmenting]
* Other developers:
* Other developers:
** anaconda: review PRs as needed
** anaconda: review PRs as needed

Revision as of 20:52, 28 December 2020

Enable btrfs transparent zstd compression by default

Summary

On editions using btrfs as the default filesystem, enable transparent compression using zstd. Compression saves space and can significantly increase the lifespan of flash-based media by reducing write amplification. It can also increase read and write performance.

Owners

  • Name: Michel Salim, Davide Cavalca, Josef Bacik
  • Email: michel@michel-slm.name, dcavalca@fb.com, josef@toxicpanda.com

Current status

  • Targeted release: Fedora 34
  • Last updated: 2020-12-28
  • Release notes tracker: tbd

Detailed description

Transparent compression is a btrfs feature that allows a btrfs filesystem to apply compression on a per-file basis. Of the three supported algorithms, zstd is the one with the best compression speed and ratio. Enabling compression saves space, but it also reduces write amplification, which is important for SSDs. Depending on the workload and the hardware, compression can also result in an increase in read and write performance.

See https://pagure.io/fedora-btrfs/project/issue/5 for details. This was originally scoped as an optimization for https://fedoraproject.org/wiki/Changes/BtrfsByDefault during Fedora 33.

Feedback

(pending initial discussion)

Benefit to Fedora

Better disk space usage, reduction of write amplification, which in turn helps increase lifespan and performance on SSDs and other flash-based media. It can also increase read and write performance.

Scope

  • Proposal owners:
  • Other developers:
    • anaconda: review PRs as needed
  • Release engineering: tbd
  • Policies and guidelines: N/A
  • Trademark approval: N/A

Upgrade/compatibility impact

This Change only applies to newly installed systems. Existing systems on upgrade will be unaffected, but can be converted manually with btrfs filesystem defrag -czstd -r, updating /etc/fstab and remounting.

How to test

Existing systems can be converted to use compression manually with btrfs filesystem defrag -czstd -r, updating /etc/fstab and remounting.

User experience

Compression will result in file sizes (e.g. as reported by du) not matching the actual space occupied on disk. The compsize utility can be used to examine the compression type, effective compression ration and actual size.

Dependencies

Anaconda will need to be updated to perform the installation using mount -o compress=zstd:1

Contingency plan

  • Contingency mechanism: will not include PR patches if not merged upstream and will not enable
  • Contingency deadline: Final freeze
  • Blocks release? No
  • Blocks product? No

Documentation

https://btrfs.wiki.kernel.org/index.php/Compression

Release Notes

Transparent compression of the filesystem using zstd is now enabled by default. Use the compsize utility to find out the actual size on disk of a given file.