Skip to content
daniel@cosenza:~/blog
WindowsHow-To July 11, 2026 2 min read

How to Set Up Storage Spaces for Redundant Storage on Windows

A complete walkthrough pooling multiple physical drives into a resilient virtual disk — Windows' built-in, software-defined answer to hardware RAID.

Storage Spaces pools multiple physical disks into flexible virtual disks with configurable redundancy — a software-defined alternative to hardware RAID controllers, built directly into Windows.

Step 1: identify the physical disks to pool

Get-PhysicalDisk

Disks intended for a storage pool should be unformatted/unpartitioned — Storage Spaces takes ownership of the raw disk, not an existing partition on it.

Step 2: create a storage pool from the physical disks

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

The pool itself is just a container — it doesn’t yet define redundancy behavior; that’s configured per virtual disk created from the pool.

Step 3: understand the resiliency options before creating a virtual disk

Simple    — no redundancy, striped across disks (fastest,
            no protection against a disk failure)
Mirror    — data duplicated across disks (protects against
            failure, at the cost of usable capacity)
Parity    — distributed parity like RAID 5 (better capacity
            efficiency than mirror, slower write performance)

Step 4: create a virtual disk with the chosen resiliency

New-VirtualDisk -StoragePoolFriendlyName "MyPool" -FriendlyName "MyMirrorDisk" -ResiliencySettingName Mirror -Size 500GB

Step 5: initialize and format the new virtual disk

Get-VirtualDisk -FriendlyName "MyMirrorDisk" | Get-Disk | Initialize-Disk -PartitionStyle GPT -PassThru | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS

Step 6: verify pool and virtual disk health

Get-StoragePool -FriendlyName "MyPool" | Get-VirtualDisk

Check the HealthStatus field — this is what you’d monitor going forward for signs of degradation.

Step 7: simulate and understand failure recovery, for Mirror or Parity configurations

With a redundant configuration, physically removing (or in testing, marking offline) one disk should leave the virtual disk accessible, though in a degraded health state — confirming this in a controlled test, rather than assuming it works, is worth doing before relying on it in production.

Step 8: add a replacement disk after a failure

Add-PhysicalDisk -StoragePoolFriendlyName "MyPool" -PhysicalDisks (Get-PhysicalDisk -CanPool $true)

Storage Spaces then repairs the redundant virtual disk onto the new physical disk automatically.

Step 9: monitor pool health going forward

Get-StorageJob
Get-PhysicalDisk | Select FriendlyName, HealthStatus, OperationalStatus

Why choosing resiliency level deliberately matters more than the setup commands

Simple, Mirror, and Parity trade off capacity, performance, and failure tolerance very differently — Simple offers no protection at all despite being the fastest and most space-efficient, while Mirror sacrifices roughly half of raw capacity for straightforward, fast-to-rebuild redundancy. Picking based on which trade-off actually matches your data’s importance and your available disk budget, rather than defaulting to whichever option a guide happened to demonstrate, is the actual decision that determines whether Storage Spaces protects you when a disk eventually fails.