for the future you can create a little cron script to avoid this issue. the data distribution should then be more regular, even if you delete or overwrite a lot. deppend on your workload use the right : # cron.daily / cron.weekly btrfs balance start -musage=0 -dusage=0 # releases empty blocks for more unallocated space with can used by future balance runs btrfs balance start -musage=25 -dusage=25 btrfs balance start -musage=50 -dusage=50 # cron.weekly / cron.monthly btrfs balance start -musage=90 -dusage=90 A full balance run is then only needed if you add a new device to the pool or replace a device with a bigger one. if you are more interesseted about the block usage of your current fs you can use this little script: cd /tmp wget https://raw.githubusercontent.com/kdave/btrfs-progs/master/btrfs-debugfs chmod +x btrfs-debugfs stats=$(sudo ./btrfs-debugfs -b /) echo "00-49: " $(echo "$stats" | grep "usage 0.[0-4]" -c) echo "50-79: " $(echo "$stats" | grep "usage 0.[5-7]" -c) echo "80-89: " $(echo "$stats" | grep "usage 0.8" -c) echo "90-99: " $(echo "$stats" | grep "usage 0.9" -c) echo "100: " $(echo "$stats" | grep "usage 1." -c) The btrfs-debugfs script is from the btrfs progs source and report the usage of each block group. The following script groups the result. This script should take less than a few minutes to complete. Or you can use btrfs-headmap with create a picture: https://github.com/knorrie/btrfs-heatmap Am Do., 10. Jan. 2019 um 19:21 Uhr schrieb Karsten Vinding <karstenvinding@xxxxxxxxx>: > > Thanks for the answer. > > I had already tried " > > btrfs balance start -musage=75 -dusage=75 /mnt > > It only reallocated 3 blocks. > > But after I had moved some data, I ran it with 90, and it realocated a lot more. > > I have a new balance running, and this time it seems to be doing its job. At least data is distributed more evenly across disks. > > Its not done yet, but its looking fine. > >
