Storage Spaces Direct (S2D) Architecture
Storage Spaces Direct (S2D) is Microsoft’s software-defined storage solution that transforms industry-standard servers with internal drives into highly available, hyperconverged infrastructure. For IT organizations running Windows Server environments, S2D represents a fundamental shift away from expensive traditional storage area networks (SANs) toward flexible, cost-effective software-defined storage that integrates natively with Hyper-V and Failover Clustering. This guide explains how Storage Spaces Direct works, why it matters for enterprise infrastructure, and how to implement it in production environments.
What is Storage Spaces Direct?
Storage Spaces Direct is a feature in Windows Server Datacenter edition that clusters servers with internal drives into a unified storage pool shared across all nodes. Unlike traditional SANs that require external storage arrays connected via Fibre Channel or iSCSI, S2D creates a software-defined storage fabric using standard Ethernet networking and the drives already present inside each server.
At its core, S2D implements distributed storage where data is automatically mirrored or erasure-coded across multiple physical nodes. A 2-16 node cluster can be created using commodity x86 servers with SATA, SAS, or NVMe drives. The system automatically discovers all eligible drives, pools them into a shared resource, and creates fault-tolerant virtual disks that survive hardware failures.
S2D is the storage foundation for Azure Stack HCI, Microsoft’s hyperconverged platform, and has been production-ready since Windows Server 2016. The technology gained significant traction because it eliminated tens of thousands of dollars in SAN hardware costs while providing comparable or superior performance through intelligent caching and modern flash storage integration.
Key differentiators include the Software Storage Bus layer that creates direct drive-to-drive communication across cluster nodes without specialized storage protocols, and the Storage Bus Layer Cache that automatically binds the fastest drives (NVMe or SSD) as cache tiers for slower capacity drives (HDD). This architecture enables the system to deliver flash-level performance for hot data while using high-capacity HDDs for cold data—all managed automatically without manual tiering configuration.
The Problem Storage Spaces Direct Solves
Traditional enterprise storage architectures centered on SANs introduced several pain points that S2D directly addresses. Organizations typically spent $100,000-$500,000 on mid-range SAN systems that included proprietary storage controllers, specialized Fibre Channel switches, and vendor-specific management software. This capital expenditure was compounded by ongoing maintenance contracts that often cost 15-25% of the original purchase price annually.
Beyond costs, traditional SANs created operational complexity. Storage administrators needed specialized skills for LUN carving, zoning configuration, and multipathing setup. Capacity planning was rigid—expanding storage often meant forklift upgrades where the entire array was replaced rather than incrementally expanded. Heterogeneous environments with SANs from multiple vendors required different skillsets and management tools, increasing operational overhead.
The architectural dependency on external storage arrays also introduced availability risks. While SANs had redundant controllers, the storage fabric itself represented a single point of failure for the entire virtualization cluster. Additionally, performance bottlenecks could occur when storage controllers couldn’t keep pace with the aggregate demands of dozens of virtual machines.
Real-world impact is significant. A mid-size company deploying Hyper-V for 200 VMs might face $200,000 in SAN costs plus $40,000 annually for maintenance. With S2D, the same workload runs on $80,000 in commodity servers (already purchased for compute), with storage functionality included in the Windows Server Datacenter license cost. TCO reductions of 50-70% are common, with the added benefit of linear scalability—new nodes add both compute and storage capacity simultaneously.
For IT teams, S2D eliminates the cognitive overhead of managing separate compute and storage silos. Everything is managed through familiar tools: PowerShell, Windows Admin Center, and System Center Virtual Machine Manager. The hyperconverged model means adding capacity is as simple as adding a new server node rather than negotiating storage expansion with a vendor.
Core Architecture Components
Storage Spaces Direct is built on several integrated Windows Server technologies that work together to create a software-defined storage fabric. Understanding these components clarifies how S2D achieves fault tolerance, performance, and scalability without traditional SAN hardware.
Cluster Nodes form the foundation—typically 2-16 servers running Windows Server Datacenter edition joined into a single failover cluster. Each node must have compatible CPUs (all Intel or all AMD), and homogeneous configurations are strongly recommended. Nodes communicate over standard Ethernet networks, with 10 Gigabit or faster recommended for production workloads.
The Software Storage Bus is S2D’s breakthrough innovation. Instead of using external storage protocols like Fibre Channel or iSCSI, the Software Storage Bus creates a software-defined fabric that spans all cluster nodes. Each node can directly access drives in other nodes as if they were local, establishing a mesh topology where every drive is visible to every node. This eliminates the need for specialized storage switches and external connectivity.
Storage Bus Layer Cache automatically creates a caching hierarchy by binding fast media to slow media. When a cluster has both SSDs and HDDs, S2D automatically designates SSDs as cache devices and HDDs as capacity devices. All reads and writes initially go through the cache tier, with data then written through to capacity drives. For all-NVMe or all-SSD configurations, the fastest drives become cache while others provide capacity. This automatic tiering is transparent—administrators don’t manually configure which data lives where.
The Storage Pool is created automatically when S2D is enabled. All eligible drives across all nodes are pooled into a single logical resource from which virtual disks are carved. Drives must be locally attached (not via RAID controller), blank, and at least 4GB in size. S2D detects drive characteristics (media type, rotational vs. solid-state) and automatically classifies them.
Storage Spaces (Virtual Disks) are fault-tolerant volumes created from the storage pool. Administrators specify resiliency settings—three-way mirror, dual parity, or mirror-accelerated parity—and S2D automatically distributes data across nodes according to these policies. A virtual disk with three-way mirror ensures three copies of every data block exist on three separate nodes, surviving two simultaneous node failures.
ReFS (Resilient File System) is the recommended filesystem for S2D volumes. ReFS provides integrity streams that detect and optionally repair corrupted data, accelerated virtual disk operations for Hyper-V (VHDX creation, expansion, checkpoints), and efficient large-scale storage management. While NTFS is supported, ReFS unlocks S2D’s full performance potential.
Cluster Shared Volumes (CSV) enable multiple nodes to simultaneously read and write to the same virtual disk. Without CSV, only one cluster node can mount a volume at a time. CSV creates a unified namespace (like C:\ClusterStorage\Volume1\) that all nodes access concurrently, allowing VMs to move between nodes seamlessly. CSV is critical for Hyper-V live migration and load balancing.
Failover Clustering provides the coordination layer. Cluster service manages quorum, resource ownership, node membership, and failure detection. When a node fails, the cluster automatically fails over VMs and storage resources to surviving nodes. S2D relies entirely on Failover Clustering capabilities for orchestration—there’s no separate S2D control plane.
These components integrate deeply with the Windows kernel, leveraging SMB3 with SMB Direct (RDMA) for inter-node storage communication and existing Hyper-V integration for virtual disk I/O. The result is a cohesive software stack that eliminates external dependencies while providing enterprise-grade storage capabilities.
How Storage Spaces Direct Works
The S2D workflow begins with hardware preparation. Organizations assemble 2-16 identical servers with compatible CPUs, memory (4GB RAM per terabyte of cache drives minimum), and internal drives. Each server needs at least four drives, with at least two being SSDs for the cache tier. Drives must be presented to the operating system individually via an HBA (Host Bus Adapter) rather than through a RAID controller configured in RAID mode, even if the controller supports passthrough mode—true HBA mode or controller-less SATA/SAS connectivity is required.
Networking is established next. Each node needs at least two 10 Gigabit Ethernet NICs, with RDMA capability (iWARP or RoCE) strongly recommended for production. One network typically handles storage traffic (SMB Direct between nodes for data replication and CSV communication), while another handles management, live migration, and VM traffic. Physical switches must support the bandwidth—a 4-node cluster with 10GbE NICs requires switches with adequate backplane capacity to handle multiple simultaneous large data transfers.
Once servers are cabled and Windows Server Datacenter installed, administrators configure Failover Clustering through the Failover Cluster Manager GUI or PowerShell cmdlets. Cluster creation validates the hardware (CPU compatibility, network connectivity, drive configuration) and establishes the quorum. S2D requires a cluster witness (file share witness or cloud witness) for split-brain prevention in two-node configurations.
Enabling Storage Spaces Direct happens with a single PowerShell command: Enable-ClusterStorageSpacesDirect. This operation scans all nodes for eligible drives, claims them into the cluster storage pool, and establishes the Software Storage Bus connectivity. Within minutes, the storage pool is created and ready for volume provisioning. Behind the scenes, S2D configures the cache binding (mapping cache drives to capacity drives based on media type), establishes fault domains (chassis and rack awareness if configured), and initializes health monitoring.
Creating virtual disks uses the New-Volume cmdlet with parameters specifying size, resiliency, and filesystem. For a 1TB three-way mirror volume:
# Create a 1TB three-way mirror volume with ReFS
New-Volume -FriendlyName "VMs-Mirror" `
-FileSystem ReFS `
-StoragePoolFriendlyName "S2D-Pool" `
-Size 1TB `
-ResiliencySettingName Mirror `
-ProvisioningType Thin
# Add volume to Cluster Shared Volumes
Add-ClusterSharedVolume -Name "Cluster Virtual Disk (VMs-Mirror)"
S2D automatically distributes the mirror copies across fault domains. If the cluster has nodes in different chassis, it places copies in separate chassis to survive chassis failures. Data is striped across drives within each node for load distribution—no single drive handles all I/O for a volume.
Once volumes are added to CSV, they appear as C:\ClusterStorage\Volume1\ paths on all nodes. Administrators can now create VMs with VHDX files stored on these volumes, or configure Scale-out File Server roles to export SMB3 shares backed by S2D storage.
When data is written, the I/O path demonstrates S2D’s efficiency. A VM on Node 1 writes to its VHDX file on CSV. The write goes first to the local cache (SSD bound to the HDD where this data’s capacity copy resides). S2D simultaneously sends write operations to the other nodes holding mirror copies, also hitting their cache tiers first. Writes are acknowledged once cached on all replicas, providing low-latency confirmation. Background processes then destage cached writes to capacity drives asynchronously.
For reads, the cache tier is checked first. If data exists in cache (read cache for recently accessed data, or write cache for data not yet destaged), it’s served immediately with SSD or NVMe latency. Cache misses trigger reads from capacity drives, and the retrieved data is promoted to cache for subsequent access.
Fault tolerance is continuous and automatic. If a drive fails, S2D detects the failure within seconds via health monitoring. For a mirrored volume, remaining copies continue serving I/O without interruption. S2D initiates a repair job in the background, reading intact data copies and writing replacement data to other healthy drives to restore full redundancy. Repair jobs are throttled to prevent impacting production workloads, and administrators can monitor progress via Get-StorageJob.
Node failures trigger Failover Clustering mechanisms. VMs on the failed node are restarted on surviving nodes within minutes. Storage remains available since data replicas exist on at least two other nodes (for three-way mirror). S2D marks the failed node’s drives as offline but doesn’t immediately rebuild—it waits to see if the node returns (common for reboots during patching). If the node remains offline beyond a threshold, rebuild operations commence.
Deployment Models
Storage Spaces Direct supports three deployment models, each suited for different organizational requirements and infrastructure patterns.
Hyperconverged deployments run compute and storage on the same physical nodes. Hyper-V is installed directly on the cluster nodes, and VMs run on the same servers providing the S2D storage. This is the most common and recommended model because it maximizes resource density and simplifies management. A single cluster handles both storage provisioning and VM lifecycle management. For most organizations, hyperconverged is the default choice—purchase servers with sufficient CPU, memory, and drive capacity, enable S2D, and deploy VMs.
Converged (also called “disaggregated compute”) deployments separate storage and compute into distinct clusters. One cluster runs S2D and exports storage via Scale-out File Server (SoFS) over SMB3 shares. A separate Hyper-V cluster mounts these SMB shares and stores VM files there using Hyper-V over SMB. This model makes sense for organizations that need to scale compute and storage independently—perhaps doubling compute nodes while storage growth is modest, or vice versa. Management complexity increases since two clusters must be coordinated, but flexibility improves for specific workload patterns.
Disaggregated (or mixed) deployments combine hyperconverged and converged elements. Some nodes run both compute and storage, while dedicated storage-only nodes provide additional capacity or performance. This hybrid approach allows fine-tuned resource allocation but requires careful planning to maintain balanced utilization across node types.
For most scenarios, hyperconverged is preferred. The operational simplicity of managing one cluster, combined with the synchronized scaling of compute and storage (adding a node provides both simultaneously), aligns well with private cloud and VDI workloads where capacity growth is predictable.
Hardware Requirements
Successful S2D deployments depend on meeting specific hardware prerequisites, though the requirements are deliberately vendor-neutral to enable commodity hardware sourcing.
Servers must run Windows Server Datacenter edition (2016, 2019, 2022, or newer). Datacenter licensing includes unlimited virtualization rights, which is essential for hyperconverged deployments. Standard edition does not support Storage Spaces Direct. Clusters support 2-16 nodes, with 4 nodes being a practical minimum for production (enables three-way mirror with one node failure margin).
CPUs must be compatible across the cluster. All nodes need to be the same processor family—mixing Intel and AMD is unsupported, as is mixing different microarchitectures that lack compatible instruction sets. Physical CPU core count and memory capacity should be identical or very close across nodes for balanced resource allocation.
Memory capacity depends on caching requirements. Microsoft recommends 4GB of RAM per terabyte of cache-tier drives (SSDs in an SSD+HDD configuration). For hyperconverged deployments, add memory for the virtualization workload itself—64GB-512GB is typical for production clusters.
Drives require careful attention. Each server needs a minimum of four drives, with at least two being SSD or NVMe for caching. Drive types fall into three categories: NVMe (fastest, ideal for cache or high-performance capacity), SSD (cache or capacity depending on configuration), and HDD (capacity only, never cache). All drives must be locally attached—no external JBODs are supported. S2D automatically classifies drives by media type, so mixing is fine, but homogeneous configurations (all nodes with identical drive models and quantities) provide predictable performance.
Drive connection method matters. SATA and SAS drives must be connected via an HBA in non-RAID mode, meaning the controller presents individual drives to the operating system rather than aggregating them into hardware RAID volumes. NVMe drives connect directly via PCIe (either M.2 slots or PCIe adapters) and naturally present as individual devices. Using a RAID controller in passthrough or JBOD mode is discouraged—true HBA mode ensures S2D has full drive visibility for health monitoring and fault management.
Networking is perhaps the most critical component for S2D performance. 10 Gigabit Ethernet is the minimum, with 25GbE or faster preferred for larger clusters or high-throughput workloads. RDMA (Remote Direct Memory Access) technology via iWARP or RoCE (RDMA over Converged Ethernet) is strongly recommended—it reduces CPU overhead and achieves sub-millisecond latencies for inter-node storage traffic. Without RDMA, CPU utilization spikes during heavy storage activity as the kernel processes network I/O. Each node needs redundant NICs in separate fault domains (different PCIe buses) for availability.
Physical cabling follows best practices for high-availability networks: separate switches for redundancy, VLAN segmentation for traffic isolation (storage, management, VM traffic on different VLANs), and appropriate Quality of Service (QoS) policies to prioritize storage and live migration traffic.
Firmware and drivers must be current. Storage Spaces Direct is sensitive to drive firmware bugs and HBA driver issues. Microsoft maintains a Windows Server Catalog listing certified components verified for S2D compatibility. Purchasing validated hardware configurations from OEMs like Dell, HPE, or Lenovo reduces compatibility risk, though building custom configurations from catalog-certified components is fully supported.
Resiliency Options Explained
Storage Spaces Direct implements fault tolerance through resiliency settings that determine how data is protected against hardware failures. Unlike traditional RAID, these resiliency options operate at the cluster level, distributing copies across physical nodes rather than within a single server.
Three-way mirror creates three complete copies of all data, each stored on a different cluster node. When a write occurs, S2D writes to all three replicas before acknowledging completion. This provides the highest performance among resiliency options since reads can be served from any of the three copies, and the cluster survives two simultaneous node failures (or any two drive failures across different nodes). The storage efficiency is 33%—for every 1TB of usable capacity, 3TB of raw drive space is required. Three-way mirror is ideal for performance-critical workloads like SQL Server databases, VDI boot storms, or high-transaction applications.
Dual parity uses erasure coding similar to RAID 6, encoding data across at least four nodes so that any two nodes can fail without data loss. Parity calculations reconstruct missing data when reads occur on failed components. Storage efficiency is significantly better—typically 50-80% depending on cluster size and stripe width. For a 6-node cluster, dual parity achieves approximately 67% efficiency (6TB raw yields ~4TB usable). However, write performance is lower than mirroring because every write requires parity calculation, and read performance suffers during degraded states (drive or node failure forces parity reconstruction for affected data). Dual parity suits capacity-optimized workloads like file shares, archives, or backup targets.
Mirror-accelerated parity combines both strategies. Frequently accessed (“hot”) data resides in a three-way mirror tier for performance, while infrequently accessed (“cold”) data automatically migrates to a parity tier for space efficiency. S2D tracks access patterns and moves data between tiers in the background. This hybrid approach balances the performance of mirroring with the capacity efficiency of parity. A typical configuration might allocate 20-30% of a volume to mirror tier and 70-80% to parity tier. Mirror-accelerated parity works well for general-purpose file servers where a working set of hot files requires fast access, but the bulk of data is archival.
Fault domains extend resiliency beyond individual nodes. When servers are physically mounted in separate chassis or racks, administrators can configure chassis or rack awareness. S2D then distributes mirror copies or parity stripes across chassis/racks instead of just nodes. This protects against chassis-level failures (shared power distribution, backplane faults) or rack-level failures (top-of-rack switch issues, PDU failures). Fault domain configuration is set during cluster creation and influences replica placement—for example, a three-way mirror in a two-chassis cluster places at least one copy on chassis 1 and at least one on chassis 2, with the third copy distributed based on available capacity.
Choosing the right resiliency depends on workload characteristics:
- Mission-critical VMs, databases: Three-way mirror for maximum performance and availability
- File shares, departmental data: Mirror-accelerated parity for balanced performance and efficiency
- Archives, backups, cold storage: Dual parity for maximum capacity utilization
Resiliency can differ per volume—a cluster might host three-way mirror volumes for production SQL servers alongside dual-parity volumes for long-term log archival, all drawing from the same storage pool.
Performance Optimization
Storage Spaces Direct achieves enterprise SAN-equivalent performance through several intelligent mechanisms that optimize I/O paths, reduce latency, and aggregate bandwidth.
Cache tier binding is fully automatic. When S2D initializes, it categorizes all drives by media type (NVMe, SSD, HDD). The fastest media becomes the cache tier, bound to slower capacity media. In an all-flash configuration with NVMe and SATA SSDs, NVMe serves as cache while SATA SSDs provide capacity. In hybrid configurations with SSDs and HDDs, SSDs cache HDD capacity. The binding creates a many-to-many relationship—cache drives are shared across capacity drives, not dedicated one-to-one. All reads first check cache; cache hits return data at flash speed. All writes go to cache for immediate acknowledgment, then destage to capacity drives asynchronously.
The cache layer also provides read and write optimization. Read cache stores frequently accessed data, while write cache buffers writes for destaging. Write coalescing in cache reduces the number of individual write operations to capacity drives—multiple small writes are aggregated into larger sequential writes, significantly improving HDD efficiency. For all-flash configurations, write cache protects against write amplification on SSDs by absorbing small random writes in faster cache media before committing to capacity SSDs.
Storage tiering operates above the cache layer. Volumes can be created with explicit storage tiers that combine fast and slow media for different performance characteristics. Administrators specify how much capacity comes from the performance tier (SSDs) versus capacity tier (HDDs). While the cache layer is transparent and automatic, storage tiering creates distinct tiers that data moves between based on access frequency. This is particularly useful for cold storage workloads where only a small percentage of files are accessed regularly.
SMB Direct (RDMA) eliminates the CPU as a bottleneck for inter-node storage traffic. Traditional TCP/IP networking requires the CPU to process every packet—copy data from application memory to kernel memory, traverse the network stack, handle interrupts from the NIC. With RDMA (implemented via iWARP over TCP or RoCE over UDP), data transfers bypass the CPU entirely. The NIC directly reads from and writes to application memory via DMA, reducing latency from milliseconds to microseconds and freeing CPU resources for VM workloads. In S2D clusters, SMB Direct enables high-throughput storage communication without saturating CPU cores.
SMB Multichannel aggregates bandwidth across multiple NICs without manual NIC teaming. When a node has multiple RDMA-capable NICs connected to the storage network, SMB3 automatically stripes I/O across all available paths. If one NIC fails, traffic seamlessly fails over to surviving NICs without interruption. This provides both performance scaling and fault tolerance with zero configuration beyond enabling RDMA on the NICs.
Parallel I/O via CSV allows multiple nodes to simultaneously access the same virtual disk. When ten VMs on different nodes all read/write to the same CSV volume, those operations happen in parallel rather than serialized through a single coordinator node. CSV internally coordinates metadata operations but allows data I/O to proceed directly to the underlying virtual disk across nodes. This removes bottlenecks that plague traditional shared storage where all I/O funnels through a single storage controller.
VHDX optimizations provided by ReFS accelerate common Hyper-V operations. Creating new VHDX files, expanding existing ones, taking VM checkpoints, and merging checkpoint chains all benefit from ReFS features like block cloning (instantaneous creation of copy-on-write clones) and sparse VDL (Valid Data Length) handling. These optimizations can reduce VHDX operations that took minutes on NTFS down to seconds on ReFS.
To verify RDMA is functioning:
# Check RDMA capability and verify SMB Direct is active
Get-SmbClientNetworkInterface | Select-Object FriendlyName, RdmaCapable, RssCapable
# Monitor SMB Direct performance counters
Get-Counter "\SMB Direct Connection(*)\*"
For production clusters, ensure RDMA is enabled, jumbo frames (9000 MTU) are configured on storage networks, and QoS policies prioritize storage and live migration traffic to prevent congestion from other network activity.
Real-World Use Cases
Storage Spaces Direct excels in scenarios where Windows Server integration, hyperconverged simplicity, and cost efficiency align with organizational requirements.
Hyper-V virtualization is the primary use case. Organizations running 50-500 virtual machines on Hyper-V clusters benefit significantly from S2D’s native integration with CSV and Failover Clustering. VM storage latencies match or beat traditional SANs when SSDs are used, and the elimination of FC/iSCSI complexity simplifies troubleshooting. Live migration is faster over RDMA-enabled storage networks, and the ability to scale compute and storage together by adding nodes provides operational agility.
Virtual Desktop Infrastructure (VDI) workloads impose unique storage demands—thousands of simultaneous boots (boot storms), high mixed random I/O, and large storage footprints for persistent desktops. S2D handles these demands through the cache tier, which absorbs boot storm I/O, and three-way mirroring, which provides sufficient IOPS for interactive desktops. Organizations deploying Citrix Virtual Apps and Desktops or VMware Horizon on Hyper-V use S2D as the underlying storage tier.
SQL Server clusters on Windows Server utilize S2D for database storage. SQL Server Failover Cluster Instances (FCI) store database files on CSV volumes backed by S2D, providing automatic failover for database availability. SQL Server Always On Availability Groups also benefit, with replica databases stored on separate S2D volumes across nodes. The three-way mirror resiliency ensures database durability without requiring SQL-level synchronous replication overhead.
Scale-out File Server (SoFS) deployments use S2D to create highly available file shares. The SoFS role exports SMB3 shares from S2D volumes, which can then be consumed by Hyper-V clusters (Hyper-V over SMB), application servers, or user file shares. SoFS provides active-active file serving—multiple nodes simultaneously handle SMB requests, and sessions automatically failover during node failures. This is ideal for consolidating file server workloads with built-in high availability.
Branch office and edge deployments leverage S2D for local compute and storage at remote sites. A two-node S2D cluster with a file share witness hosted in the datacenter provides local VM hosting with automatic failover. This reduces WAN dependency for branch office applications—if the WAN link fails, local VMs continue running. Azure Stack HCI extends this model by adding cloud-based monitoring and management to branch deployments.
Development and test environments benefit from S2D’s rapid provisioning and snapshot capabilities. Creating new VMs from templates, taking frequent checkpoints, and cloning environments are all accelerated by ReFS block cloning on S2D volumes. Development teams get self-service provisioning through System Center VMM or Azure Arc without waiting for storage admin intervention.
Private cloud infrastructure built on System Center or Azure Stack HCI uses S2D as the storage layer. Multi-tenant IaaS platforms give tenants isolated VM workloads backed by shared S2D storage pools, with Storage QoS policies preventing noisy neighbor issues. Administrators over-commit storage capacity using thin provisioning, and automatic tiering ensures hot VM data gets performance while cold data compacts efficiently.
Organizations typically see successful S2D adoption in Windows-centric environments where Hyper-V is the hypervisor, Active Directory provides identity, and System Center or Windows Admin Center handles orchestration. S2D is less common in mixed environments heavily invested in VMware or Linux-based infrastructure, where alternatives like VMware vSAN or Ceph may provide better ecosystem fit.
Getting Started / Practical Guide
Setting up a Storage Spaces Direct cluster follows a structured workflow from hardware validation through volume creation. This section provides the complete command sequence for a basic production deployment.
Prerequisites
Before enabling S2D:
- All nodes running Windows Server Datacenter (2016+)
- Nodes joined to Active Directory domain
- Windows Server Failover Clustering feature installed on all nodes
- Networking configured (management, storage, live migration VLANs)
- RDMA verified on storage NICs
- All drives blank and unpartitioned
Step 1: Create the Failover Cluster
From an elevated PowerShell session on one node:
# Test cluster hardware and configuration
Test-Cluster -Node Node1, Node2, Node3, Node4 -Include "Storage Spaces Direct", Network, Inventory
# Create the cluster (assumes cluster name "S2D-Cluster1" with IP 10.0.0.100)
New-Cluster -Name S2D-Cluster1 -Node Node1, Node2, Node3, Node4 -StaticAddress 10.0.0.100 -NoStorage
# Configure cluster witness (file share or Azure cloud witness)
Set-ClusterQuorum -FileShareWitness "\\FileServer\ClusterWitness"
The Test-Cluster validation must pass storage and network tests. Common failures include RAID controllers not in HBA mode, mixed CPU architectures, or network configuration errors.
Step 2: Enable Storage Spaces Direct
# Enable S2D on the cluster
Enable-ClusterStorageSpacesDirect -PoolFriendlyName "S2D-Pool" -Verbose
# Verify the storage pool was created
Get-StoragePool -FriendlyName "S2D-Pool"
# Check cache configuration
Get-StoragePool -FriendlyName "S2D-Pool" | Get-PhysicalDisk | Select-Object FriendlyName, MediaType, Usage
Enable-ClusterStorageSpacesDirect discovers drives across all nodes, creates the storage pool, and configures cache bindings. This process takes several minutes and displays progress. Confirm that cache drives show Usage: Journal and capacity drives show Usage: Auto-Select.
Step 3: Create Volumes
For high-performance VMs (three-way mirror):
# Create a 1TB three-way mirror volume with ReFS
New-Volume -FriendlyName "VMs-Mirror" `
-FileSystem ReFS `
-StoragePoolFriendlyName "S2D-Pool" `
-Size 1TB `
-ResiliencySettingName Mirror `
-ProvisioningType Thin
# Add volume to Cluster Shared Volumes
Add-ClusterSharedVolume -Name "Cluster Virtual Disk (VMs-Mirror)"
For capacity-optimized storage (dual parity):
# Create a 10TB dual-parity volume for archival data
New-Volume -FriendlyName "Archive-Parity" `
-FileSystem ReFS `
-StoragePoolFriendlyName "S2D-Pool" `
-Size 10TB `
-ResiliencySettingName Parity `
-PhysicalDiskRedundancy 2 `
-ProvisioningType Fixed
Volumes appear in C:\ClusterStorage\ on all nodes after being added to CSV. Deploy VMs by storing VHDX files in these paths.
Step 4: Verify Health and Performance
# View storage pool health and capacity utilization
Get-StoragePool -FriendlyName "S2D-Pool" |
Select-Object FriendlyName, HealthStatus, OperationalStatus,
Size, AllocatedSize
# Check virtual disk health
Get-VirtualDisk | Select-Object FriendlyName, HealthStatus,
OperationalStatus, Size
# View physical disk status
Get-PhysicalDisk | Select-Object FriendlyName, HealthStatus,
OperationalStatus, MediaType, Size
# Monitor RDMA performance
Get-SmbClientNetworkInterface | Select-Object FriendlyName, RdmaCapable, LinkSpeed
Healthy clusters show HealthStatus: Healthy for all components. Monitor these cmdlets regularly or integrate with System Center Operations Manager for alerting.
Step 5: Deploy VMs
Once CSV volumes are available:
# Create a new VM on CSV volume
New-VM -Name "TestVM01" `
-MemoryStartupBytes 4GB `
-Generation 2 `
-Path "C:\ClusterStorage\VMs-Mirror\" `
-SwitchName "ExternalSwitch"
# Create VHDX and configure
New-VHD -Path "C:\ClusterStorage\VMs-Mirror\TestVM01\Virtual Hard Disks\TestVM01.vhdx" -SizeBytes 60GB -Dynamic
Add-VMHardDiskDrive -VMName "TestVM01" -Path "C:\ClusterStorage\VMs-Mirror\TestVM01\Virtual Hard Disks\TestVM01.vhdx"
# Make VM highly available
Add-ClusterVirtualMachineRole -VirtualMachine "TestVM01"
High-availability configuration enables automatic VM failover between nodes during maintenance or failures.
Configuration for Mixed SSD+HDD with Storage Tiering
For hybrid configurations requiring explicit tiering:
# View available storage tiers
Get-StorageTier -FriendlyName "*S2D-Pool*"
# Create a tiered volume (combines SSD performance + HDD capacity)
New-Volume -FriendlyName "Tiered-Volume" `
-FileSystem ReFS `
-StoragePoolFriendlyName "S2D-Pool" `
-StorageTiers @(
(Get-StorageTier -FriendlyName "*Performance*"),
(Get-StorageTier -FriendlyName "*Capacity*")
) `
-StorageTierSizes @(200GB, 1800GB)
This creates a 2TB volume with 200GB on SSDs and 1800GB on HDDs, with automatic tier migration based on access patterns.
Common Misconceptions
Several misunderstandings about Storage Spaces Direct persist in IT communities, often stemming from confusion with earlier Windows Server storage technologies or unfamiliarity with software-defined storage concepts.
Misconception: S2D is just software RAID. While S2D implements resiliency concepts similar to RAID (mirroring, parity), it operates at a fundamentally different level. Traditional software or hardware RAID aggregates drives within a single server, with no awareness of other nodes. S2D distributes data across multiple physical servers in a cluster, surviving entire node failures rather than just drive failures. A three-way mirror in S2D places copies on three separate physical machines, not three drives in one machine. This cluster-level resiliency is architecturally distinct from RAID.
Misconception: S2D requires identical hardware across all nodes. While homogeneity is strongly recommended for predictable performance and capacity, S2D technically supports heterogeneous configurations. Nodes can have different drive counts or capacities—S2D will allocate storage proportionally. However, the cluster’s resiliency is limited by the smallest node’s capacity, and performance can be unbalanced. In production, identical nodes simplify management and avoid surprises.
Misconception: S2D performance can’t match traditional SANs. Modern S2D deployments with NVMe cache and RDMA networking regularly exceed the performance of mid-range SANs. The cache layer provides sub-millisecond latencies for hot data, and the distributed nature of S2D allows aggregate throughput to scale linearly with cluster size. A 4-node S2D cluster with NVMe cache can deliver 500,000+ IOPS, matching or surpassing traditional storage arrays costing 5-10x more.
Misconception: S2D is Windows Server version of vSAN so they work similarly. While S2D and VMware vSAN are both hyperconverged storage solutions, their architectures differ significantly. S2D is deeply integrated with Windows kernel, using SMB3 for inter-node communication and CSV for shared volume access—technologies built into Windows Server. vSAN uses its own distributed storage protocol and integrates with ESXi’s hypervisor layer. S2D has no separate storage management appliance (vSAN requires vCenter), and S2D’s cache layer automatically binds all cache drives to all capacity drives rather than requiring manual cache configuration per disk group.
Misconception: S2D requires 10 Gigabit or faster networking to function. While 10+ GbE is strongly recommended, S2D technically operates on 1 Gigabit networks for small clusters or low-throughput workloads. Performance will be constrained by network bandwidth, particularly for replication traffic during writes and rebuild operations after failures. Production deployments should use 10GbE minimum, but lab environments or branch office two-node clusters with modest VM counts can function on 1GbE for proof-of-concept testing.
Misconception: S2D replaces backups. S2D provides availability and resilience against hardware failures, not data protection against logical corruption, ransomware, or accidental deletion. Organizations still need backup strategies (Veeam, Commvault, Azure Backup) to protect VM data stored on S2D volumes. S2D’s snapshot capabilities (ReFS snapshots) provide short-term point-in-time recovery but don’t replace comprehensive backup and disaster recovery planning.
Related Articles
For deeper understanding of technologies that integrate with or complement Storage Spaces Direct:
- Hyper-V High Availability Clusters - Learn how S2D integrates with Failover Clustering for VM high availability
- iSCSI vs NFS vs SMB Protocol Comparison - Understand SMB3’s role in S2D inter-node communication
- Distributed File System Architecture Guide - Explore distributed storage concepts underlying S2D
- Hardware vs Software RAID Performance Analysis - Compare RAID models to S2D’s cluster-level resiliency
- Ceph Storage Cluster Deployment - Alternative open-source distributed storage for Linux environments
Storage Spaces Direct represents a mature, production-ready approach to hyperconverged infrastructure for organizations standardized on Windows Server. By eliminating traditional SAN dependencies and leveraging commodity hardware with intelligent software, S2D delivers enterprise-grade storage capabilities at significantly reduced cost and complexity. For IT teams already managing Hyper-V environments, S2D provides a natural evolution path toward software-defined infrastructure without requiring wholesale platform changes or specialized storage expertise. The key to success is proper hardware selection (RDMA networking, sufficient cache media, validated components) and aligning deployment models with workload characteristics.