Skip to content

Storage Spaces & ReFS Resilient Volume Provisioning

Windows Server Storage Spaces can pool supported disks and provide mirror or parity resiliency. ReFS can detect file-data corruption when integrity streams are enabled; it can repair corruption only when a resilient mirror or parity space has a good alternate copy. These features do not replace a separate, tested backup. Integrity streams can also affect performance, so select the protected data and validate the workload.


Storage Spaces Resilience Profiles

Resilience ModeMinimum DisksToleranceDescription & Recommendation
Simple (Stripe)10 failuresHigh throughput, zero fault tolerance. Best for temp workloads.
Two-Way Mirror21 disk failureWrites two copies and can tolerate one disk failure. Confirm application and hardware support before using it for latency-sensitive workloads.
Three-Way Mirror52 disk failuresWrites 3 copies of data. Maximum uptime for cluster shared volumes.
Parity31 disk failureHigh capacity efficiency. High compute overhead during random writes.

Step 1: Discover Physical Disks and Create a Storage Pool

01

Discover Disks and Pool Storage

Storage Pool

Inspect unallocated physical disks capable of pooling and aggregate them into a centralized Storage Pool using PowerShell:

Terminal window
# Inventory eligible disks. Confirm identity and capacity before selecting any.
Get-PhysicalDisk -CanPool $True |
Select-Object FriendlyName, SerialNumber, UniqueId, DeviceId, MediaType,
OperationalStatus, HealthStatus, Size, CannotPoolReason

Step 2: Create a Mirrored Virtual Disk

02

Provision Resilient Virtual Disk

Virtual Disk

Create a two-way mirror and choose an explicit size that fits the pool’s usable mirrored capacity. Leave free capacity for future growth and repair operations. A mirror tolerates a disk failure within its layout; it does not protect against deletion, malware, or loss of the whole server.

Terminal window
# Set this to a size below the pool's usable mirrored capacity.
$VirtualDiskSize = 1TB
New-VirtualDisk -StoragePoolFriendlyName "ProductionPool" `
-FriendlyName "DataMirror_VD" `
-ResiliencySettingName "Mirror" `
-NumberOfDataCopies 2 `
-Size $VirtualDiskSize

Step 3: Format with ReFS & Enable Integrity Streams

03

Initialize, Format ReFS & Protect Data

ReFS Integrity

Initialize the new virtual disk with GPT, check that the example drive letter is unused, and format the new volume as ReFS. Formatting is destructive to the selected volume. Integrity streams are optional and can add I/O cost; enable them on data directories where the integrity benefit is appropriate.

Terminal window
# Confirm S: is not already assigned before using it.
if (Get-Volume -DriveLetter S -ErrorAction SilentlyContinue) {
throw 'Drive letter S: is already in use. Choose an unused letter.'
}
# Initialize the newly created virtual disk and create a partition
$Disk = Get-VirtualDisk -FriendlyName "DataMirror_VD" | Get-Disk
$Disk | Initialize-Disk -PartitionStyle GPT -PassThru |
New-Partition -DriveLetter "S" -UseMaximumSize
# Review the selected disk and partition, then explicitly confirm the format.
Get-Disk -Number $Disk.Number |
Select-Object Number, FriendlyName, SerialNumber, UniqueId, OperationalStatus
Get-Partition -DriveLetter S |
Select-Object DriveLetter, DiskNumber, Type, Size
if ((Read-Host 'Type FORMAT only after confirming this is the new empty volume') -cne 'FORMAT') {
throw 'Volume formatting cancelled.'
}
Format-Volume -DriveLetter "S" -FileSystem ReFS -NewFileSystemLabel "EnterpriseData"
PowerShell showing a healthy mirrored Storage Spaces virtual disk, ReFS volume, and enabled integrity streams

Figure 1: The two-way mirror is healthy, the S: volume is formatted as ReFS, and integrity streams are enabled.

Comments