11

The question is not trivial. BTRFS is COW file system and one object stored on hard disk can be referenced by many files.

I use BTRFS snapshots as a part of a backup solution on my production server. This way I have space-efficient, browsable history of a given subvolume (I use a modification of the SnapBtr).

I have several independent btrfs subvolumes for different purposes and a backup scheme for each one. When the free space is running out, I can get the most unneeded backup snapshot from each backup pool based on the smart logarithmic-time-cost algorithm of SnapBtr.

I need a way to weight the amount of data that will be freed after I remove each backup with age of the old snapshot and importance of its backup pool. I am missing the former information.

I understand that the process of calculation of the free space on the BTRFS is neither trivial nor quick. I need something that would simulate the subvolume's deletion to get the size of the would-be freed space.

Can anyone help me? Should I post this message to the [email protected]?

0

2 Answers 2

7

As demonstrated here, this is actually fairly simple to do.

First, enable btrfs quotas:

# btrfs quota enable /btrfs_subvolume 

And then run:

# btrfs qgroup show /btrfs_subvolume OR # btrfs qgroup show -f /btrfs_subvolume 

Which in Btrfs v3.18.2 shows you this:

qgroupid rfer excl -------- ---- ---- 0/260 1.09GiB 1.09GiB 

The 0/260 is the subvolume ID, and the excl is the exclusive data in the subvolume. If you delete the subvolume, that's how much space you'll free up.

Edit: According to this link, this appears to be the official recommended way to do this.

1
0

btrfsQuota.py makes the output of btrfs qgroup show more readable, replacing subvol IDs with the names of the subvols, e.g.:

subvol group total unshared ------------------------------------------------------------------------------- test/a 0/970 20.05M 0.05M test/b 0/971 20.05M 10.05M test/c 0/972 30.05M 10.05M test/d 0/973 30.05M 0.05M test/e 0/974 30.05M 10.05M 
2
  • 1
    It doesn't work with default btrfs-tools version of Ubuntu 14.04. You need to install a newer one, and then everything is ok Commented Jun 4, 2016 at 7:35
  • @AdamRyczkowski I'm using the Python 3 version of that script now, and it works fine. Commented Aug 3, 2017 at 18:44

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.