Besides offering resiliency to drive failures, Storage Spaces also offers increased performance by striping data across multiple disks. Storage Spaces describes a stripe via two parameters, NumberOfColumns and Interleave.
- A stripe represents one pass of data written to a storage space, with data written in multiple stripes (passes).
- Columns correlate to underlying physical disks across which one stripe of data for a storage space is written.
- Interleave represents the amount of data written to a single column per stripe.
The NumberOfColumns and Interleave parameters, which are accessible via Windows PowerShell or WMI, determine the width of the stripe (stripe_width = NumberOfColumns * Interleave). The stripe width determines how much data and parity (in the case of parity spaces) Storage Spaces writes across multiple disks to increase performance available to apps.
Example 1: A Two-Column Simple Space
A simple example is a two-column simple space, which offers striping with no resiliency.
For the first stripe of data in this example, Storage Spaces writes 256 KB (the default Interleave value) to the first disk (column) in the storage pool, then 256 KB of data to the second disk in the pool. This yields a stripe width of 512 KB (2 columns * 256 KB interleave).
Example 2: A Three-Column Parity Space
Another example is a three-column parity space (with a 256 KB stripe interleave), the simplest form of a parity space.
For the first stripe of data in this example, Storage Spaces writes 256 KB of data to the first disk (column), 256 KB of data to the second disk, and 256 KB of parity to the third disk. This yields a stripe size of 768 KB (3 columns * 256 KB of interleave). As more data is written to the parity space, it rotates the column for the parity information among all three disks.
Example 3: A Two-Column Two-Way Mirror Space
Another example is a two-column two-way mirror space. Mirror spaces add a layer of data copies below the stripe, which means that a two-way mirror space duplicates each individual column's data onto two disks.
For the first stripe of data in this example, Storage Spaces writes 256 KB of data to the first column, which is written in duplicate to the first two disks. For the second column of data, Storage Spaces writes 256 KB of data to the second column, which is written in duplicate to the next two disks. The column-to-disk correlation of a two-way mirror is 1:2; for a three-way mirror, the correlation is 1:3.
You can control the number of columns and the stripe interleave when creating a new storage space by using the Windows PowerShell cmdlet New-VirtualDisk with the NumberOfColumns and Interleave parameters.
Each type of storage space has a minimum number of stripe columns which translates to a minimum number of physical disks, given their column-to-disk correlation (below).
Resiliency type |
Minimum number of columns |
Column-to-disk correlation |
Minimum number of disks |
Maximum column count |
Simple (no resiliency) |
1 |
1:1 |
1 |
N/A |
Two-way mirror |
1 |
1:2 |
2 |
N/A |
Three-way mirror |
1 |
1:3 |
5 |
N/A |
Single Parity |
3 |
1:1 |
3 |
8 |
Dual Parity | 7 | 1:1 | 7 | 17 |
Due to striping, a storage space simultaneously allocates capacity from as many disks as its stripe requires. Therefore, when increasing pool capacity, you can usually achieve optimal pool capacity utilization when you add disks in multiples of the number of disks the storage space needs. For example, adding disks in multiples of four might provide optimal capacity utilization for a pool comprised of two-column, two-way mirror spaces (2 columns + 2 data copies = 4 disks per stripe).
Ref: http://social.technet.microsoft.com/wiki/contents/articles/11382.storage-spaces-frequently-asked-questions-faq.aspx#What_types_of_drives_can_I_use_with_Storage_Spaces