Caching and Storage Tiering in Storage Spaces Direct

Disclaimer: This article talks about Windows Server 2016 TP5. Although it doesn't seem like this feature will change in the final version, there are, also, no guarantees that it won't.

Windows Server 2016 Datacenter Edition introduces Storage Spaces Direct (S2D), which enables building highly available and scalable storage systems with local storage. Storage Spaces Direct is an evolution of Storage Spaces, which means that it is an extension of the existing software defined storage stack for Windows Server. Storage Spaces Direct leverages SMB3 for all east-west traffic, including SMB Direct and SMB Multichannel, for low latency and high throughput storage.

If you have already used Storage Spaces in Windows Server 2012, it is important to realize that both the caching and storage tiering work very differently in S2D. Unlike Storage Spaces in Windows Server 2012, the cache is independent of the storage pool and volumes; in fact the system manages it automatically.

How Storage Spaces Tiering works in Windows Server 2012 R2

In Windows Server 2012 R2, you can only define SSD and HDD as Capacity Tiers. Essentially, this means that the SSD Tier is part of your total pool capacity.

Windows Server 2012 R2 Capacity Tiering

A scheduled task, then, runs periodically to optimize the placement of data in the storage tiers. In essence, this moves the most frequently accessed (hot) data up into the SSDs and least frequently accessed (cold) data to the HDDs.

Windows Server 2012 R2 Tiering Scheduled Task

How Storage Spaces Direct Tiering works in Windows Server 2016

Storage tiering is now done in real-time and is used for both the way data is written, as well as the media the data is written to.

With the introduction of the NVMe SSD, this model does not work as well; the downside being is that you usually have (NVMe + SSD + HDD) and with the previous model you were unable to differentiate between NVMe and SSD.

In Storage Spaces Direct, the Capacity Tier is split in two: Performance and Capacity.

The Performance Tier is part of the Capacity Tier and it is optimized for IO performance (hot data) while the rest of the Capacity Tier is optimized for Storage Efficiency (cold data).

This provides much more flexibility, as you can create volumes consisting only of performance tier, which provide highest IO performance and is backed by fast flash storage (cheapest IOPS). You can create volumes consisting only of capacity tier, which provides the best storage efficiency and is backed by hard drives (cheapest capacity). And you can create volumes consisting of both performance and capacity, that automatically keep the hottest data on flash storage and the coldest data on hard drive storage.

SSD + HDD

In a simple scenario where you have just SSD and HDD, Storage Spaces Direct does not put your SSD in your capacity tier. Instead, your HDDs will be your Capacity Tier and the SSDs will be your Caching Tier. This means that Hot Cold Data will be in your Performance Capacity Tier and the Cold Data will be in the rest of the Capacity Tier.

Storage Spaces Direct Tiering with SSD and HDD

NVMe + SSD + HDD

When you have NVMe in your storage configuration, Storage Spaces Direct automatically uses the NVMe device for the Caching Tier and the SSDs and HDDs for the Capacity Tier. While the NVMe is used for caching, the SSDs (in the Performance Capacity Tier) will contain the Hot Data and the HDDs will contain the Cold Data.

Storage Spaces Direct Tiering with NVMe, SSD and HDD

If you are interested in reading more about Storage Spaces Direct, I suggest you read Claus' Technet Blog Posts on this topic.