This month, my team of fellow IT Pro Technical Evangelists are publishing a series of articles on Why Windows Server 2012 R2? that highlights the key enhancements and new capabilities that we're seeing driving particular interest in this latest release of our Windows Server operating system in the field.  This article has been updated now that Window Server 2012 R2 is generally available. After reading this article, be sure to catch the full series at:

I’ve been speaking with lots of IT Pros over the past several weeks about the new storage improvements in Windows Server 2012 R2, and one feature in particular has gained a ton of attention: Automated Storage Tiers as part of the new Storage Spaces feature set. 

Automated Storage Tiers in Windows Server 2012 R2

In this article, I'll briefly discuss the benefits of Storage Tiers in Windows Server 2012 R2, and then I’ll step through the process of building an Automated Tiered Storage lab for the purpose of evaluating and demonstrating the functionality of Storage Tiers in a Windows Server 2012 R2 lab environment.

What are “Storage Tiers”?

Storage Tiers in "R2" enhances Storage Spaces by combining the best performance attributes of solid-state disks (SSDs) with the best cost:capacity attributes of hard disk drives (HDDs) together.  It allows us to create individual Storage Spaces LUNs ( called “Virtual Disks” – not to be confused with Hyper-V “Virtual Hard Disks” or VHDs ) that span SSD and HDD “tiers”.  Once a tiered LUN is created, Windows Server 2012 R2 analyzes disk IO requests on-the-fly and keeps the most frequently accessed data blocks located on speedy SSDs while moving less frequently accessed data blocks to HDDs – all transparently to applications and users.

If you're new to Storage Spaces, check out this introduction to Storage Spaces, which was originally introduced in Windows Server 2012, in the following article:

Even if you're not necessarily in a "Windows-centric" environment today, Storage Spaces may still be able to help you reduce your overall Storage Costs.  Check out one example of how Storage Spaces can reduce storage costs for VMware environments in the following article:

You can learn more about Storage Improvements in Windows Server 2012 R2 in Chapter 3 of our latest free eBook, Introducing Windows Server 2012 R2.

The Net Result?

Most organizations tend to frequently access only a small subset ( generally 15% – 20% ) of their overall data storage, and Storage Tiers provide an ideal solution to keep all data online and accessible while providing super-quick access to the most frequently accessed data – without administrators needing to manually move files between separate tiers of storage.  When using storage tiers, you only need to invest in enough SSD storage to hold your most frequently accessed data blocks, so this helps to dramatically reduce storage costs over investing in large amounts of SSDs.  In fact, the cost-performance ratio of tiered Storage Spaces also appears to obviate the need for expensive 15K SAS hard disks – by investing in a small amount of SSD for performance-driven needs and less-expensive high-capacity 7.2K hard disks for capacity-driven needs, I’m not seeing a practical need for more-expensive 15K disks – further helping to reduce costs.

But, I don’t have lots of SSDs for my Storage Tiers lab!

For production environments, you’ll definitely want to invest in SSDs and HDDs to gain the cost-performance benefits of Storage Tiers. But, when learning, evaluating and demonstrating Storage Tiers in a lab environment, you don’t necessarily need all these physical disks to just show Storage Tiers functionality.  Instead, with a Hyper-V VM, a set of Virtual Hard Disks and a bit of PowerShell “magic”, you can create a Storage Tiers demo lab environment. 

Here’s the steps to begin building a Storage Tiers demo lab without physical disks …

  1. Download Windows Server 2012 R2 installation bits
     
    Be sure to download the VHD distribution of Windows Server 2012 R2 for easiest provisioning as a virtual machine.
     
  2. In Hyper-V Manager, use the VHD downloaded in Step 1 above as the operating system disk to spin-up a new VM on a Hyper-V host.
     
  3. Once the new VM is provisioned, use Hyper-V Manager to modify the VM settings and hot-add 6 new virtual SCSI hard disks, as follows:
     
    - Add 3 250GB Dynamic VHDs ( these will be our simulated SSDs )
    - Add 3 500GB Dynamic VHDs ( these will be our simulated 7.2K HDDs )
     
    When completed, the settings of your VM should resemble the following:
     
    Hot-Adding Virtual SCSI Hard Disks
    Hyper-V Manager: Hot-adding virtual SCSI hard disks

Now … a bit of PowerShell Magic!

After hot-adding the virtual SCSI hard disks above, you may notice that the Windows Server 2012 R2 guest operating system running inside the VM sees the new VHDs as SAS disks with an “Unknown” media type, as shown below using the Server Manager tool.

Unknown Media Types
Virtual SCSI Hard Disks showing “Unknown” Media Type

Well, if the Windows Server 2012 R2 guest operating system doesn’t see these disks as “SSD” and “HDD” disks, it won’t know how to tier storage properly across them.  And, that’s where PowerShell comes in! Using PowerShell 4.0 in Windows Server 2012 R2, we can create a new Storage Pool and specifically tag the 250GB virtual hard disks with an SSD media type and tag the 500GB virtual hard disks with an HDD media type.  This will allow us to build a tiered storage lab environment with "simulated" SSD and HDD tiers. 

