These are the document you are looking for:What are columns and how does Storage Spaces decide how many to use? and Storage Spaces - Designing for Performance and Storage Spaces: Understanding Storage Pool Expansion
I will start by quoting two things from the articles provided:
"Note Storage Spaces in Windows Server 2012 R2 and earlier by default uses the largest column count possible given the number of disks you have and the resiliency type you select." a
"To extend [a storage pool], it would need the appropriate number of columns available to accommodate the layout of the disk." b
In other words: If you add physical disks to a storage pool, Windows keeps the amount of columns in said pool. Each row of disks you add must provide one disk per column.
So, if you create a mirror with 2x3TB drives, the largest column count is 1. The column-to-disk correlation for that is 1:2. That makes a 3TB virtual disk.
Now, if you add the other two physical 4TB disks to the storage pool and add them to the virtual drive, Windows will add them without changing the column count. One disk will be added to the column and the other one to the mirror. Thus expanding the virtual disk by another 4TB. Your disk layout will look like this:
So no, you won't lose any space by using drives of mixed sizes in the same pool if you add them in pairs. Quite the opposite even! Because if you would have added them all at once, two things would have happened:
- Windows would have created two columns (see note above).
- Windows would have limited the available space. Probably by limiting each column to the size of the smallest column. [*]
Your layout would have looked like this providing only 6TB, instead of 7TB:
[*] Now, I am not sure how exactly the limitation works and how the new size is calculated. I assume it has something to do with how stripes are written to disks. Because if you write 512 KB of data on the virtual disk, each column parallely receives a stripe of 256 KB. And that would not be possible if one of the columns is full. So that is why I guess that all columns in a storage pool must have the same size. At least with the disks 3TB+3TB+4TB+4TB this is practically true, I checked.