I am currently using storage spaces on Windows Server 2012 R2. 2 disks (2*3TB) are installed with one virtual volume set to two-way mirroring. Since this is a very small server, it only has one SATA port left. For increasing the storage capacity, I am thinking about adding 1 more drive, but this time with a capacity of 6TB. According to Mixing disks of different sizes in a Storage Spaces pool , one might think that a possible way would be to 1. remove one of the 3TB drives, 2. add the new 6TB drive, 3. rebuild the storage space, 4. format the old 3TB drive and then 5. add it again to the pool. Would I then be able to access 6TB of capacity and still have two-way mirroring resiliency? Can't find any documents that cover this scenario.
Storage Spaces two-way mirror with odd number of disks
storage-spaceswindows-server-2012-r2
Related Solutions
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.
You are allowed to mix SAS and SATA drives on the same controller, however, you are not able to mix the two into the same array. This is why your attempt to establish the SAS drive by itself was successful.
-
Elija
CompTia A+ Certified
Best Answer
I figured it out myself using a virtual machine and several virtual disks. The mentioned procedure does work indeed and you can use the whole capacity while maintaining resiliency (I have written data to the whole virtual disk). Of course the order of the steps is important, and cleaning the old drive before readding it to the pool.