How to Troubleshoot a Degraded Virtual Disk in Windows Server Storage Spaces

John Wilson 40 Reputation points
2026-10-19T14:44:20.6033333+00:00

A Storage Spaces virtual disk becomes degraded after a physical drive reports errors. How can I identify the failing drive, verify the virtual disk’s resiliency and data integrity, and safely restore redundancy without risking data loss?

Windows for business | Windows Server | Storage high availability | Other
0 comments No comments

2 answers

Sort by: Most helpful
  1. Ronald Sabiiti 1,670 Reputation points Independent Advisor
    2026-10-19T16:13:21.3866667+00:00

    Hello @John Wilson ,

    Thank you for contacting Microsoft Q&A regarding your degraded Storage Spaces virtual disk.

    To identify the failing drive and safely restore redundancy, we recommend the following steps:

    1. Identify the failing drive: Open PowerShell as Administrator and run Get-PhysicalDisk to check each drive's health and operational status. Use the drive's serial number to confirm its physical identity.
    2. Check virtual disk health: Run Get-VirtualDisk and verify the resiliency type, health status, and operational status.
    3. Protect your data: Back up all accessible critical files to a separate storage device before attempting repairs. Avoid formatting, resetting, or removing drives until their roles and the recovery options are confirmed.
    4. Repair the virtual disk: Once the failed drive and pool condition have been assessed, use Repair-VirtualDisk -FriendlyName "YourVirtualDiskName" if appropriate for your configuration. Monitor progress with Get-StorageJob.
    5. Verify recovery: Confirm that the virtual disk returns to a healthy state, no repair jobs remain, and important files are accessible. Perform appropriate filesystem and data-integrity checks.

    If the virtual disk reports No Redundancy, Incomplete, Detached, or Unhealthy, stop before attempting further repairs, as additional changes could increase the risk of data loss.

    For more information, please refer to Microsoft's documentation:

    To help us recommend the safest recovery procedure, could you confirm your Windows version, the virtual disk's resiliency type (mirror, parity, or simple), and its current health and operational status?

    I hope this helps to better understand the diagnostic options available and the risks involved.

    If this information was helpful, please click Accept Answer.

    Thank you for choosing Microsoft Q&A.

    Was this answer helpful?

    1 person found this answer helpful.

  2. AI answer

    2026-10-19T14:46:33.95+00:00

    Do not reset, initialize, remove, or replace a disk until its UniqueId/serial number and the deployment type—standalone Storage Spaces, clustered Storage Spaces, or Storage Spaces Direct (S2D)—have been positively identified.

    1. Capture the current state

    Run PowerShell as Administrator:

    Get-StoragePool -IsPrimordial $false |
      Select FriendlyName, HealthStatus, OperationalStatus, IsReadOnly, Size, AllocatedSize
    
    Get-VirtualDisk |
      Select FriendlyName, UniqueId, ResiliencySettingName, NumberOfDataCopies,
             PhysicalDiskRedundancy, HealthStatus, OperationalStatus, DetachedReason
    
    Get-PhysicalDisk |
      Select FriendlyName, SerialNumber, UniqueId, DeviceId, PhysicalLocation,
             HealthStatus, OperationalStatus, Usage, Size
    
    Get-StorageJob
    

    A Degraded virtual disk still has at least one readable copy, but its resilience is reduced. No redundancy means data has already been lost because too many drives failed; replace the failed drives and restore from backup rather than attempting destructive recovery. For Incomplete or Majority Disks Unhealthy, reconnect missing drives—and bring offline S2D nodes online—before replacing anything.^1^

    Save the output before changing the pool.

    2. Identify the failing physical drive

    Map the affected virtual disk to its physical disks:

    $vd = Get-VirtualDisk -FriendlyName "<VirtualDiskName>"
    $vd | Get-PhysicalDisk |
      Select FriendlyName, SerialNumber, UniqueId, DeviceId, PhysicalLocation,
             HealthStatus, OperationalStatus, Usage, Size
    

    Then collect hardware counters from each suspect disk:

    $vd | Get-PhysicalDisk | Get-StorageReliabilityCounter |
      Select DeviceId, Temperature, Wear, PowerOnHours,
             ReadErrorsTotal, ReadErrorsUncorrected,
             WriteErrorsTotal, WriteErrorsUncorrected
    

    These counters expose temperature, wear, usage time, and corrected or uncorrected errors.^2^

    Interpret the operational state before acting:

    • Failed media or Device hardware failure: replace the drive.
    • Recurring IO error, Transient error, or Abnormal latency: replacement is appropriate if the condition persists.
    • Split, Stale metadata, or Unrecognized metadata has a reset-and-repair path, but Reset-PhysicalDisk erases the disk. Do not use it until the disk identity is certain and remaining redundancy has been validated.^1^

    Match SerialNumber, UniqueId, and PhysicalLocation against the enclosure, controller, or platform inventory. Do not rely on friendly name alone.

    3. Verify resiliency and file-system integrity

    ResiliencySettingName, NumberOfDataCopies, and PhysicalDiskRedundancy on the affected virtual disk are the relevant per-disk configuration evidence. Get-ResiliencySetting only reports layouts/defaults available from the subsystem and does not by itself prove the effective configuration when creation-time overrides were used. PhysicalDiskRedundancy defines how many physical-disk failures the virtual disk was configured to withstand.^3^

    Perform a read-only file-system scan before hardware changes. Use the volume’s actual drive letter or path; do not assume D::

    Repair-Volume -DriveLetter <Letter> -Scan
    # For a suitable cluster volume, identify it by its applicable path:
    Repair-Volume -Path "<VolumePath>" -Scan
    

    -Scan reports corruption without repairing it. -SpotFix briefly takes the volume offline, while -OfflineScanAndFix takes it offline for a full repair; schedule either only after storage redundancy is restored.^4^

    Confirm a usable backup before proceeding, particularly if another disk failure would exceed PhysicalDiskRedundancy.

    4. Restore redundancy using the matching workflow

    Storage Spaces Direct

    Reconnect missing nodes or drives first, then replace drives reported as failed according to the server/enclosure hardware procedure. S2D automatically starts repair after a drive is reconnected or replaced; monitor it with:

    Get-StorageJob
    Get-VirtualDisk |
      Select FriendlyName, HealthStatus, OperationalStatus
    

    Do not apply the standalone Add-PhysicalDisk or Azure LUN-removal sequence automatically to S2D.^1^

    Standalone Storage Spaces

    Microsoft directly documents the following retire–repair–drain–remove sequence for standalone Storage Spaces hosted in Azure. For physical servers, SANs, or vendor-controlled enclosures, first validate the equivalent procedure with the hardware/storage vendor.^5^

    If the suspect drive remains readable, sufficient free capacity exists, and a spare slot is available:

    1. Identify and add only the intended replacement—never every poolable disk:
    $replacement = Get-PhysicalDisk -UniqueId "<ReplacementUniqueId>"
    $replacement | Select SerialNumber, UniqueId, PhysicalLocation, HealthStatus, Size
    Add-PhysicalDisk -StoragePoolFriendlyName "<PoolName>" -PhysicalDisks $replacement
    

    Add-PhysicalDisk adds the selected disk to the specified pool.^6^

    1. Retire the suspect disk, repair, and wait:
    Set-PhysicalDisk -UniqueId "<FailingDiskUniqueId>" -Usage Retired
    Get-VirtualDisk -UniqueId "<VirtualDiskUniqueId>" | Repair-VirtualDisk
    Get-StorageJob
    
    1. After all jobs complete, verify the retired disk has VirtualDiskFootprint equal to 0; only then remove it from the pool and physically detach it:
    $old = Get-PhysicalDisk -UniqueId "<FailingDiskUniqueId>"
    $old | Select FriendlyName, UniqueId, Usage, VirtualDiskFootprint
    
    Remove-PhysicalDisk -PhysicalDisks $old `
      -StoragePoolFriendlyName "<PoolName>"
    

    If the old disk is inaccessible or no spare slot exists, the evacuate-first sequence is unavailable. Do not improvise by resetting or pulling an ambiguously identified member; verify the backup and remaining redundancy, then use the replacement procedure for that enclosure, controller, or hosting platform.

    5. Final validation

    Wait until no storage jobs remain, then confirm:

    Get-StorageJob
    Get-StoragePool -IsPrimordial $false |
      Select FriendlyName, HealthStatus, OperationalStatus
    Get-VirtualDisk |
      Select FriendlyName, HealthStatus, OperationalStatus
    Repair-Volume -DriveLetter <Letter> -Scan
    

    The expected endpoint is pool and virtual-disk Healthy/OK, no active repair job, no footprint on a retired disk, and a clean file-system scan. If repair reports insufficient free space, insufficient redundancy, inaccessible data, or an unexpected disk topology, stop destructive operations and engage Microsoft Support or the storage hardware vendor.


    References

    1. Troubleshoot Storage Spaces and Storage Spaces Direct health and operational states
    2. Get-StorageReliabilityCounter-Syntax
    3. CreateVirtualDisk method of the MSFT_StoragePool class
    4. Repair-Volume-Description
    5. Manage disks in standalone Storage Spaces on Windows Server hosted in Azure
    6. Add-PhysicalDisk-Description
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.