How to Configure Storage Spaces Direct (S2D) on Windows Server 2025

Storage Spaces Direct (S2D) is Microsoft’s software-defined storage technology built into Windows Server 2025 that enables you to cluster servers with local storage — including NVMe, SSD, and HDD drives — into a highly available, scalable storage pool. Unlike traditional SAN or NAS storage, S2D eliminates the need for a shared storage fabric by using industry-standard servers with directly attached drives. This guide walks through the complete process of enabling and configuring S2D on a Windows Server 2025 Failover Cluster, from hardware prerequisites through volume creation, CSV configuration, and health monitoring.

Prerequisites

  • A minimum of 2 nodes (4 nodes recommended for production workloads)
  • Each node must run Windows Server 2025 Datacenter edition
  • Drives must be directly attached — SAS-attached NVMe, SSD, or HDD; no shared SAS enclosures spanning nodes
  • At least 2 drives per node for cache and capacity tiers
  • RDMA-capable NICs (iWARP or RoCE) recommended for low-latency east-west replication traffic; 25 GbE or higher strongly advised
  • All nodes must be joined to an Active Directory domain
  • Windows Server Failover Clustering feature installed and a cluster already created
  • Drives must be empty with no existing partitions

Step 1: Install the Failover Clustering and Storage Features

Before enabling S2D, ensure the Failover Clustering feature and related storage management tools are installed on every node in the cluster. Run the following on each node or use PowerShell remoting to install across all nodes at once.

# Install on a single node
Install-WindowsFeature -Name Failover-Clustering, FS-FileServer `
    -IncludeManagementTools -Restart

# Install across all cluster nodes simultaneously using remoting
$nodes = @("Node1", "Node2", "Node3", "Node4")
Invoke-Command -ComputerName $nodes -ScriptBlock {
    Install-WindowsFeature -Name Failover-Clustering, FS-FileServer `
        -IncludeManagementTools
}

Step 2: Validate the Cluster Configuration

Before creating the cluster, always run the cluster validation tests. These tests verify hardware compatibility, network configuration, and storage readiness. Do not skip this step in production deployments — Microsoft only supports S2D configurations that pass validation.

# Run full cluster validation against all prospective nodes
Test-Cluster -Node "Node1","Node2","Node3","Node4" `
    -Include "Storage Spaces Direct","Inventory","Network","System Configuration"

# Review the HTML validation report generated at:
# C:WindowsclusterReportsValidation Report .htm

Step 3: Create the Failover Cluster

Create the failover cluster before enabling S2D. Assign a cluster name and a static IP address for the cluster object in Active Directory. The -NoStorage parameter prevents the cluster from claiming any local disks at this stage, which is required when S2D will manage the storage.

# Create the cluster — do NOT let it claim storage yet
New-Cluster -Name "S2D-Cluster01" `
    -Node "Node1","Node2","Node3","Node4" `
    -StaticAddress "10.10.1.50" `
    -NoStorage

# Verify all nodes are online
Get-ClusterNode

Step 4: Enable Storage Spaces Direct

With the cluster operational, enable S2D using the Enable-ClusterS2D cmdlet. This single command performs several critical actions: it inventories all eligible drives, configures the storage bus layer, creates a storage pool named “S2D on <ClusteName>”, and sets up the cache layer automatically based on drive types detected (NVMe or SSD act as cache; HDD acts as capacity).

# Enable S2D — this automatically creates the storage pool
Enable-ClusterS2D -Confirm:$false

# Verify S2D is enabled and pool was created
Get-StoragePool | Where-Object { $_.FriendlyName -like "S2D*" }

# Check that all drives were claimed by S2D
Get-PhysicalDisk | Select-Object FriendlyName, MediaType, OperationalStatus, HealthStatus, Size

Step 5: Understanding S2D Storage Tiers

S2D automatically organises drives into performance tiers based on media type. In a typical all-flash cluster you will have a cache tier (NVMe or fastest SSDs) and a capacity tier (slower SSDs or HDD). S2D uses the cache tier as a read cache and write buffer to accelerate I/O to the capacity tier. You can inspect the configured tiers with the following:

# View automatically created storage tiers
Get-StorageTier | Select-Object FriendlyName, MediaType, ResiliencySettingName, Size

# View cache drives vs capacity drives
Get-PhysicalDisk | Sort-Object Usage | Select-Object FriendlyName, MediaType, Usage, Size

Step 6: Create Volumes with New-Volume

