Storage pools and storage spaces in Windows
The Deep End
Microsoft introduced storage pools and storage spaces with Windows 8 and Windows Server 2012. They help combine physical disks with different capacities and technologies, such as USB, SATA, and SAS to form logical units, known as storage spaces. You can then form storage pools with different resilience capabilities from these storage spaces.
For example, you could combine four USB drives, each with a capacity of 3TB, and two hard drives with SATA and SAS connections, each with a capacity of 1TB, to form a storage pool, thus achieving a gross storage capacity of 16TB. This storage can then be used to set up storage spaces with or without resilience capabilities. The maximum number of storage pools [1] on a system is unlimited; the maximum size of a storage pool is 4PB [2].
Storage spaces are virtual hard drives that are available to the system under a drive letter. These virtual hard drives are often referred to as LUNs (logical unit numbers), a name you often find for disks in storage area networks (SANs). When creating storage spaces, you can choose whether the failure of one or two disks will be tolerated, or whether the storage space will only be created in the form of a pool of disks without fault tolerance. This fail-safe measure is referred to as "resilience" and is largely equivalent to the well-known RAID levels.
Storage spaces can be created using a function called "thin provisioning," which makes more storage capacity than is actually present in the storage system available to the Windows system in conjunction with virtual hard drives. As soon as the capacity used by the PC exceeds a certain threshold, additional free space is made available from an existing storage pool. When creating a storage space, you can set the maximum storage capacity to 20TB, even if the connected disks only provide a gross capacity of 16TB. You can increase the capacity, as required, by adding more disks to the storage pool, without having to make changes to the storage space.
Creating Storage Pools and Spaces
After connecting the disks to the system for your storage pool, you can begin the setup by clicking on the Storage Spaces symbol in the Windows control panel and selecting Create a new pool and storage space . Next, you specify the disks intended for creating the storage pool (Figure 1). This can be unformatted or formatted. The data on the disks are, however, deleted and cannot be recovered, at least not using Windows tools.
Next, create a new storage pool by selecting Create pool , then create one or more storage spaces (Figure 2). For a storage space, you need to assign a unique name, allocate a drive letter, and select a filesystem – but only NTFS works in Windows 8.1. However, you can format storage spaces in Windows Server 2012 and later using ReFS (Resilient File System) [3].
Four Types of Failure Safety
The choice of resiliency type decides whether the system tolerates the failure of one or two disks but also determines the minimum number of required disks. Your choices are:
- Simple (No resiliency)
- Two-way mirror
- Three-way mirror
- Parity
With the Simple resiliency type, data is written across all the disks and you thus have no fault tolerance if a disk fails. At least one disk must be available in the storage pool. With two-way mirroring, the data is on at least two disks. This means the system is protected against data loss if a disk fails. However, available storage capacity is reduced by 50 percent when using two-way mirroring. At least two disks must be available in the storage pool. Windows writes three copies of the data for three-way mirroring, which means the system is protected against data loss if two disks fail at the same time. At least five disks must be available in the storage pool for this. The Parity resiliency type writes across all disks with redundancy information. At least three disks are required in a storage pool to protect against the failure of one drive.
The resiliency type selection affects both the available storage space and the performance. The read and write access speeds vary depending on the resiliency type, meaning that it is worth knowing the required I/O behavior of the data to be stored before making a decision about which resiliency type to use. A TechNet article [4] provides a decision-making tool to determine which resiliency type is suitable for which data applications.
Selecting the Parity resiliency type reduces the available storage space by 33 percent; however, the size of the storage pool can exceed the capacity of the currently available hard drives through the use of thin provisioning. In this example of three disks, each with 127GB capacity, the maximum capacity of the storage pool is 10TB (Figure 3). The disk capacity can be expanded dynamically by adding additional hard drives. When adding disks to a storage pool, recalculating and distributing the data and parity information can take a good deal of time, depending on the resiliency type, so system performance is affected during the recalculation. This also applies to the failure of a disk and its replacement with a new one. According to Microsoft, the data is recalculated faster than if you use RAID technology.
By clicking the Create a storage space link, you can format the storage space, set it up, and use it to store data. After creating the storage space, you can create more, add disks, or rename existing storage spaces.
The Physical drives section provides an overview of the used disk space. Depending on the resiliency type used, disks can be removed without affecting ongoing operations. For example, in our lab, I added another disk to a parity resilience type storage space with three disks. This disk can be removed at any time in storage space management.
In Windows Explorer, you see the storage space as a normal disk with a maximum capacity of 10TB (Figure 4), although the current physical media capacity of the disk is much lower. You can use the Windows event viewer or storage space management in the Control Panel to monitor the available storage space.
Management Using PowerShell
Numerous PowerShell cmdlets help manage storage pools and storage spaces in Windows 8 and Windows Server 2012 and higher. For example, you can set up the storage pool and associated storage space using the following commands:
$PhysicalDisks = Get-StorageSubSystem -FriendlyName \ "Storage Spaces*" | Get-PhysicalDisk -CanPool $True
This command initially identifies all physical disks that are eligible for a storage pool and writes the results to the $PhysicalDisks
variable. The next commands (Listing 1) create a new storage pool called Storage Pool 01
; create a storage space using the same name with a capacity of 10TB using thin provisioning; use the parity resiliency type; then proceed to format the disk.
Listing 1
Creating a Storage Pool and Space in PowerShell
New-StoragePool -FriendlyName "Storage Pool 01" \ -StorageSubsystemFriendlyName "Storage Spaces*" \ -PhysicalDisks $PhysicalDisks | New-VirtualDisk \ -FriendlyName "Storage Pool 01" -Size 10TB \ -ProvisioningType Thin -ResiliencySettingName parity | Initialize-Disk \ -PassThru | New-Partition -AssignDriveLetter \ -UseMaximumSize | Format-Volume
Buy this article as PDF
(incl. VAT)