Btrfs is a great linux filesystem, with many great benefits over other filesystems like:
- extreme flexibility
- automatic defragmentation
- raid features
Especially snapshotting with grub-btrfs and timeshift-autosnap are invaluable for rolling release distro.
However, there are some caveats that currently limit its adoption and prevent it from being the default filesystem:
- it needs manual balancing in order not to run out of space
- it is difficult to deal with when it runs out of space
- system tools report free space wrong
- btrfs-autosnap does not have error handling and can freeze updates
- swap needs special considerations
- advanced btrfs features like raid are out of reach for many regular users
- setting up btrfs in calamares is both inflexible and not automated
- nested subvolumes cannot be deleted recursively and there is no good gui to manage subvolumes beside snapshots
These obstacles cause the following dilemma: snapshot feature of btrfs would greatly benefit new users with limited problem solving capabilities, but btrfs itself requires skills that are not easy to achieve for nontechnical users.
So, I propose the following ideas:
- write a systemd-service to automatically balance the filesystem when needed. The service should also inform the user of itself and block shutdown while running.
- warn user when disk space is low or there is some other problem
- write a gui to manage btrfs actions:
- create subvolumes (optionally with mount point)
- delete subvolumes (recursively with confirmation)
- add and remove partitions or devices to btrfs volume
- set raid level (with explanations)
- set mount options (with explanations)
- free up space in emergency by adding a ram device to btrfs volume, balancing it and then removing the ramdevive
- defragment device
- add option in calamares to install to btrfs subvolumes just by ticking a box
- add some default subvolumes for the stuff in /var/log, /var/cache and for swap files
- if swap is chosen, put the swap file in it's own subvolume and disable cow
- disable cow for some directories where it can cause issues.
- if btrfs is chosen, install grub-btrfs and timeshift-autosnap
- add error handling to timeshift-autosnap
Does anyone else have any good ideas or opinions on the matter?