This topic discusses common questions about Storage Spaces on Windows Server 2012 R2, Windows Server 2012, Windows 8.1, and Windows 8. For basic information about Storage Spaces, see Storage Spaces Overview. For performance information, see Storage Spaces - Designing for Performance.
There are three ways to manage Storage Spaces and associated storage pools and drives:
In Windows Server 2012, the following are the recommended configuration limits:
Storage Spaces offers simple spaces, mirror spaces, and parity spaces, each with unique characteristics.
You can use commodity drives attached via Serial-Attached SCSI (SAS), Serial ATA (SATA), or USB. Storage layers that abstract the physical disks are not compatible with Storage Spaces. This includes VHDs and pass-through disks in a virtual machine, and storage subsystems that layer a RAID implementation on top of the physical disks. iSCSI and Fibre Channel controllers are not supported by Storage Spaces.
RAID adapters, if used, must be in non-RAID mode with all RAID functionality disabled. Such adapters must not abstract the physical disks, cache data, or obscure any attached devices including enclosure services provided by attached just-a-bunch-of-disks (JBOD) devices. Storage Spaces is compatible only with RAID adapters that support completely disabling all RAID functionality.
Storage arrays that provide direct connectivity to the physical disks they house and do not layer RAID implementations or abstract the disks in any way are compatible with Storage Spaces. Such arrays are also known as Just a Bunch of Disks (JBOD).
For Storage Spaces to identify disks by slot and leverage the array’s failure and identify/locate lights, the array must support SCSI Enclosure Services (SES) version 3.
To support deployments that require an added level of fault tolerance, Storage Spaces supports associating each copy of data with a particular JBOD enclosure. This capability is known as enclosure awareness. With enclosure awareness, if one enclosure fails or goes offline, the data remains available in one or more alternate enclosures.
To use enclosure awareness with Storage Spaces, your environment must meet the following requirements:
Storage Spaces on Windows Server 2012 R2 supports creating a clustered storage pool when using mirror spaces, parity spaces, and simple spaces. Windows Server 2012 doesn't support parity spaces on clustered storage pools. To cluster Storage Spaces, your environment must meet the following requirements:
Note: The SAS JBOD must be physically connected to all cluster nodes which will use the storage pool. Direct attached storage that is not connected to all cluster nodes is not usable for clustered pools with Storage Spaces.
Upon creating a storage space, certain fundamental properties are locked in place. These fundamental properties include the provisioning type (thin or fixed), the resiliency type (simple, mirror, or parity), the number of columns the storage space striping requires, and the striping interleave.
After creating a storage space, you can change properties that do not affect fundamental characteristics, such as the size of the storage space and its name.
When a disk failure occurs, Windows displays information on the disk failure in the following locations:
Physical disks often experience errors of varying severity, from errors that the disk can transparently recover from, without interruption or data loss; to errors that are catastrophic and can cause data loss. For more information, see How Storage Spaces responds to errors on physical disks.
If you are using the Storage Spaces item in Control Panel, replacing a physical disk is as simple as clicking the command to remove the old disk. After that, you can immediately disconnect the disk. In the background, Storage Spaces leverages resiliency to reconstruct your data. Disk removal has three prerequisites:
Get-PhysicalDisk -FriendlyName PhysicalDisk1 | Get-VirtualDisk
If you are using Windows PowerShell, you must perform following procedure to remove the old disk, assuming that you meet the prerequisites for removing a physical disk.
Open a Windows PowerShell session as an administrator.
Type the following command, replacing <diskname> with the friendly name of the disk:
Set-PhysicalDisk -FriendlyName <diskname> -Usage Retired
If the pool is clustered, you will need to run this command on the cluster node which has the cluster resource for the pool online.
Type the following command for each storage space that depended on the old disk, replacing <virtualdiskname> with the friendly name of the storage space:
Repair-VirtualDisk -FriendlyName <virtualdiskname>
If the pool is clustered, run this command on the cluster nodes that have the individual storage spaces’ cluster resource online and then run it again on the cluster node that has the pool’s cluster resource online.
Prior to performing step 5, you must wait for all active repair jobs to complete. To monitor the status of repair jobs, type the following command:
Get-StorageJob
Type the following command:
Remove-PhysicalDisk -FriendlyName <diskname>
Physically disconnect the old disk.
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.
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.
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).
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 756 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.
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
Simple (no resiliency)
1
1:1
Two-way mirror
1:2
2
Three-way mirror
1:3
5
Parity
3
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).
Storage Spaces provides advance notification of thinly provisioned storage spaces when the storage pool does not have enough capacity spread among a sufficient number of disks to continue to write new data. The default warning point is 70% capacity utilization. To learn when Storage Spaces will generate a warning, consider the following example.
Two of the disks have 1TB capacity and two have 2TB capacity. Because a two column, two-way mirror space needs four disks (number_of_disks = NumberOfColumns * NumberOfDataCopies), it will evenly consume all four disks as it writes new data. When capacity utilization of the two 1TB disks reaches 70%, Storage Spaces will warn of a low capacity condition. Even though the entire pool has 3.2TB free capacity, the thinly provisioned space will soon not be able to write any more data because the 1TB disks are nearly fully consumed.
You can easily keep individual storage spaces’ low capacity warning synchronized with each other and with the pool by following the guidance in the next section, “How do I increase pool capacity?” from the moment of creating the pool and through all subsequent expansions of the pool.
Storage Spaces can usually use the additional capacity from even a single additional drive. However, for optimal capacity utilization, consider the number of columns your storage spaces have and add disks in multiples of that number.
For example, consider a pool which has a four-column simple space, a one-column, two-way mirror space, and an eight-column parity space. The four-column simple space suggests you expand pool capacity in sets of four disks. The one-column, two-way mirror space suggests you expand pool capacity in sets of two disks (for mirror spaces, you have to multiple the number of columns by the number of copies). The eight-column parity space suggests you expand pool capacity in sets of eight disks. In this example, you would want to expand pool capacity in sets of eight disks as eight is a common multiple of the number of columns of each of the storage spaces in the pool.
Storage Spaces records information about pools and storage spaces on the physical disks that compose the storage pool. Therefore, your pool and storage spaces are preserved when you move an entire storage pool and its physical disks from one computer to another.
Windows Server 2012 starts storage that could potentially be shared with a cluster in a safe state. For Storage Spaces, that means the first time Windows connects to a storage pool, the pool starts as read-only and the storage spaces will start in a detached state. To access your data, you must set the storage pool to read-write and then attach the storage spaces.
These steps do not apply to Windows 8 – storage pools start as read-write and storage spaces start as attached.
Simple and mirror spaces and the data they contain automatically migrate from the Windows 8 Consumer Preview to the Windows 8. However, for parity spaces you must backup your data and delete the parity spaces. At this point, you may upgrade or perform a clean install of Windows 8. After the upgrade or clean installation is complete, you may recreate parity spaces and restore your data.
The health of each storage space is available only from the cluster node that has the cluster resource for the storage space in the online state. Use Failover Cluster Management to discover which node has the cluster resource for a storage space in the online state. Then use the Storage Pools section of the File and Storage Services role in Server Manager to view the health of the appropriate storage space.
You can also use the Get-VirtualDisk cmdlet on the node that has the cluster resource online to retrieve the storage space’s properties. The resiliency health of the storage space is noted in the storage space’s properties. To view the health status of a storage pool, use the Get-StoragePool cmdlet on the cluster node that has the cluster resource for the pool in the online state.
For the repair operation to complete successfully, the pool must have at least as much unused capacity as data to be repaired. If the storage space has a list of disks to use, then the unused capacity must reside on those disks. Unused capacity must reside on disks which do not already host an extent of the stripe to be repaired. Because repair happens over time, this requirement must be continuously fulfilled for a successful repair completion.
For a quick check on whether repair is successfully progressing, use the Get-VirtualDisk cmdlet to look at the storage space’s OperationalStatus. While repair is successfully progressing, OperationalStatus will be In Service. When repair successfully completes, OperationalStatus is OK. If repair is unable to continue, OperationalStatus returns to Degraded.
Since the storage space is thinly provisioned, allocation of new capacity occurs as needed. Once capacity is exhausted, there is no room to properly manage files on the storage space and there is a risk of data loss due to file corruption. To protect against that, Windows takes the storage space offline – removing the storage space from the view of anything that was writing and thereby keeping your files safe. Once the pool has more drives, you can bring the storage space back online and continue running.
When additional drives are not immediately available, you can try to just bring the storage space back online and get to your files until additional drives are available. However, sometimes applications, or the file system itself, may continue writing once the storage space is online. If that happens, then Windows’ safety measures will again protect your files by taking the storage space offline.
If additional drives are not immediately available and the storage space cannot remain online, then can still get to your files by using PowerShell to temporarily make your storage space read-only.
Get-VirtualDisk –Friendlyname name_of_your_space | Get-Disk | Set-Disk –IsReadOnly $true
Get-VirtualDisk –Friendlyname name_of_your_space | Get-Disk | Set-Disk –IsOffline $false
If you do that, then you will want to switch your storage space back to read-write once your storage pool has additional drives. You can use PowerShell to do that as well.
Get-VirtualDisk –Friendlyname name_of_your_space | Get-Disk | Set-Disk –IsOffline $true
Get-VirtualDisk –Friendlyname name_of_your_space | Get-Disk | Set-Disk –IsReadOnly $false
Finally, if you do not add more drives to the storage pool (the control panel will tell you the minimum number of drives to add), then Windows will protect the files which are already on the storage space by taking the storage space offline. Adding new drives to the storage pool provides the additional capacity the storage space needs. You will be able to bring your storage space back online and continue to copy new files into it.
Maheshkumar S Tiwari edited Revision 32. Comment: minor edit and formatting
Jason Gerend_MSFT edited Revision 28. Comment: Added a link to How does Storage Spaces respond to errors on physical disks?
Richard Mueller edited Revision 27. Comment: Replaced RGB values with color names in HTML to restore colors
Richard Mueller edited Revision 24. Comment: Fixed duplicate <a name> tag in HTML so TOC works, removed blank heading in HTML, added tags
Jason Gerend_MSFT edited Revision 20. Comment: Added discussion of enclosure awareness
Jason Gerend_MSFT edited Revision 16. Comment: Fixed support statement about failover clusters and RAID hardware - Storage Spaces is supported only on hardware that can completely disable RAID functionality.
Jason Gerend_MSFT edited Revision 7. Comment: Tweaked RAID adapter wording.
Richard Mueller edited Revision 6. Comment: Fix heading in HTML so it appears in TOC
Jason Gerend_MSFT edited Revision 5. Comment: Added discussion of columns based on community questions - made other fixes
How are columns defined? It seems to be the number of stripes. Can you manually control this when creating the virtual disk, or is it chosen automatically?
Also some more testing results and questions at social.technet.microsoft.com/.../c35ff156-01a8-456a-9190-04c7bcfc048e
So, um, why does a three-way "mirror" require five drives?
"Disk 7 has reached a logical block provisioning permanent resource exhaustion condition."
This happens with fixed (*not* thin provisioned) volumes. I don't understand why. Here's a thread about it: social.technet.microsoft.com/.../517d1f02-b619-4a3a-928f-1bd5e8fef5fe
What if I remove a single drive from the pool, take that drive and plug it into a different non-windows8 based machine; will that data be accessible? Or must I plug it back into the pool for it to the data to be accessible?
Hi gtfourdreams - if you remove a single drive from the pool and plug it into another computer that is not running Windows 8 the data won't be accessible.
(More updates coming soon - we'll try to answer the other questions then...)