Btrfs Management
Chose btrfs at install (Partitioning Options Explained)? Here’s the operating manual.
Layout conventions
sudo btrfs subvolume list /
# typical: @ (root), @home, maybe @log/@cache
mount | grep btrfs # subvol= options visible
Subvolumes are namespace units snapshots operate on — Timeshift BTRFS mode snapshots @.
Snapshots: instant & cheap
sudo btrfs subvolume snapshot -r / /snapshots/root-$(date +%F)
sudo btrfs subvolume delete /snapshots/root-2026-07-01
Read-only (-r) ones are send/receive-able. Prefer Timeshift for scheduled work (Timeshift Snapshots on AcreetionOS) — switch its mode to BTRFS in settings first.
Compression
Recompress existing tree + set mount option:
sudo btrfs property set / compress zstd # new files
# fstab: defaults,noatime,compress=zstd:3
sudo btrfs filesystem defragment -r -czstd /home
Typical 20–40% space win on source trees/docs; negligible CPU cost with zstd levels 1–3.
Health routines
sudo btrfs scrub start -B / # verify all checksums (monthly-ish)
sudo btrfs scrub status /
sudo btrfs filesystem usage / # REAL free-space picture (df lies here)
sudo btrfs balance start -musage=75 -dusage=50 / # when chunks fragment
Free-space weirdness (ENOSPC despite df showing GBs): run balance with usage filters above.
Send/receive backups
sudo btrfs send /snapshots/root-2026-08-01 | \
sudo btrfs receive /mnt/backup-pool/
# incremental: send -p parent-snap ...
Pairs beautifully with backup planning.