Btrfs check errors

I assume you’re already mounted since the balance is running, if so it’s safe to view the usage. Balance while it’s running does increase usage IME, once it’s done it should reduce usage unless it has over-allocated space. In which case you can run the following quick balance to reclaim any totally unused (yet allocated) blocks:

# very quick, runs in the background
sudo btrfs balance start -dusage=0 -musage=0 --bg /
# show status of balance if one is running
sudo btrfs balance status -v /

Being mounted as R/O could’ve been due to too many errors. Quotas can have weird performance and stability issues when used with too many snapshots. Implications extend to running balance or other operations such as defrag as well.

Normally scrub/balance/trim operations are carried out automatically using systemd timer units on the 1st of every month.

Check when they’re going to run using:

systemctl list-timers | grep btrfs

Not running a balance or scrub is not recommended. The automated scripts only does the quick rebalancing I referenced above, so it doesn’t put too much strain on the system. For example, both zfs and mdraid also scrubs (checks for bad data blocks) every month.