Nuts and Bolts Storage Pools and Spaces Lead image: Lead Image © Nathalie Diaz, fotolia.com
Lead Image © Nathalie Diaz, fotolia.com
 

Storage pools and storage spaces in Windows

The Deep End

Storage spaces and storage pools combine a variety of storage technologies into a single logical unit, ensuring high availability and a choice of resiliency capability. By Marc Grote

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.

The disk for a storage pool can be formatted or unformatted, but the data on it will be deleted.
Figure 1: The disk for a storage pool can be formatted or unformatted, but the data on it will be deleted.

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].

The resiliency type you choose affects the available storage space and performance.
Figure 2: The resiliency type you choose affects the available storage space and performance.

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:

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.

You can see the physical drives and manage the storage spaces via the Control Panel.
Figure 3: You can see the physical drives and manage the storage spaces via the Control Panel.

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.

The storage pool appears as a local drive in Windows Explorer.
Figure 4: The storage pool appears as a local drive in Windows Explorer.

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

Windows Server 2012 R2

From Windows Server 2012 onward, you can use storage spaces in conjunction with the Microsoft Failover Cluster feature. SAS disks from disk units connected directly to cluster nodes are published using the Cluster Shared Volume (CSV) feature to house, for example, virtual machines with Hyper-V. The use of two-way mirroring and parity resiliency types in Windows Server 2012 R2 also enables high availability of hard drive storage.

Microsoft has enhanced the storage space feature in Windows Server 2012 R2 to include auto-tiering. This allows you to move heavily used storage blocks to fast memory, such as SSDs, and less heavily used storage blocks to SAS storage. According to various studies, storage spaces associated with CSV in Windows Failover clusters provide a comparable performance to 10GBps iSCSI SAN or 8GBps Fibre Channel at a much cheaper price [5].

Conclusions

Storage spaces and storage pools in Windows 8.1 provide a simple, reliable, and high-performance technology for combining a variety of storage technologies in a single logical unit, thus ensuring high availability of storage space using different resiliency methods. Storage capacities can be provided easily and efficiently by combining cheap and various mass memory storage technologies; this also allows storage space to be enhanced easily, with the help of thin provisioning.