If I understand correctly, btrfs snapshots store just what changed with respect to a base filesystem called the "first root filesystem". My first root filesystem was created in 2017 and thus snapshots are pretty big because a lot changed since then. Is it possible to make my current file system the "first root filesystem" so that snapshots are not that heavy?
BTRFS snapshots reference data at the time the snapshots were taken. When you attempt to change that data, it first gets copied, leaving the original data intact. If you keep many snapshots, then sure they can use up a lot of storage space in total, but the individual snapshots themselves don't grow in size. It sounds like you have snapshots referencing old data don't use anymore. To free up space, simply delete the snapshots you don't need.
Simply put, a snapshot is data frozen in time; No diffs are involved, nor is it similar in implementation to LVM snapshots. Here's a simple experiment to prove it:
- Create a subvolume.
- Change the data in it.
- Snapshot it.
- Repeat, say... a handful of times to simulate recording various changes.
- Delete some of the intermediate snapshots.
You'll notice that the remaining snapshots remain unaffected. If diffs were being used, then deleting intemediate snapshots would not be allowed because they would destroy the filesystem.