I have a BTRFS Raid 1, with the following btrfs fi show:

    Total devices 4 FS bytes used 1.45TiB
    devid    7 size 698.64GiB used 694.15GiB path /dev/bcache32
    devid    9 size 931.51GiB used 928.51GiB path /dev/bcache0
    devid   10 size 698.64GiB used 694.64GiB path /dev/bcache48
    devid   11 size 1.82TiB used 697.00GiB path /dev/bcache16

From here, you can see that the three smaller devices are almost full (in fact, they were completely full just a while ago, giving me ENOSPC errors). However, the larger 2TB HDD is mostly empty.

The volume is "full" because any data added to the 2 TB disk must also be mirrored on the other disks, but they're all full. Ideally, I'd be able to move copies from the smaller disks to the 2 TB disk so I'd have room to add more data later.

A full btrfs balance seems to juggle the data around but doesn't actually make significant changes to the allocation proportions.

How can I fix this?

  • 1
    How would raid-1 mirroring help you if both copies of your data were on the same disk?
    – Jeff Schaller
    Commented May 31, 2017 at 16:57
  • 1
    @JeffSchaller that's exactly the problem. BTRFS won't allocate the copy to the same disk. However, there's no space on any other disk, so the redundancy cannot be satisfied, hence ENOSPC. Ideally, I'd move some of the copies from the smaller disks to to the larger one so the distribution would be less skewed.
    – PythonNut
    Commented May 31, 2017 at 16:59
  • I tried messing with btrfs resize, but at a given point BTRFS just refuses to put the relocated blocks on the larger device, for some reason.
    – PythonNut
    Commented Jun 11, 2017 at 22:11


You must log in to answer this question.

Browse other questions tagged .