Windows·8 min read·

Windows Storage Spaces: Mirroring, Tiering, and IOPS Profiling

Build resilient, high-IOPS storage pools on Windows Server using two-way mirroring, performance tiers, and ReFS integrity streams.

NB

Netbay Cloud Team

Netbay Engineering

On this page

Enterprise applications running on Windows Server (including Microsoft SQL Server, Hyper-V, and high-volume file shares) demand high I/O throughput coupled with data integrity. Windows Storage Spaces provides storage virtualization built directly into the operating system. Storage Spaces groups multiple physical or virtual disks into unified Storage Pools, upon which thin-provisioned or resilient Virtual Disks (Spaces) are created.

When combined with the Resilient File System (ReFS), Storage Spaces offers automatic background data scrubbing, self-healing data integrity streams, and two-way or three-way mirroring that sustains drive failures without downtime or data corruption.

Expand
Storage Spaces Architecture
Windows Server Storage Spaces Architecture
Windows Storage Spaces & ReFS Integrity Architecture Physical Disks High-Speed SSD Drives Unified Storage Pool Aggregated Raw Capacity Virtual Disk Two-Way Mirror Resiliency ReFS File System Integrity Streams & Scrubbing ReFS checksums detect silent data bit-rot and automatically restore corrupted sectors from redundant mirror copies.

Creating a Storage Pool via PowerShell

Identify available raw disks attached to your Windows Server instance using Get-PhysicalDisk:

powershell
# Query unallocated physical disks available for pooling
$disks = Get-PhysicalDisk -CanPool $True

# Inspect disk bus types and media types
$disks | Select-Object DeviceId, FriendlyName, MediaType, Size

# Create a new Storage Pool across available disks
$poolParams = @{
  FriendlyName = "DatabasePool"
  StorageSubsystemFriendlyName = "Windows Storage*"
  PhysicalDisks = $disks
  LogicalSectorSizeDefault = 4096
}
$pool = New-StoragePool @poolParams

Provisioning a Mirrored Virtual Disk with ReFS

Next, carve out a resilient two-way mirrored Virtual Disk from the pool and format it with the Resilient File System:

powershell
# Create a Two-Way Mirrored Virtual Disk
$vDiskParams = @{
  StoragePoolFriendlyName = "DatabasePool"
  FriendlyName = "DataDisk01"
  ResiliencySettingName = "Mirror"
  NumberOfDataCopies = 2
  ProvisioningType = "Thin"
  Size = "500GB"
}
$vDisk = New-VirtualDisk @vDiskParams

# Initialize and partition the new disk
$diskNum = ($vDisk | Get-Disk).Number
Initialize-Disk -Number $diskNum -PartitionStyle GPT
$partition = New-Partition -DiskNumber $diskNum -UseMaximumSize -AssignDriveLetter

# Format with ReFS and activate Integrity Streams
Format-Volume -Partition $partition -FileSystem ReFS -NewFileSystemLabel "SQLData" -AllocationUnitSize 64KB
Set-FileIntegrity -FileName "$($partition.DriveLetter):*" -Enable $True

Using an allocation unit size of 64KB optimizes I/O performance specifically for SQL Server extent allocations while ReFS integrity streams actively protect database files against silent corruption.

Storage Architecture and RAID Video

Learn about storage pooling, mirroring topologies, and disk parity in this overview:

RAID and Storage Resiliency Architecture
YouTube

Monitoring Disk Performance Metrics

Profile read and write IOPS and latency on your Storage Spaces volume using the built-in storage diagnostics cmdlets:

powershell
# Monitor storage pool throughput and operational status
Get-StoragePool -FriendlyName "DatabasePool" | Get-StorageReliabilityCounter

# Profile disk transfer queue and average latency
Get-Counter -Counter "PhysicalDisk(*)Disk Reads/sec", "PhysicalDisk(*)Disk Writes/sec", "PhysicalDisk(*)Avg. Disk sec/Transfer" -SampleInterval 2 -MaxSamples 10

Scale database and storage workloads on high-throughput NVMe SSD drives at netbayhosts.in.

Keep reading

Follow along on a real VPS

Deploy Linux in under 60 seconds

These guides are written against Ubuntu, Debian, and RHEL-family images — the same ones on NetBay.

Deploy an instance