# Storage Spaces on Windows: software RAID without the marketing

> Build a pool, choose mirror or parity, understand why parity writes are slow, and know the cases where Storage Spaces is the wrong tool.

**Tested on**

- Build: 26300.9457 / 26100.33650
- Edition: Pro (26H2) / Server
- Architecture: x64
- Evidence: E1
- Verified: 2026-10-29

## The short answer

Storage Spaces pools physical disks and presents one or more virtual disks with **simple**, **mirror** or **parity** resiliency.

- **Mirror** is fast and survives a disk failure at 50% usable capacity.
- **Parity** uses capacity efficiently and is **slow for writes** — it computes parity on every write.
- **Simple** has no redundancy; it is a volume manager, not a RAID.

It is the right tool for bulk data on Windows. It is not a replacement for a hardware RAID controller in a database server, and it is not Storage Spaces Direct (which is a clustered, server-grade feature).

## Before you start

- Use **dedicated disks**. Adding a disk with data destroys it.
- Prefer **identical** disks per pool; mixed sizes waste capacity or reduce resiliency.
- Do not pool the **boot** disk.
- Have a backup. Resiliency protects against a dead disk, not against deletion or ransomware.

```powershell
Get-PhysicalDisk | Select-Object FriendlyName,MediaType,BusType,Size,CanPool,HealthStatus
```

`CanPool : False` usually means the disk holds a partition (including a stray recovery partition). Clear it deliberately, or use a different disk.

## Build a mirrored pool

```powershell
# 1. pool
$disks = Get-PhysicalDisk -CanPool $true
New-StoragePool -FriendlyName DataPool -StorageSubSystemFriendlyName 'Windows Storage*' -PhysicalDisks $disks

# 2. virtual disk (mirror, fixed provisioning is predictable)
New-VirtualDisk -StoragePoolFriendlyName DataPool -FriendlyName DataMirror `
  -ResiliencySettingName Mirror -Size 2TB -ProvisioningType Fixed

# 3. volume + filesystem
Get-VirtualDisk DataMirror | Get-Disk | Initialize-Disk -PartitionStyle GPT
New-Partition -DiskNumber (Get-VirtualDisk DataMirror | Get-Disk).Number -UseMaximumSize -DriveLetter D
Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel Data -Confirm:$false
```

For parity, change `-ResiliencySettingName` to `Parity`. Expect much lower write throughput and plan the workload accordingly.

## Resiliency settings that matter

| Setting | Effect |
|---|---|
| `PhysicalDiskRedundancy` | How many disks may fail (1 or 2) |
| `NumberOfColumns` | Stripes across disks; more columns = more throughput, fewer disks can fail |
| `Interleave` | Stripe unit size; defaults are usually fine |
| `ProvisioningType` | `Fixed` predictable, `Thin` over-commits |

Two-way mirror on two disks gives you one disk of usable capacity and survives one failure. Three-way mirror needs five disks for the same usable capacity. Do the arithmetic before buying disks.

## Check health and rebuilds

```powershell
Get-StoragePool | Select-Object FriendlyName,HealthStatus,OperationalStatus,Size,AllocatedSize
Get-VirtualDisk | Select-Object FriendlyName,ResiliencySettingName,HealthStatus,OperationalStatus
Get-PhysicalDisk | Select-Object FriendlyName,HealthStatus,OperationalStatus,Usage
```

A degraded virtual disk still serves data but has no redundancy left. Replace the failed disk and let the pool repair; do not remove a second disk "to see what happens".

## Where Storage Spaces is wrong

- **Boot volume** — not supported on client Windows.
- **Database with random writes** — parity is unsuitable; mirror or hardware RAID.
- **Mixed USB drives** — removable and unreliable; a single glitch can drop the pool.
- **Storage Spaces Direct** — that is a different feature requiring a cluster and certified hardware; do not follow S2D guides for a desktop pool.

> **Caution: Thin provisioning is a promise, not capacity**
>
> A thin virtual disk can be larger than the free space in the pool. When the pool fills, writes fail — often into an application that has no idea why. For a workstation pool, use fixed provisioning and know your real capacity.

## ReFS on a pool

ReFS on a Storage Spaces volume gives you integrity streams and faster repair in some scenarios, but:

- it is not bootable on client Windows;
- some applications (and some backup tools) behave differently;
- it is not a substitute for backups.

Use NTFS unless you specifically need ReFS features.

## Related

- [HDD: CMR vs SMR](https://winbook.fyi/en/hardware/storage/hdd-cmr-smr/)
- [Drive health](https://winbook.fyi/en/hardware/storage/health-smart/)
- [BitLocker and hardware encryption](https://winbook.fyi/en/hardware/storage/bitlocker-hardware-encryption/)

## Lab boundary

E1. The cmdlets are Microsoft-documented; the lab's virtual machines have not had a Storage Spaces pool created for this page, so no pool performance is claimed.

## Sources

- [Microsoft Learn — Storage Spaces overview](https://learn.microsoft.com/en-us/windows-server/storage/storage-spaces/overview)
- [Microsoft Learn — Storage Spaces Direct overview](https://learn.microsoft.com/en-us/windows-server/storage/storage-spaces/storage-spaces-direct-overview)
- [Microsoft Learn — Get-PhysicalDisk](https://learn.microsoft.com/en-us/powershell/module/storage/get-physicaldisk)
- [Microsoft Learn — ReFS overview](https://learn.microsoft.com/en-us/windows-server/storage/refs/refs-overview)

---

Source: https://winbook.fyi/en/hardware/storage/storage-spaces/
