From Fedora Project Wiki
mNo edit summary
mNo edit summary
Line 37: Line 37:
== Detailed Description ==
== Detailed Description ==


/boot will be on btrfs. [1]
/boot will be on btrfs. This is


Use subvolumes for the following mountpoints: <span style=color:blue>/etc /var /opt /root/root /srv /usr/local</span>
Use subvolumes for the following mountpoints: <span style=color:blue>/home /var/logs /var/lib/libvirt/images</span>


[1] /boot on btrfs is supported by GRUB for ~10 years; makes snapshotting of /boot possible, to ensure parity with /usr on rollback; needs design review and resource assessment.
[1] /boot on btrfs is supported by GRUB for ~10 years; makes snapshotting of /boot possible, to ensure parity with /usr on rollback; needs design review and resource assessment.
Line 51: Line 51:
== Benefit to Fedora ==
== Benefit to Fedora ==


Optimize the default btrfs installation for today's use cases, and prepare for additional features.
Optimize the 'btrfs preset' installation for today's use cases, and prepare for additional features. A significant benefit of btrfs is it can be a nearly drop-in replacement, and not burden users with learning esoteric things.


Default features:
Default features:
* One big file system, no longer run out of space on / or /home.
* One big file system, no longer run out of space on / or /home.
* Full data integrity checking.&fnof;
* Full data integrity checking.&fnof;
* Podman will use snapshots.&fnof;
* (Rootless) Podman will use snapshots.&fnof;


Available optionally now, integration in the near future:
Available optionally now, integration in the near future:
* cgroupsv2 IO isolation, completes the resource control picture for better system responsiveness.&fnof;
* cgroupsv2 IO isolation, completes the resource control picture for better system responsiveness.&fnof;
* Transparent compression, file system/directory/file level granularity.&fnof;
* Transparent compression, file system/directory/file level granularity.&fnof;
* Snapshots and rollbacks, restore files by reflink copy.&fnof;
* Snapshots and rollbacks, restore files using reflink copy.&fnof;


&fnof; These are btrfs only features.
&fnof; These are btrfs only features.

Revision as of 18:20, 14 June 2020


Improve the Anaconda Btrfs preset

Summary

A few small changes will make it easier to do snapshots and rollbacks on btrfs, in the near future.

Owner

  • Name: Chris Murphy
  • Email: chrismurphy@fedoraproject.org
  • Product: Anaconda
  • Responsible WG: Workstation, KDE SIG

Current status

  • Targeted release: Fedora 33
  • Last updated: 2020-06-14
  • FESCo issue: <will be assigned by the Wrangler>
  • Tracker bug: <will be assigned by the Wrangler>
  • Release notes tracker: <will be assigned by the Wrangler>

Detailed Description

/boot will be on btrfs. This is

Use subvolumes for the following mountpoints: /home /var/logs /var/lib/libvirt/images

[1] /boot on btrfs is supported by GRUB for ~10 years; makes snapshotting of /boot possible, to ensure parity with /usr on rollback; needs design review and resource assessment.

Feedback

One big file system? What about clean installs and using /home?
Anaconda custom partitioning will let you reuse an existing 'home' subvolume to mount at '/home', without a reformat. A new 'root' subvolume must be created for '/' however. NOTE: Subvolumes are a bit special, but act mostly like directories, including having no size.


Benefit to Fedora

Optimize the 'btrfs preset' installation for today's use cases, and prepare for additional features. A significant benefit of btrfs is it can be a nearly drop-in replacement, and not burden users with learning esoteric things.

Default features:

  • One big file system, no longer run out of space on / or /home.
  • Full data integrity checking.ƒ
  • (Rootless) Podman will use snapshots.ƒ

Available optionally now, integration in the near future:

  • cgroupsv2 IO isolation, completes the resource control picture for better system responsiveness.ƒ
  • Transparent compression, file system/directory/file level granularity.ƒ
  • Snapshots and rollbacks, restore files using reflink copy.ƒ

ƒ These are btrfs only features.

Scope

  • Proposal owners:
    • Implement /boot on dedicated ~1G btrfs volume with 'boot' subvolume
    • Design a subvolume layout focusing on snapshot and rollback functionality, and modify the btrfs preset kickstart accordingly.
  • Other developers:
    • Bootloader team to review and ack changes.
    • Anaconda to review and merge changes.
    • Might affect dnf snapper plugin behavior.
  • Policies and guidelines: N/A
  • Trademark approval: N/A

Upgrade/compatibility impact

This change will not apply to upgrades.

How To Test

Install and use the system however you usually do, and it should behave the same.

User Experience

  • Transparent in normal use.
  • Always-on integrity verifies metadata and data. Corrupt data results in EIO, it never reaches user space. User is notified by kernel message about affected files by path.
  • Podman can use snapshots (default) or reflinks+overlayfs, at user discretion. Both are faster and more space efficient operations, than copy up on ext4.
  • Users can opt-in to other btrfs features: snapshots, compression, cp --reflink efficient copies, online scrub, btrfs send/receive, at their own pace.


Dependencies

None

Contingency Plan

  • Contingency deadline: Revert all changes.
  • Blocks release? Yes.
  • Blocks product? Workstation/KDE are release blocking desktops.

Documentation

The user is not expected to know btrfs specific things for day to day use.

man 5 btrfs - for information about general btrfs information, mount options, and features.
man btrfs - for information about the btrfs command and sub commands. NOTE: Subcommands can be arbitrarily shortened, as long as it isn't ambiguous. 'btrfs fi us' is the same as 'btrfs filesystem usage'.


Release Notes