In Windows Server 2012 R2 there exists the capability to layer "storage tiering" on top of the Storage Spaces technology. As you may know, Storage Spaces is basically a way to pool together a bunch of commodity hardware -- some drives in a JBOD enclosure, or a bunch of cheap commodity drives directly attached to a server -- and have it become accessible as usable storage under Windows. Storage Spaces lets these pools of storage be fault tolerant, accessible for any Windows purpose and in general is cheaper than a SAN or NAS while being easier to use.
Windows Server 2012 R2 introduces tiering, which is a really cool feature where the operating system figures out exactly what files are being read from and written to often and will automatically move these files to the fastest storage it detects; this is usually going to be a solid-state drive (SSD) unless you have some funky RAM disk configuration going on, which I would suspect is not supported.
Curious about getting started with this feature? In this piece, I’ll walk through setting up an initial storage space pool, creating a tier enabled volume, and how to pin individual files to a faster tier and then remove them.
Initially configuring storage pools and disks
Here are the steps to get started. You might want to make sure you have the relevant disks or volumes connected to your server, either directly attached or through some other attachment method. You can use VHDs to create a storage pool, but you will not get the benefits of tiering because VHDs all look the same, from a performance standpoint, to the operating system.
- Start Server Manager.
- If you have not already, add the File and Storage Services role, and perform any necessary reboots that your machine might require to finish installing this role.
- Click on File and Storage Services in the left pane.
- Click on Create New Storage Pool. Follow the wizard to get your storage pool configured, adding at least two disks to the pool. If you are trying this in a lab, you can use VHDs, but you’ll have to use a PowerShell cmdlet, Set-PhysicalDisk –FriendlyName VHDFILE –MediaType SSD, to trick Windows into using it for tiering.
- Once the pool has been created and the wizard is finished, click Refresh within Server Manager. You should see the Media Type column change to reflect either HDD for traditional spinning media with heads and SSD for the newer silicon based disks. Do not proceed until you have verified that Windows sees these different media types; you may have to click Refresh multiple times or reboot. If you are doing this procedure in a lab with VHDs you will need to use that PowerShell cmdlet I mentioned in step 4 or tiering will not work at all, because Windows thinks all of your disks are of the same type with no differentiation.
- Select the new pool in Server Manager and click New Virtual Disk.
- Choose the storage pool you just created, and click Next.
- Add a friendly name for the virtual disk you are creating. Make sure to click the checkbox that is labeled "Create storage tiers on this virtual disk." Note that this is a one-way operation; you can’t go back to having untiered storage on this particular virtual disk once it is configured. You would need to blow it away and create a new one.
- Click through until you get to the provisioning page, and make sure you choose the Fixed option and click Next.
- On the "Specify the size of the virtual disk" page, click Maximum size for the Faster tier (SSD) section, and click Maximum size for the Standard tier (HDD) section. Click Create, and once the processing is done, click Close.
From here, you can simply create volumes/disks as you normally would, using this new virtual disk with tiering enabled for best performance.
Pinning files to faster SSD-laden tiers
You can also elect to pin certain files to the faster tier regardless of how often they are accessed. This can be useful if you know you always need quick access to a certain file but it is not used as often, on a relative basis, as some other files which the operating system might prioritize. This might also be, for virtual desktop infrastructure deployments, the parent VHD for a set of child differencing VHDs -- the parent ought to always be available on fast storage so that compiling the runtime VHDs happens more quickly even though the child VHDs themselves are the ones that get access a lot.
You can do this through PowerShell:
To pin a file to the SSD tier:
Set-FileStorageTier -FilePath <PATH> -DesiredStorageTier $tier_ssd
To un-pin a file from the SSD tier:
Clear-FileStorageTier –FilePath <PATH>
5 new developments in tiered storage
New Windows Server features are essential to storage
Experts weigh in on Windows Server 2012 storage features