Storage Spaces is Windows’ built-in software RAID layer, and in 2026 it remains one of the few ways to pool drives of mixed sizes into resilient volumes without third-party tools. Most guides stop at “create a pool and pick parity,” but the settings you choose during and after creation — provisioning type, column count, interleave, resiliency, and how you allocate the pool — determine whether your pool performs well or grinds to a halt during a rebuild. This guide prioritizes the settings that actually move the needle: resiliency type first, because it is nearly impossible to change later; provisioning and column count second, because they cap your performance and expansion flexibility; and everything else (file system, allocation unit size, Refs vs. NTFS) third.

If you want the short version: use Two-way mirror for general-purpose desktop pools, Simple striping only for throwaway scratch data, Parity only when capacity per dollar matters more than write speed, and always leave a spare drive’s worth of capacity unallocated. Everything below explains why.

Setting Recommended value Why
Resiliency type Two-way mirror (3+ drives); Parity only for bulk media Mirror survives two-drive loss on >=5 disks, sustains fast writes, rebuilds quickly
Provisioning Fixed (thin only if you know the risks) Thin-provisioned pools can throw errors mid-write when physical capacity runs out
Number of columns Match parity to 3/7/11 columns; mirrors don’t need tuning Parity layouts can’t add drives without re-creating unless you plan columns
File system ReFS on Windows Pro/Enterprise; NTFS on Home ReFS integrates with Storage Spaces integrity streams; NTFS is the Home fallback
Interleave (advanced) 64 KB (default) for mirrors; 256 KB for parity Reduces parity write penalty on HDD pools
Allocation unit size 16 KB for ReFS mirrors; 4 KB default for NTFS Suits large files typical of pooled storage
Unallocated capacity Keep one drive’s worth free in the pool Lets a degraded pool rebuild instead of failing
Automatic hardware repair On (Pro/Enterprise, ReFS) Repairs corrupted mirror copies on read instead of returning errors

Setting-by-Setting

Resiliency Type: Two-way Mirror

Set it to: Two-way mirror for any pool with 3 or more drives, sized so a single drive failure still leaves valid copies. Simple provides no protection at all; Three-way mirror needs seven drives minimum to make sense and burns 66% capacity. Parity spreads data plus parity math across drives: it reads well and stores efficiently (roughly (N-1)/N usable) but small random writes require read-modify-write cycles across every column, so write speeds on HDD pools can drop to double-digit MB/s during sustained writes.

Trade-off: Two-way mirror gives you 50% usable capacity. That is the price of write performance that stays consistent and rebuilds measured in hours, not days.

Where: Settings > System > Storage > Advanced storage settings > Storage Spaces, or the classic Control Panel > Storage Spaces. Choose Create a new pool and storage space, then set Resiliency type before clicking Create storage space.

Provisioning: Fixed, Not Thin

Set it to: Fixed. Thin provisioning presents a volume larger than the physical pool, and Windows does not gracefully handle running out of backing capacity — writes fail or the volume goes read-only until you intervene.

How to check: In Control Panel > Storage Spaces, the Storage spaces section lists each space with its provisioning type. PowerShell: Get-VirtualDisk | Select FriendlyName, ProvisioningType.

What to do: On the Create a storage space screen, set Provisioning to Fixed. If you must use thin, set Storage space size no more than 1.5x physical capacity and configure the pool to send a Windows notification at 70% usage via Server Manager (Pro) or a scheduled Get-StorageSubSystem | Get-StorageReliabilityCounter check.

How to undo: Provisioning cannot be changed in place. Back up, delete the space (Control Panel > Storage Spaces > Delete), recreate as Fixed, restore.

Number of Columns

Set it to: For parity spaces, set columns deliberately: 3 columns for 4–5 drive pools, 7 columns for 8–9 drives. For two-way mirrors, the default is fine — columns matter far less when every stripe is a full copy.

Why it matters: Column count is fixed at creation. A 3-column parity space cannot simply absorb an eighth drive later; you would need to add drives in multiples of three or migrate data to a new space. Wrong column counts also interact badly with the interleave size, amplifying the parity write penalty.

How to check: PowerShell: Get-VirtualDisk | Get-PhysicalDisk | Group Object -Property DeviceId or, more directly, (Get-VirtualDisk "SpaceName").NumberOfColumns.

What to do: Create the space with PowerShell when you want explicit control: New-VirtualDisk -StoragePoolFriendlyName "Pool Name" -FriendlyName "Data" -ResiliencySettingName Parity -NumberOfColumns 3 -ProvisioningType Fixed -Size 4TB, then format and mount via Get-Disk | Initialize-Disk and Disk Management.

How to undo: You can’t change columns in place. Plan before creating, or accept a data migration later.

File System: ReFS When Available

Set it to: ReFS (Resilient File System) on Windows Pro for Workstations, Enterprise, or any edition that exposes it; NTFS otherwise. ReFS pairs with Storage Spaces’ integrity streams to checksum data and auto-repair from the mirror copy when Automatic hardware repair is enabled.

Trade-off: ReFS drops some NTFS features (no file-level compression, no EFS encryption, smaller third-party recovery tool support). Home edition users never see it — NTFS is the only choice there, and you lose integrity streams entirely.

Where: Format dialog in File Explorer (right-click the space > Format) or PowerShell: Format-Volume -DriveLetter D -FileSystem ReFS -AllocationUnitSize 16384 -NewFileSystemLabel "PoolData".

Interleave (Advanced PowerShell Only)

Set it to: 65536 bytes (the default) for mirrors; 262144 bytes for parity on spinning-disk pools. The interleave is the stripe unit per drive, set via the -Interleave parameter on New-VirtualDisk — it is not exposed in the GUI.

