(float, Dynamic) Defines the weight factor for balancing shards according to their predicted disk size in bytes. Defaults to 2e-11f. Raising this value increases the tendency of Elasticsearch to equalize the total disk usage across nodes ahead of the other balancing variables."
This rebalance based on disk_usage only works on 8.6+, also it takes into consideration the size of the shards, not the size of the disk.
Also, you have disks from different sizes, I don't think that is possible to have an equal distribution in this situation.
Your es_data_ssd_* nodes have disks with all the same size, it looks like that you are using them with the data_hot role and you can see that they are already balanced.
But your es_data_hdd_* nodes have disks with 2.1 TB and disks 3 times larger, if they have the same data role it will be not possible to have an equal distribution.
Elasticsearch takes in consideration the number of shards to balance and from 8.6 it also takes in consideration the size of the shard, but the size of the disk will only be taken in consideration when the watermark threshold are hit.
the this feature was introduced in 8.6 so, I understood when on only one disk hit the watermark this rebalance under disk size should be started. Yes all of hdd disks are used for warm phase, last time I have merged 9 disk into large one -> 3.