The btrfs-usage-report program shows a detailed report about how a btrfs filesystem is using available
disk space.
The filesystem to show information about needs to be online and mounted. Because the needed information
is retrieved using the btrfs kernel API, it has to be run as root.
In a btrfs filesystem, raw storage is shared by data of different types (System, MetaData and Data) and
profiles (e.g. single, DUP, RAID1). Also, a filesystem can have multiple block devices of different sizes
attached. All of this together confuses regular tools like df, which will already fail to show us how
much free space we still have to add more data to the filesystem.
The report will show information about:
- Physical disk space usage. On this level we can see the amount of disk space allocated for specific
combinations of type and profile. E.g. 1GiB of Data with profile RAID1 will show that two devices both
store 1GiB of raw data, because it is duplicated.
- Virtual disk space usage. The btrfs virtual address space shows the amount of data we store
disregarding the storage profile. So, if we store 1GiB of data using a RAID1 profile, then the virtual
address space shows we have 1GiB of data, while the physical space usage will show up as 2GiB in total.
Note that when using compression, the virtual address space counts compressed data instead of
uncompressed data.
- Estimated free virtual space left for use. By extrapolating the current usage patterns, a prediction
can be made that shows how much extra data can be added to the filesystem. These are the values that you
would like to have df show you.
- Unallocatable disk space, which is raw physical disk space that cannot be used, either because
allocations in the filesystem are unbalanced, or because of having different sizes of devices attached.
Additionally, it will show us if disk space can be reclaimed for use by using btrfsbalance. When
converting between profiles, these values can quickly show you if the conversion to another profile can
actually be completed or not.