Storage Spaces virtual disk detached or degraded
A physical disk has been lost from the pool. Whether the data is still available depends on the resiliency and how many are missing.
What you see
A virtual disk shows Detached or the volume is inaccessible. Get-VirtualDisk reports Degraded or Incomplete health.
What is actually wrong
A failed or removed physical disk, a pool that has no free space to repair into, or disks that did not enumerate in time at boot.
Codes and articles
Fixes (2)
Replace the disk and repair the space
Degraded but online. Act promptly — a second failure on a two-way mirror loses the data.
Identify the failed disk and its physical location.
Get-PhysicalDisk | Format-Table FriendlyName,SerialNumber,MediaType,HealthStatus,OperationalStatus,Usage,SizeGet-VirtualDisk | Format-Table FriendlyName,ResiliencySettingName,HealthStatus,OperationalStatus,Size
Turn on the identification light where the enclosure supports it, so the right disk is pulled.
Get-PhysicalDisk -SerialNumber ABC123 | Enable-PhysicalDiskIndicationPulling the wrong disk from a degraded pool loses everything. Thirty seconds with the identification light removes the guesswork entirely.
Retire the failed disk so the pool stops trying to use it.
Get-PhysicalDisk -SerialNumber ABC123 | Set-PhysicalDisk -Usage RetiredAdd the replacement to the pool.
$pool = Get-StoragePool -FriendlyName Pool1Get-PhysicalDisk -CanPool $true | Add-PhysicalDisk -StoragePool $pool
Start the repair and watch it.
Get-VirtualDisk -FriendlyName Data | Repair-VirtualDiskGet-StorageJob | Format-Table Name,JobState,PercentComplete,BytesProcessed
Remove the retired disk once the repair completes.
Get-PhysicalDisk -SerialNumber ABC123 | Remove-PhysicalDisk -StoragePool (Get-StoragePool -FriendlyName Pool1)Keep free space in the pool equal to at least one disk, so a future repair can start without waiting for a replacement.
A pool with no free capacity cannot begin repairing until new hardware arrives, which extends the window in which a second failure is fatal.
Get-VirtualDisk | Format-Table FriendlyName,HealthStatus,OperationalStatusGet-StorageJob
Reattach a detached virtual disk
Detached or Incomplete.
Establish which physical disks are missing.
Get-StoragePool | Format-Table FriendlyName,HealthStatus,OperationalStatus,IsReadOnlyGet-PhysicalDisk | Format-Table FriendlyName,SerialNumber,HealthStatus,OperationalStatus,Usage
Check cabling and controller before any software action. A detached space is frequently a loose SAS cable or an enclosure that lost power, and reattaching without fixing that will not hold.
Storage Spaces detaches to protect data when it cannot see enough disks. Forcing it back online with disks still missing is how a recoverable situation becomes a lost one.
Clear the read-only flag on the pool, which is set automatically when it detaches.
Get-StoragePool -FriendlyName Pool1 | Set-StoragePool -IsReadOnly $falseReattach the virtual disk.
Get-VirtualDisk -FriendlyName Data | Connect-VirtualDiskGet-VirtualDisk | Format-Table FriendlyName,HealthStatus,OperationalStatus
Bring the disk online and check the filesystem.
Get-Disk | Where-Object OperationalStatus -eq 'Offline' | Set-Disk -IsOffline $falseRepair-Volume -DriveLetter E -Scan
If more disks are missing than the resiliency can tolerate, the data is not recoverable from the pool and the answer is the backup.
Get-Volume | Format-Table DriveLetter,FileSystemLabel,HealthStatus,SizeRemainingWhere this stops. This write-up was written and checked by hand. It says what each step changes, how to confirm it worked and how to reverse it, and anything destructive is flagged before you reach it. If it does not match what your machine is doing, search the Support Centre for the exact code or message — and when something needs a person, get in touch.