This blog post was originally written by Michael Schroeder & Thomas Cantwell.


Dell recently announced support for Windows Server® 2012 R2 Storage Spaces on the PowerVault MD1200 Series Storage. Storage Spaces is a software-defined storage technology in Windows and Windows Server that enables you to:

  • Virtualize storage by grouping industry-standard disks into storage pools.
  • Create virtual disks called storage spaces from the available capacity in the storage pools.

The Windows Server® 2012 R2 release marks the second iteration of Storage Spaces from Microsoft and includes new features like storage tiering, write-back caching and many others. In this blog, I’ll walk you through an example using PowerShell to configure your first pool and virtual disk with Storage Spaces on a PowerEdge™ R620 with PowerVault™ MD1220 direct attached storage.

Walkthrough Prerequisites


First, let’s list some of the MD1220 enclosure details- 

Get-StorageEnclosure | FL –Property Manufacturer, Model, FriendlyName, HealthStatus

Here we see the FriendlyName defined for the MD enclosure as well as the overall health status. In my configuration, there is one MD1220 attached to a single PowerEdge R620.

Next, we’ll list all the hard drive models and firmware versions.

Get-PhysicalDisk | FL –Property Manufacturer, Model, HealthStatus, FirmwareVersion


Note: The drive models and firmware levels displayed here are for informational purposes only and are meant to demonstrate how to retrieve firmware and health states for each drive.

The PERC H710 references the RAID 1 mirror configured for my Windows installation on the R620, in my case the OS is mounted as a VHD file to the PERC controller. This can be confirmed using the disk management snap-in (Storage Spaces isn’t supported behind RAID controllers, and can’t be used for bootable partitions).

Moving away from the locally configured resources, we see the remainder of the SAS drives presented in the MD enclosure that are available for pooled resources. We can check which of these drives are available for pooling by running the following:

Get-PhysicalDisk | Sort SlotNumber | Select SlotNumber, MediaType, FriendlyName, CanPool | FT -Autosize

Two of the drives listed do not return any slot information and are set to False for pooling. These represent the drives within the R620 for the operating system itself. The slot numbers indicate the drives located in the MD1220.

From our MD configuration, we have four SSDs (slots 0-3) and eight HDDs (slots 4-11) that we will add to a new pool for Storage Spaces to manage. The following cmdlet creates a new pool (Pool1) with all the hard drives with the CanPool property set to true.

New-StoragePool -FriendlyName Pool1 -StorageSubSystemFriendlyName "Storage Spaces*" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)

With the pool created and with a mix of SSDs & HDDs present, we’ll create our storage tiers:

Get-StoragePool Pool1 | New-StorageTier –FriendlyName SSDTier –MediaType SSD

Get-StoragePool Pool1 | New-StorageTier –FriendlyName HDDTier –MediaType HDD

With the pooling established, we’re ready to create our first virtual disk. For our example, we’ll create a tiered mirror space that is 250GB in size backed by a 1GB write-cache.

$SSD = Get-StorageTier –FriendlyName SSDTier

$HDD = Get-StorageTier –FriendlyName HDDTier

Get-StoragePool Pool1 | New-VirtualDisk –FriendlyName VD01M -ResiliencySettingName Mirror –StorageTiers $SSD, $HDD –StorageTierSizes 50GB,200GB –WriteCacheSize 1GB

If you’re interested to know which physical disks are actually housing the newly created virtual disk, run the following to blink those disks. This will light up the appropriate physical disks.

Get-PhysicalDisk –VirtualDisk (Get-VirtualDisk VD01M) | Enable-PhysicalDiskIndication

To then turn the lights out, run:  

Get-PhysicalDisk –VirtualDisk (Get-VirtualDisk VD01M) | Disable-PhysicalDiskIndication

Tip: The default resiliency settings will tend to span across as many physical disks as possible when creating virtual disks in order to improve performance but is configurable via PowerShell.

Although many tasks can be done within Server Manager, getting familiar with the PowerShell storage cmdlets is important to help finely tune and manage your Spaces configuration.


Storage Spaces in Windows Server® 2012 R2 is a bold new step in software defined storage. With this release, Storage Spaces delivers compelling new features like storage tiering, write-back caching and dual parity which are features typically found in traditional storage arrays. When combined with 12th Generation PowerEdge Servers and the PowerVault MD1200 Series arrays, Spaces can deliver cost-effective, scalable storage solutions for stand alone servers or highly available failover clusters, and is compatible with many workload types. Get started today by reviewing- Deploying Windows Server® 2012 R2 Storage Spaces on Dell PowerVault™ MD1200 and MD1220.



Additional Resources:

What's New in Storage Spaces in Windows Server 2012 R2

Step-by-step for Storage Spaces Tiering in Windows Server 2012 R2

Storage Cmdlets in Windows PowerShell

Storage Spaces Frequently Asked Questions (FAQ)