How to Configure Windows Server Storage Spaces Tiering for Automated SSD Caching

The Storage Performance Dilemma

When provisioning storage for a massive enterprise database, architects are faced with a brutal financial choice: speed versus capacity. You can build the server entirely out of ultra-fast NVMe SSDs, but a 50-Terabyte NVMe array will cost tens of thousands of dollars. Alternatively, you can build the server out of traditional, spinning 7200 RPM Hard Disk Drives (HDDs). This provides massive capacity for very little money, but the database will suffer from catastrophic I/O bottlenecks and unacceptable latency.

The ideal solution is to combine both. However, manually moving active database files to the SSD and moving cold, archived database tables to the HDD is an impossible administrative burden.

To automate this process, Microsoft introduced Storage Spaces Tiering into Windows Server. Storage Spaces acts as a software-defined storage hypervisor. It allows you to pool both fast SSDs and slow HDDs into a single, massive virtual volume. The intelligent background engine then constantly analyzes read/write patterns. If a specific block of data becomes “hot” (frequently accessed), Windows autonomously moves that block to the SSD tier. When the block cools down, it is seamlessly migrated back to the HDD tier, guaranteeing NVMe speeds for active data at the price of spinning disk capacity.

Step 1: The Hardware Prerequisites

Storage Spaces Tiering requires direct, low-level access to the raw disks.

  • You cannot use a hardware RAID controller (like a Dell PERC or HP Smart Array) configured in RAID mode, because the RAID card hides the SSD/HDD characteristics from Windows. You must configure the physical storage controller in HBA Mode (Host Bus Adapter) or IT Mode (Initiator Target) so that Windows can communicate directly with the raw disks via the SAS/SATA/NVMe protocol.
  • You need at least one SSD and at least one HDD, though for redundancy (mirroring), you generally need at least two of each.

Step 2: Pooling the Physical Disks

Unlike standard disk management, you must configure Tiering entirely via PowerShell. The graphical Server Manager interface cannot expose the granular tiering metrics.

First, identify your raw, unformatted disks:

Get-PhysicalDisk -CanPool $true

Next, group all these disks (both the SSDs and HDDs) into a single Storage Pool. We will name the pool Enterprise_Pool.

$PhysicalDisks = Get-PhysicalDisk -CanPool $true
New-StoragePool -FriendlyName "Enterprise_Pool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $PhysicalDisks

Step 3: Creating the Storage Tiers

Now that the disks are pooled, Windows needs to know which disks are fast and which are slow. While Windows usually detects the MediaType automatically, it is best practice to define the tiers explicitly.

New-StorageTier -StoragePoolFriendlyName "Enterprise_Pool" -FriendlyName "Fast_SSD_Tier" -MediaType SSD
New-StorageTier -StoragePoolFriendlyName "Enterprise_Pool" -FriendlyName "Capacity_HDD_Tier" -MediaType HDD

You have now created two logical buckets inside the massive storage pool.

Step 4: Provisioning the Virtual Disk

You must now carve a Virtual Disk (a LUN) out of the pool. This is the drive that will actually be formatted with NTFS or ReFS and presented to the users (e.g., the E: drive).

When creating the Virtual Disk, you explicitly bind it to both tiers, and you define exactly how much capacity to draw from each.

$SSD_Tier = Get-StorageTier -FriendlyName "Fast_SSD_Tier"
$HDD_Tier = Get-StorageTier -FriendlyName "Capacity_HDD_Tier"

New-VirtualDisk -StoragePoolFriendlyName "Enterprise_Pool" -FriendlyName "Tiered_Data" -StorageTiers @($SSD_Tier, $HDD_Tier) -StorageTierSizes @(500GB, 10TB) -ResiliencySettingName Mirror

This command creates a massive 10.5TB Virtual Disk that is mathematically composed of 500GB of lightning-fast solid-state storage and 10TB of cheap spinning disk. You then format this Virtual Disk normally using Format-Volume.

Step 5: The Automated Optimization Engine

Once the Virtual Disk is online, it is completely seamless to the end-user. When an employee saves a file to the E: drive, they have no idea whether it landed on the SSD or the HDD.

Behind the scenes, the Windows Server Storage Tiers Optimization task (which runs nightly at 1:00 AM by default) analyzes the heat map of the drive. It identifies which 1MB blocks of data are being read the most frequently, and silently shuffles those blocks onto the SSD tier.

If you have a massive financial audit occurring and you need to force the optimization engine to run immediately (perhaps during the middle of the day), you can trigger it manually:

Optimize-Volume -DriveLetter E -TierOptimize

Step 6: Pinning Critical Files (VDI or Databases)

While the automated heat map is brilliant, it is reactive. It waits for a file to become hot before moving it to the SSD. If you host a massive Hyper-V Virtual Machine (.vhdx) on this drive, and the CEO needs it to boot in 5 seconds every single morning, you cannot wait for the algorithm to react.

You can forcefully “Pin” a specific file permanently to the SSD tier, overriding the algorithm.

Set-FileStorageTier -FilePath "E:\Hyper-V\CEO_Desktop.vhdx" -DesiredStorageTierFriendlyName "Fast_SSD_Tier"

This command guarantees that every single block of that specific VDI file is locked into the NVMe storage, while all other files on the drive continue to float automatically between the tiers based on usage.

Conclusion

Purchasing massive, all-flash SAN arrays to store terabytes of cold, unaccessed data is an unjustifiable IT expense. By leveraging Windows Server Storage Spaces Tiering, infrastructure architects build software-defined hybrid volumes that dynamically adapt to corporate workloads. The ability to automatically cache hot data on NVMe drives while relegating cold archives to high-capacity spinning disks delivers enterprise-grade I/O performance at a fraction of traditional hardware costs.

RELATED POSTS

  • How to Configure Windows Server ReFS (Resilient File System) for Block Cloning and Data Integrity
  • How to Clear the Windows RSAT (Remote Server Administration Tools) Cache via PowerShell
  • How to Configure Microsoft Local Administrator Password Solution (LAPS) via Group Policy
  • How to Block USB Storage Devices Using Group Policy in Windows Server
  • How to Configure Windows Server DNS Policies for Geo-Location Traffic Routing
  • Get the best tech tips delivered straight to your inbox.

    Join thousands of readers mastering Apple, Google, Microsoft, and Linux.