Q: What are the column and interleave values for a Storage Space?
A: Storage Spaces have several different layouts such as simple, mirror, and parity. All of these layouts write data across the disks in the Storage Pool.
When using the simple storage layout, data is simply written to disks in the Storage Pool with no resiliency of data; essentially data is striped across disks. Behind the scenes, there are two key attributes for a Storage Space (a virtual disk created in a Storage Pool):
- Columns - The column controls, for each stripe of data written, how many physical disks it writes to. For example, if the column size is set to 2, then each stripe of data written will write over 2 disks. If the column size is set to 4, then each stripe of data is written to 4 physical disks, which will improve performance.
- Interleave - The size of a stripe of data is based on the interleave value, which by default is 256 KB (but can also be modified) and is the amount of data written to each column during a stripe data write. The interleave value is multiplied by the number of columns value to get the total stripe data size (or stripe width). A Storage Space using the default interleave value of 256 KB that is using 2 columns has a stripe size of 512KB. Be aware, though, that all the disks in the Storage Pool can still be written to and used; each stripe of data written can use different disks.
It’s very common to customize the column and interleave values to really optimize the performance. Great performance improvements can be found going from 2 to 4 for the column value, providing you have enough physical disks in the Storage Pool.
If you use the Mirror storage layout, then each column of data would also be written to another disk; if using a three-way mirror, then each column of data would be written to two additional disks.
Note that the mirrored writes are not including in the column count, as a mirrored space with a column count of 2 uses 2 columns for the actual data written for each data stripe and an additional 2 disks
When using a Parity storage layout, the minimum number of columns is 3, which means you must have at least 3 disks as each stripe of data consists of two data columns and a parity column.
As the number of columns is increased for a Parity storage space, the number of columns used for data increases--for example, setting a column value of 4 for a parity space would use 3 columns for data and 1 for parity for each stripe of data.
It is also possible to use dual-parity in Windows Server 2012 R2, which would use two columns for parity for each stripe of data.
Microsoft has a great Storage Space performance paper which goes in more detail and is worth a read.