Note: If we have real SSD and HDD disks in a physical lab environment, the SSD and HDD disk media types would be detected automatically and shown in Server Manager.  In such a physical lab environment, we could simply use the Tasks > New Storage Pool menu choice in the Physical Disks box on the screen above to create a new Storage Pool instead of requiring the PowerShell code below. 

Let’s get started with PowerShell …

  1. Launch the PowerShell ISE tool ( as Administrator ) from the Windows Server 2012 R2 guest operating system running inside the VM provisioned above.
     
  2. Set a variable to the collection of all virtual SCSI hard disks that we’ll use for creating a new Storage Pool:
     
    $pooldisks = Get-PhysicalDisk | ? {$_.CanPool –eq $true }
     
  3. Create a new Storage Pool using the collection of virtual SCSI hard disks set above:
     
    New-StoragePool -StorageSubSystemFriendlyName *Spaces* -FriendlyName TieredPool1 -PhysicalDisks $pooldisks
     
  4. Tag the disks within the new Storage Pool with the appropriate Media Type ( SSD or HDD ).  In the command lines below, I’ll set the appropriate tag by filtering on the size of each virtual SCSI hard disk:
     
    Get-PhysicalDisk | Where Size -EQ 267630149632 | Set-PhysicalDisk -MediaType SSD # 250GB VHDs
     
    Get-PhysicalDisk | Where Size -EQ 536065605632 | Set-PhysicalDisk -MediaType HDD # 500GB VHDs

     
    If you created your VHDs with different sizes than I’m using, you can determine the appropriate size values to include in the command lines above by running:
     
    (Get-PhysicalDisk).Size
     
  5. Create the SSD and HDD Storage Tiers within the new Storage Pool by using the New-StorageTier PowerShell cmdlet:
     
    $tier_ssd = New-StorageTier -StoragePoolFriendlyName TieredPool1 -FriendlyName SSD_TIER -MediaType SSD
     
    $tier_hdd = New-StorageTier -StoragePoolFriendlyName TieredPool1 -FriendlyName HDD_TIER -MediaType HDD

At this point, if you jump back into the Server Manager tool and refresh the Storage Pools page, you should see a new Storage Pool created and the Media types for each disk in the pool listed appropriately as shown below.

New Tiered Storage Pool
Server Manager – New Tiered Storage Pool

How do I demonstrate this new Tiered Storage Pool?

To demonstrate creating a new Storage LUN that uses your new Tiered Storage Pool, follow these steps:

  1. In Server Manager, right-click on your new Tiered Storage Pool and select New Virtual Disk…
     
  2. In the New Virtual Disk wizard, click the Next button until you advance to the Specify virtual disk name page.
     
  3. On the Specify virtual disk name page, complete the following fields:
     
    - Name: Tiered Virtual Disk 01
     
    - Check the checkbox option for Create storage tiers on this virtual disk

    Click the Next button to continue.
     
  4. On the Select the storage layout page, select a Mirror layout and click the Next button.
     
    Note: When using Storage Tiers, Parity layouts are not supported.
     
  5. On the Configure the resiliency settings page, select Two-way mirror and click the Next button.
     
  6. On the Provisioning type page, click the Next button.
     
    Note: When using Storage Tiers, only the Fixed provisioning type is supported.
     
  7. On the Specify the size of the virtual disk page, complete the following fields:
     
    - Faster Tier (SSD): Maximum Size
     
    - Standard Tier (HDD): Maximum Size
     
    Click the Next button to continue.
     
  8. On the Confirm selections page, review your selections and click the Create button to continue.
     
  9. On the View results page, ensure that the Create a volume when this wizard closes checkbox is checked and click the Close button.
     
  10. In the New Volume Wizard select the default values on each page by clicking the Next button.  On the Confirm Selections page, click the Create button to create a new Tiered Storage Volume.
     
    Note: When using Tiered Storage, the Volume Size should be set to the total available capacity of the Virtual Disk on which it is created.  This is the default value for Volume Size when using the New Volume Wizard.

Storage Tiering Completed!

Congratulations! You now have a new Tiered Storage Virtual Disk and Volume.  Any disk IO that is written-to or read-from this new volume will automatically be processed across Storage Tiers based on frequency of access.  Keep in mind that this demo configuration is intended for functional demos only – because we’re not really using SSD disks in this demo configuration, you shouldn’t expect to be able to see the same performance as in a production environment that is using real SSD and HDD disks.

What if I know a particular file is always frequently accessed?

Great question! If there’s particular files in your environment that you absolutely know are always frequently accessed, such as a Parent VHD that is used for multiple linked Child VHDs via Differencing Disks, an IT Pro can specifically pin those files to the SSD tier.  In this manner, Windows Server 2012 R2 doesn’t have to detect frequent access to keep the data blocks associated with those files in the fastest tier – they will always be there!

To pin a file to the SSD tier, use the new Set-FileStorageTier PowerShell cmdlet, as follows:

Set-FileStorageTier -FilePath <PATH> -DesiredStorageTier $tier_ssd

To un-pin a file from the SSD tier, use the new Clear-FileStorageTier PowerShell cmdlet, as follows:

Clear-FileStorageTier –FilePath <PATH>

Additional resources you may also be interested in …