How to Configure Hyper-V Virtual Hard Disk Resilient Change Tracking (RCT) in Windows 11 Using PowerShell

Backing up large enterprise virtual machines traditionally required third-party backup vendors to inject proprietary file system filter drivers into the hypervisor storage stack. These legacy filter drivers intercepted storage writes to track modified sectors, but they frequently caused hypervisor instability, introduced I/O latency, and crashed during unexpected host power failures. Starting with Windows Server 2016 and Windows 10/11, Microsoft introduced native Resilient Change Tracking (RCT) into the Hyper-V hypervisor kernel. RCT operates at the VHDX block layer without third-party drivers, tracking modified blocks using lightweight tracking files. In Windows 11, administrators and virtualization engineers can query, enable, and manage Resilient Change Tracking across virtual machines using native PowerShell cmdlets.

Understanding Hyper-V Resilient Change Tracking (RCT) Architecture

When Resilient Change Tracking is enabled on a virtual machine, the hypervisor generates two distinct companion tracking files alongside the primary .vhdx virtual disk:

  • Resilient Change Tracking File (.rct): The primary change log. It maintains a detailed bitmap of every data block altered between backup intervals, allowing backup agents to extract only modified sectors without traversing the entire disk.
  • Modified Region Table File (.mrt): The crash-resilient fallback table. In the event of an abrupt host power failure, ungraceful hypervisor crash, or dirty shutdown where volatile in-memory change tracking is lost, the hypervisor falls back to the .mrt file. The MRT uses larger block granularities to guarantee data consistency, preventing the backup agent from having to execute a full, slow baseline re-scan.
  • Zero-Filter Architecture: Because RCT is implemented directly within Hyper-V’s vhdmp.sys parser, it operates with zero host driver instability and minimal CPU/storage overhead.

Auditing Current Resilient Change Tracking Status

Launch PowerShell with Administrator privileges. Query the target virtual machine to inspect whether RCT is currently enabled on its attached virtual disks:

# Specify the target VM
$VMName = "Database-Prod-VM"

# Query the virtual hard disks and RCT status
Get-VMHardDiskDrive -VMName $VMName | Select-Object VMName, Path, ResilientChangeTrackingEnabled

On standard newly provisioned virtual machines, ResilientChangeTrackingEnabled defaults to False unless configured by an enterprise backup suite.

Enabling Resilient Change Tracking via PowerShell

While third-party backup APIs (like Veeam, Commvault, or Microsoft Data Protection Manager) enable RCT during their initial backup passes, administrators can manually enforce RCT tracking via PowerShell:

# Enable RCT on all hard disks attached to the target VM
Get-VMHardDiskDrive -VMName $VMName | ForEach-Object {
    Set-VMHardDiskDrive -VMName $VMName -ControllerType $_.ControllerType -ControllerNumber $_.ControllerNumber -ControllerLocation $_.ControllerLocation -ResilientChangeTrackingEnabled $true
}

Verify that ResilientChangeTrackingEnabled reports True:

Get-VMHardDiskDrive -VMName $VMName | Format-Table VMName, ControllerLocation, ResilientChangeTrackingEnabled

Inspecting Companion RCT and MRT Tracking Files on Host Storage

Once RCT is enabled and the virtual machine performs write I/O operations, navigate to the storage directory containing the VM’s virtual hard disks:

# Locate the directory containing the VHDX
$VHDPath = (Get-VMHardDiskDrive -VMName $VMName | Select-Object -First 1).Path
$VHDDir = Split-Path -Path $VHDPath -Parent

# Inspect RCT and MRT companion tracking files
Get-ChildItem -Path $VHDDir -Filter "*.*" | Where-Object { $_.Extension -in '.vhdx', '.rct', '.mrt' } | Format-Table Name, Length, LastWriteTime

You will observe paired tracking files named matching the VHDX identifier:

Name                                    Length LastWriteTime
----                                    ------ -------------
Database-Disk.vhdx               53687091200   24/03/2026 14:30
Database-Disk.vhdx.rct               4194304   24/03/2026 14:30
Database-Disk.vhdx.mrt               1048576   24/03/2026 14:30

Resetting or Rebuilding RCT Tracking Files Post-Corruption

In rare instances where a virtual disk is moved offline or an ungraceful storage disconnect desynchronizes tracking tables, backup software may report RCT table corruption. To cleanly reset and rebuild the RCT metadata:

# Stop the VM cleanly
Stop-VM -Name $VMName -Force -Confirm:$false

# Disable RCT to purge stale tracking tables
Get-VMHardDiskDrive -VMName $VMName | Set-VMHardDiskDrive -ResilientChangeTrackingEnabled $false

# Re-enable RCT to initialize clean .rct and .mrt tracking files
Get-VMHardDiskDrive -VMName $VMName | Set-VMHardDiskDrive -ResilientChangeTrackingEnabled $true

# Start the VM
Start-VM -Name $VMName

Enforcing RCT Across All Virtual Machines in Automated Pipelines

To ensure all virtual machines across an enterprise development cluster are configured for optimized incremental backups:

Get-VM | ForEach-Object {
    $VM = $_
    Get-VMHardDiskDrive -VMName $VM.Name | Where-Object { $_.ResilientChangeTrackingEnabled -eq $false } | ForEach-Object {
        Write-Host "Enabling RCT on $($VM.Name) - Disk $($_.Path)"
        Set-VMHardDiskDrive -VMName $VM.Name -ControllerType $_.ControllerType -ControllerNumber $_.ControllerNumber -ControllerLocation $_.ControllerLocation -ResilientChangeTrackingEnabled $true
    }
}

Configuring Hyper-V Resilient Change Tracking via PowerShell guarantees that backup solutions achieve maximum throughput, zero hypervisor driver bloat, and instantaneous crash-resilient incremental backups in Windows 11.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.