Trade-off: Larger interleave reduces how many drives a single small write touches on parity spaces, softening the write penalty. Too large, and small files waste space and reads of tiny files still touch one drive. Leave mirrors at the default; the parameter matters almost exclusively for HDD parity.

Automatic Hardware Repair / Integrity Streams

Set it to: Enabled, on Pro/Enterprise with ReFS. Without it, a corrupted block on one mirror copy is returned as an error to the application; with it, Storage Spaces silently serves the good copy and rewrites the bad one.

How to check: PowerShell: Get-StorageSubSystem | Get-StoragePool | Select AutomaticClusteringEnabled, and for the space: Get-VirtualDisk | Select FriendlyName, OperationalStatus. Run Repair-VirtualDisk -FriendlyName "Data" if status shows Warning or Degraded.

What to do: Enable integrity at file level with Set-FileIntegrity -FileName "D:\Videos" -Enable $true, and set pool-wide repair with Set-StoragePool -FriendlyName "Pool" -RepairPolicy Serial for quieter rebuilds on desktop systems.

How to undo: Set-FileIntegrity -FileName "D:\Videos" -Enable $false. Repair policy reverts with -RepairPolicy Parallel.

By Hardware Tier

Low Tier: 2–3 HDDs, No SSD Cache

Use Two-way mirror with 2 or 3 drives, Fixed provisioning, NTFS (likely Home edition), and defaults for everything else. Do not use parity on spinning disks at this tier — three-drive RAID 5-style layouts with no cache have poor small-write behavior. Expect this pool to serve as capacity storage for media and archives, not as an active working drive. Keep the volume under 80% full so mirror copies have contiguous room.

Mid Tier: 4–6 Drives Plus Optional SSD Cache

Two-way mirror remains the right resiliency choice; add a dedicated fast SSD as a journaling device if your board has the SATA/NVMe lanes. PowerShell: create the pool with New-StoragePool, then New-VirtualDisk ... -ResiliencySettingName Mirror and bind a fast tier using New-StorageTier -MediaType SSD plus New-VirtualDisk -StorageTiers $ssdTier,$hddTier. This hybrid tiering puts hot data on SSD automatically. Format ReFS if your edition allows, 16 KB allocation unit. Leave one HDD’s capacity unallocated for rebuild headroom.

High Tier: 7+ Drives, NVMe Present

Three-way mirror on pools of 7 or more drives if data loss is unacceptable (you get ~33% usable capacity in exchange for surviving two simultaneous drive failures). Alternatively, run an 8–12 drive parity space with 7 or 11 columns and 256 KB interleave purely for bulk media, paired with a separate small mirror space on NVMe for active projects. Enable ReFS with integrity streams and automatic repair across all spaces. Use Server Manager or PowerShell to set -ThinProvisionedAlertThreshold 70 even on fixed spaces for capacity monitoring.

Common Mistakes

Using Parity on all-HDD pools for working data. What causes it: parity’s capacity numbers look attractive. How to check: sustained writes stall well below what the drives should manage; Task Manager > Performance > Disk shows low active time but high queue depth during writes. What to do: move active data to a mirror space; keep parity only for write-once archives. How to undo: back up, delete the parity space, recreate as mirror, restore — resiliency type can’t be converted in place.

Thin provisioning without capacity monitoring. What causes it: the GUI defaults Storage space size larger than the pool. How to check: Get-VirtualDisk | Select FriendlyName, Size, ProvisioningType versus Get-StoragePool | Get-PhysicalDisk | Measure Capacity -Sum. What to do: recreate as Fixed, or add physical drives before usage crosses the pool’s real capacity. How to undo: as above — provisioning type requires recreation.

Letting a degraded pool sit without spares. What causes it: no unallocated capacity remains after a drive dies, so the space can’t rebuild. How to check: Control Panel > Storage Spaces shows a Warning status; Get-VirtualDisk reports HealthStatus Warning. What to do: add a new physical drive immediately, then run Repair-VirtualDisk -FriendlyName "SpaceName". How to undo: not applicable — every day in Warning state is a day you’re one failure from data loss.

Wiping a pool via quick format instead of retiring it properly. What causes it: formatting the volume seems faster than pool removal. How to check: the space still appears in Control Panel > Storage Spaces afterward. What to do: delete the storage space first, then remove the pool via Remove-StoragePool -FriendlyName "Pool" or the Control Panel link, so drives return to standalone use. How to undo: recreate the pool; data is gone either way, so back up first.

FAQ

Can I change resiliency type after creating a storage space?

No. Resiliency type, column count, interleave, and provisioning type are all fixed at creation. The supported path is: back up the data, delete the space, create a new space with the desired settings, and restore. Storage Spaces has no in-place conversion.

Why is my parity space so slow to write?

Parity must read existing data, recalculate parity, and write both back for every modified stripe, multiplying I/O across all columns. On HDDs without an SSD journal, sustained small writes are the worst case. Fix it by moving active workloads to a mirror space, increasing interleave to 256 KB on HDD pools, or adding an SSD journal tier.

Does Storage Spaces work with drives of different sizes?

Yes, and mixed sizes are one of its strengths, though the pool uses capacity unevenly with mirrors (the smallest drive constrains how copies distribute). For parity spaces, try to keep drive sizes similar; one much larger drive wastes its extra capacity unless you plan columns carefully. You can add drives of any size later — the pool incorporates them for new allocations.

Do I need Storage Spaces at all if I just want a fast game drive?

Probably not. A single NVMe SSD or a straightforward hardware RAID/mirror from your motherboard’s controller is simpler and faster for game installs. Storage Spaces earns its keep when you need pooled capacity across multiple drives, protection against drive failure, or both. For a Steam library on one 2 TB NVMe, plain NTFS is the right answer.

Related guides