Power users, content creators, and enterprise workstations frequently demand storage arrays that combine high throughput with protection against physical drive failures. While traditional motherboard RAID configurations require hardware lock-in and complex BIOS setup, Windows 11 includes a storage virtualisation technology known as Storage Spaces. While the standard Settings app provides basic setup, the graphical interface restricts access to advanced column counts, provisioning tiers, and sector alignments. Managing Storage Spaces through Windows PowerShell unlocks enterprise-grade control, enabling administrators to pool heterogeneous drives, provision mirror or parity spaces, and monitor drive health programmatically.
Understanding Storage Spaces Hierarchy and Terminology
Windows Storage Spaces organises physical storage into three architectural layers:
- Physical Disks: Raw SATA, NVMe, or USB mass storage devices attached to the host. Drives must be unpartitioned and unformatted to join a pool.
- Storage Pool: A collective virtual aggregation of multiple physical disks combined into a single reservoir of capacity.
- Virtual Disk (Storage Space): A virtual LUN partitioned out of the pool. Virtual disks can be formatted with NTFS or ReFS (Resilient File System) and configured with redundancy (Simple, Two-Way Mirror, Three-Way Mirror, or Parity).
Identifying Eligible Physical Disks in PowerShell
Before creating a pool, identify all unallocated physical disks available to your system:
Step 1: Launching PowerShell as Administrator
- Right-click the Start button on Windows 11 and select Terminal (Admin) or PowerShell (Admin).
- Query unpooled physical disks using
Get-PhysicalDisk:
Get-PhysicalDisk -CanPool $True
This command lists all drives that are currently blank, unpartitioned, and eligible to be grouped into a new storage pool. Note the FriendlyName or DeviceId numbers for reference.
Creating a New Storage Pool
To combine eligible disks into a unified storage pool, store target disk objects in a variable and pipe them into New-StoragePool:
# Select all eligible disks
$Disks = Get-PhysicalDisk -CanPool $True
# Create the pool
New-StoragePool -FriendlyName "DataPool01" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks $Disks
To verify the newly created pool, run:
Get-StoragePool -FriendlyName "DataPool01" | Format-List
Provisioning a Resilient Virtual Disk (Storage Space)
Once the storage pool is active, create a virtual disk with redundancy.
Option 1: Two-Way Mirror (Requires at least 2 disks)
A two-way mirror writes identical copies across two separate physical disks, offering rapid read performance and protection against a single drive failure:
New-VirtualDisk -StoragePoolFriendlyName "DataPool01" -FriendlyName "MirrorSpace" -ResiliencySettingName "Mirror" -NumberOfDataCopies 2 -ProvisioningType Fixed -UseMaximumSize
Option 2: Parity Space (Requires at least 3 disks)
Parity spaces stripe data alongside parity blocks across three or more disks, balancing fault tolerance with higher storage efficiency (similar to RAID 5):
New-VirtualDisk -StoragePoolFriendlyName "DataPool01" -FriendlyName "ArchiveSpace" -ResiliencySettingName "Parity" -ProvisioningType Fixed -UseMaximumSize
Initialising and Formatting the Virtual Disk
After provisioning the virtual disk, Windows treats it as a standard raw volume that must be initialised and assigned a drive letter:
# Initialise as GPT
Get-VirtualDisk -FriendlyName "MirrorSpace" | Get-Disk | Initialize-Disk -PartitionStyle GPT
# Create primary partition, assign drive letter, and format as NTFS
Get-VirtualDisk -FriendlyName "MirrorSpace" | Get-Disk | New-Partition -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -NewFileSystemLabel "SecureStorage"
Monitoring Pool Health and Replacing Failed Disks
PowerShell provides real-time health diagnostics to safeguard data integrity:
Step 1: Auditing Disk Health
Get-PhysicalDisk | Select-Object FriendlyName, OperationalStatus, HealthStatus, Usage
If a drive experiences bad sectors or communication timeouts, its OperationalStatus changes from OK to Degraded, Lost Communication, or Error.
Step 2: Replacing a Defective Drive
- Connect a new physical drive to your PC.
- Add the new drive to the existing pool:
$NewDisk = Get-PhysicalDisk -CanPool $True Add-PhysicalDisk -StoragePoolFriendlyName "DataPool01" -PhysicalDisks $NewDisk - Retire the defective disk:
Set-PhysicalDisk -FriendlyName "WDC_WD10EZEX-00WN4A0" -Usage Retired - Trigger rebuild and resynchronisation across the virtual disk:
Repair-VirtualDisk -FriendlyName "MirrorSpace" - Once the repair progress reaches 100%, safely unmount and remove the retired physical drive.
Utilising PowerShell to manage Windows 11 Storage Spaces provides bulletproof resilience and flexible volume administration directly from the command line.