How to Configure Windows Server Storage Spaces Tiering via PowerShell

The Cost vs. Speed Dilemma

When building a massive file server or a Hyper-V cluster, you face an architectural dilemma. Solid State NVMe drives are incredibly fast, but they are very expensive (e.g., $1,000 for 2TB). Traditional spinning Hard Disk Drives (HDDs) are incredibly slow, but they are dirt cheap (e.g., $200 for 16TB). If you build a server entirely out of NVMe, you will run out of budget. If you build it entirely out of HDDs, your SQL databases will crawl.

Windows Server solves this using Storage Spaces Tiering. You install both NVMe drives and cheap HDDs into the same physical server. Storage Spaces merges them into a single, unified logical volume (e.g., the D: drive). The Windows kernel then runs a continuous background analysis algorithm. When it identifies “Hot” data (files that are accessed frequently, like active SQL databases or current Hyper-V VHDXs), it silently moves that data to the NVMe tier for maximum IOPS. When it identifies “Cold” data (like 5-year-old PDF archives), it silently demotes that data to the spinning HDD tier.

This gives you the blinding speed of NVMe combined with the massive capacity of cheap HDDs. Deploying this hybrid architecture requires precise PowerShell execution.

Step 1: Identifying the Physical Disks

First, you must identify the raw, unformatted drives sitting in the server.

Get-PhysicalDisk | Where-Object CanPool -eq $true | Select-Object FriendlyName, MediaType, Size

Ensure that Windows correctly identified the MediaType (e.g., it knows which drives are SSD and which are HDD). If it misidentified an SSD as an HDD, the tiering logic will fail.

Step 2: Creating the Storage Pool

You must grab all the raw drives and pool them together into a unified aggregate.

$PhysicalDisks = Get-PhysicalDisk | Where-Object CanPool -eq $true
New-StoragePool -FriendlyName "HybridPool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $PhysicalDisks

Step 3: Defining the Storage Tiers

Once the pool exists, you must explicitly define the two architectural tiers within it. We will create a Performance tier (SSD) and a Capacity tier (HDD).

# Create the Fast Tier
New-StorageTier -StoragePoolFriendlyName "HybridPool" -FriendlyName "PerformanceTier" -MediaType SSD -ResiliencySettingName Mirror

# Create the Slow Tier
New-StorageTier -StoragePoolFriendlyName "HybridPool" -FriendlyName "CapacityTier" -MediaType HDD -ResiliencySettingName Parity

(Note: We use Mirroring for the fast tier to maximize read/write performance, and Parity for the slow tier to maximize storage efficiency).

Step 4: Creating the Tiered Virtual Disk

Now, you carve out the actual volume that the end-users will see. You specify exactly how much of the SSD tier and how much of the HDD tier should be dedicated to this specific drive.

# Allocate 500GB of the fast NVMe storage and 5TB of the slow HDD storage
$FastTier = Get-StorageTier -FriendlyName "PerformanceTier"
$SlowTier = Get-StorageTier -FriendlyName "CapacityTier"

New-VirtualDisk -StoragePoolFriendlyName "HybridPool" -FriendlyName "TieredDisk_01" -StorageTiers @($FastTier, $SlowTier) -StorageTierSizes @(500GB, 5TB)

Step 5: Formatting and Mounting

Finally, format the new 5.5TB hybrid disk and assign it a drive letter so the operating system can use it.

Get-VirtualDisk -FriendlyName "TieredDisk_01" | Get-Disk | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem ReFS -NewFileSystemLabel "CorporateData" -Confirm:$false

Monitoring the Tiering Engine

The D: drive is now live. By default, the Storage Tiers Optimization task runs automatically via a scheduled task at 1:00 AM every night. It analyzes the heat map of all files and physically shifts the blocks between the NVMe and HDD platters.

If you need to force the optimization to run immediately during the day, you can execute:

Optimize-Volume -DriveLetter D -TierOptimize

Your server is now operating with extreme financial and architectural efficiency, dynamically optimizing performance without any further human intervention.

Get the best tech tips delivered straight to your inbox.

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