In Windows Server 2025, the recommended approach is to use New-Volume, which creates a virtual disk, partition, and volume in a single step. You specify the storage pool, resiliency type, and provisioning. For three-way mirror resiliency (recommended for performance workloads) you need at least 3 nodes; parity (similar to RAID 5/6) works on 3+ nodes with better capacity efficiency but lower write performance.

# Create a 2 TB thin-provisioned mirror volume for VM storage
New-Volume -StoragePoolFriendlyName "S2D*" `
    -FriendlyName "VMStorage01" `
    -Size 2TB `
    -ProvisioningType Thin `
    -ResiliencySettingName Mirror `
    -FileSystem CSVFS_ReFS

# Create a 5 TB parity volume for backup/archive data
New-Volume -StoragePoolFriendlyName "S2D*" `
    -FriendlyName "ArchiveData01" `
    -Size 5TB `
    -ProvisioningType Thin `
    -ResiliencySettingName Parity `
    -FileSystem CSVFS_ReFS

# List all volumes
Get-VirtualDisk | Select-Object FriendlyName, OperationalStatus, HealthStatus, Size, FootprintOnPool

Step 7: Add Volumes to Cluster Shared Volumes (CSV)

Cluster Shared Volumes allow all cluster nodes to access the same volume simultaneously, which is essential for live migration and high availability of virtual machines and other clustered roles.

# Add the created volume to CSV
Get-ClusterSharedVolume

# If not already added as CSV, add the disk
Get-ClusterDisk | Where-Object { $_.Name -like "*VMStorage01*" } | Add-ClusterSharedVolume

# The CSV will be accessible at:
# C:ClusterStorageVolume1 (or the friendly name path)
Get-ClusterSharedVolume | Select-Object Name, State

Step 8: Monitor S2D Health

Proactive monitoring is critical for S2D clusters. Windows Server 2025 includes rich health reporting through PowerShell and Windows Admin Center. Regularly check virtual disk health, physical disk status, and storage pool health to catch degraded conditions before they become failures.

# Check virtual disk health
Get-VirtualDisk | Select-Object FriendlyName, OperationalStatus, HealthStatus, `
    ResiliencySettingName, OperationalDetails

# Check all physical disks
Get-PhysicalDisk | Where-Object { $_.HealthStatus -ne "Healthy" } | `
    Select-Object FriendlyName, HealthStatus, OperationalStatus, Model

# Check storage pool health
Get-StoragePool -FriendlyName "S2D*" | Select-Object FriendlyName, HealthStatus, `
    OperationalStatus, Size, AllocatedSize, IsReadOnly

# View storage subsystem faults
Get-StorageSubSystem | Get-StorageHealthReport

# Monitor cache performance
Get-StoragePool -FriendlyName "S2D*" | Get-PhysicalDisk | `
    Where-Object { $_.Usage -eq "Journal" } | Select-Object FriendlyName, Size, HealthStatus

Step 9: S2D and Azure Stack HCI

Windows Server 2025 S2D is the foundational storage technology for Azure Stack HCI. If you plan to extend your on-premises S2D cluster to Azure Stack HCI, the configuration is nearly identical, with the addition of Azure Arc registration and Azure-managed billing. Existing S2D clusters on Windows Server 2025 can be registered with Azure Arc for hybrid management without rebuilding.

# Check S2D cluster readiness for Azure Arc registration
Test-Cluster -Include "System Configuration" -Node (Get-ClusterNode).Name

# Register the cluster with Azure Arc (requires Az.StackHCI module)
Install-Module -Name Az.StackHCI -Force
Register-AzStackHCI -SubscriptionId "your-subscription-id" `
    -ResourceGroupName "rg-s2d-cluster" `
    -Region "eastus"

Conclusion

Storage Spaces Direct on Windows Server 2025 delivers enterprise-grade software-defined storage using commodity hardware, removing the dependency on expensive SAN infrastructure. By following this guide, you have enabled S2D on a failover cluster, created resilient volumes with mirror and parity layouts, integrated them as Cluster Shared Volumes, and established health monitoring. For production environments, supplement this configuration with Windows Admin Center for a graphical health dashboard, implement regular Repair-VirtualDisk jobs for proactive repair of degraded volumes, and consider enabling BitLocker encryption on CSVs for data-at-rest protection. S2D’s tight integration with Hyper-V, Azure Stack HCI, and Windows Admin Center makes it the storage backbone of choice for modern Windows Server 2025 hyper-converged infrastructure deployments.