The Software-Defined Storage Revolution
Historically, building a highly available storage array required purchasing a massive, expensive physical SAN (Storage Area Network) from a vendor like Dell or NetApp, complete with proprietary fiber-channel switches and redundant controllers.
Microsoft revolutionized this architecture with Storage Spaces Direct (S2D), introduced in Windows Server 2016 and refined in Windows Server 2019/2022. S2D is a software-defined storage (SDS) solution. It allows you to take two to sixteen standard, cheap, off-the-shelf 1U rack servers—each packed with standard NVMe and SATA hard drives—and link them together over a high-speed Ethernet network.
The Windows kernel intelligently abstracts all the local physical drives across all the servers and pools them into one massive, highly resilient virtual SAN. If a hard drive fails, or even if an entire physical server loses power, S2D instantly reroutes the data using parity or mirroring, guaranteeing zero downtime for your Hyper-V virtual machines.
Deploying this massive clustered architecture cannot be done easily through a GUI; it requires strict PowerShell execution.
Step 1: Validating the Hardware
Before Windows will allow you to build an S2D cluster, it must cryptographically verify that the network cards (ideally RDMA capable) and the hard drives (which must have zero RAID controllers attached; they must be passed through directly) meet strict latency requirements.
Assuming you have two servers (NODE-01 and NODE-02), open PowerShell as an Administrator and execute the validation test:
Test-Cluster -Node "NODE-01.corp.com", "NODE-02.corp.com" -Include "Storage Spaces Direct", "Inventory", "Network", "System Configuration"
This will generate a massive HTML report. If the report shows zero failures, you are cleared to proceed.
Step 2: Building the Failover Cluster
S2D requires an underlying Windows Server Failover Cluster (WSFC) to manage the heartbeat and quorum between the nodes.
Execute the following to build the cluster foundation (we assign it a logical name and a static IP address on the management network):
New-Cluster -Name "S2D-Cluster" -Node "NODE-01.corp.com", "NODE-02.corp.com" -StaticAddress 192.168.10.150 -NoStorage
(Note: We use the -NoStorage flag because we do not want the cluster to attempt to format the drives using traditional methods; we want S2D to handle it).
Step 3: Enabling Storage Spaces Direct
Once the base cluster is formed, the final step is to invoke the S2D engine. This is where the magic happens.
Enable-ClusterS2D -CimSession "S2D-Cluster"
This single command triggers a massive background operation. The Windows kernel reaches across the network, identifies every single raw, unformatted hard drive inside NODE-01 and NODE-02. It completely erases them, binds them together across the network fabric, and creates a massive, unified Storage Pool.
If you have NVMe drives and standard HDD drives mixed in the servers, S2D is intelligent enough to automatically configure the NVMe drives as a high-speed read/write cache, and the HDDs as deep-storage capacity.
Step 4: Creating a Cluster Shared Volume (CSV)
You now have a massive pool of raw storage, but you need a formatted volume to actually store your Hyper-V virtual machines.
To carve out a 5-Terabyte volume formatted with the Resilient File System (ReFS), execute:
New-Volume -StoragePoolFriendlyName S2D* -FriendlyName "VM_Storage_1" -FileSystem CSVFS_ReFS -Size 5TB
The command instantly creates the volume and mounts it simultaneously on both servers at C:\ClusterStorage\VM_Storage_1. You now have a fully operational, enterprise-grade software-defined SAN built entirely with standard hardware and PowerShell.