I have 1 TB hard drive with btrfs on it used for /home. When moving to new ubuntu (with fresh install), I've moved my @home subvolume to @home-old, installed and configured system, copied needed files onto new @home and removed @home-old with btrfs subvol delete --commit.

Now I have high space usage for seemengly no reason. That's what btrfs commands say (I did some balancing, root subvolume is mounted at /mnt):

root@v-home:~# sudo btrfs filesystem usage -h -T /mnt
    Device size:         931.51GiB
    Device allocated:        751.07GiB
    Device unallocated:      180.44GiB
    Device missing:          0.00B
    Used:            744.63GiB
    Free (estimated):        184.82GiB  (min: 94.60GiB)
    Data ratio:               1.00
    Metadata ratio:           2.00
    Global reserve:      512.00MiB  (used: 0.00B)

            Data      Metadata System               
Id Path     single    DUP      DUP       Unallocated
-- -------- --------- -------- --------- -----------
 1 /dev/sdb 741.01GiB 10.00GiB  64.00MiB   180.44GiB
-- -------- --------- -------- --------- -----------
   Total    741.01GiB  5.00GiB  32.00MiB   180.44GiB
   Used     736.63GiB  4.00GiB 112.00KiB            
root@v-home:~# btrfs filesystem du -s /mnt/@
@backups/ @home/    
root@v-home:~# btrfs filesystem du -s /mnt/*
     Total   Exclusive  Set shared  Filename
     0.00B       0.00B       0.00B  /mnt/@backups
 412.11GiB   149.73GiB   197.05GiB  /mnt/@home

Why data usage is much bigger than Total for /mnt/@home? Is there a way to fix this?

  • Are you showing us ALL of the subvolumes on the filesystem? If the usage for @home is 412 GiB and the total usage of the filesystem is 744 GiB, then there are probably other subvolumes using up that additional space. Given the BTRFS filesystem is mounted at /, you can get a list of subvolumes with btrfs subvol list / May 20, 2019 at 13:02
  • @EmmanuelRosa Sorry, I've made a typo. Fixed now. BTW, that space seems to get freed after reboot, but I'm still curious what caused this issue. May 20, 2019 at 13:15

1 Answer 1


Even with the --commit flag, btrfs does not immediately deallocate the used space, because it's a very slow operation. After deleting a large subvolume, you will notice a btrfs-cleaner task in the process list which is responsible for this operation.

To wait until the subvolume is actually completely deleted, use btrfs subvolume sync.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .