- Minor
2 issues as I had to replace some disks in a btrfs pool.
1) Unraid does not calculate the size of the pool with mismatched disk sizes correctly for some RAID levels (eg: raid1c3). In this tested example it uses a simple algorithm of total RAW space * 33% which only works if all disks are the same size.
For example if you have a pool of 4 disks, 500gb, 1000gb, 1000gb, 2000gb, the total usable space reported by unraid in the GUI is ~1500gb. The actual usable space is however only 1250GB (tested by filling disks as a real world test and also by using this calculator: https://carfax.org.uk/btrfs-usage/?c=3&slo=1&shi=1&p=0&dg=1&d=2000&d=500&d=1000&d=1000)
The reason for this is that once the smallest disk is filled, there is less than 33% total to store 3 copies of data. To understand imagine the 500gb disk is fully filled. Now on the other 3 disks available space is 750GB, 750GB, 1750GB. This allows any 2 disks to fail and the original 500GB of data is reconstructable.
However now we can only store an additional 750GB to preserve a 2 additional copy requirement. 750+500=1250 not 1500 as unraid calculates. This discrepancy can result in a user expecting to be able to add more data to a btrfs pool than is possible and confusion when it cannot. As you can see even with small disks a discrepancy of 250GB is non trivial, and would be larger as with larger mismatched disks.
2) Second issue is if replacing a disk, the only way to see the replacement happening is via terminal - btrfs replace status /mnt/btrfspooldirectoryhere
This replacement is not shown in the gui, instead a pool of 4 devices shows a 5 disk array with one disk labelled MISSING and there is no indication unraid is actually repairing the array. This can be confusing to anyone who has not used btrfs via CLI before. With large disks this process takes several hours and there is no indication anything is happening. Suggest improving the GUI to show this replacement actually happening.
Kind regards
P