Hyper-V Production Checkpoints and In-Guest VSS Writers: Application-Consistent Rollback Boundaries
0 reputation · 07 Aug 2021, 10:53 UTC
0 reputation · 07 Aug 2021, 10:53 UTC
Designing a rollback plan for a Windows Server VM after an application or configuration change, where the intended safety net is a Hyper-V production checkpoint. The goal is to restore the VM to a known-good state that is application-consistent rather than only crash-consistent.
The uncertainty sits at the boundary between the Hyper-V VSS requestor and in-guest VSS writers. Production checkpoints rely on Integration Services to invoke VSS inside the VM; if a writer is unsupported or fails to respond, the resulting checkpoint may be only crash-consistent. Applying a checkpoint also requires the VM to be stopped, and checkpoint cmdlets, defaults, and on-disk behavior vary across Windows Server and Hyper-V builds.
Given these constraints, what is the supported way to confirm that a production checkpoint captured application-consistent state before relying on it for rollback? If a workload includes VSS writers that the Hyper-V requester cannot quiesce, is a standard checkpoint the only supported fallback for that VM? How should runbooks handle the offline restore requirement and version-specific checkpoint cmdlet differences?
35275 reputation · 07 Aug 2021, 11:35 UTC
To rely on a Hyper‑V production checkpoint for an application‑consistent rollback, you must prove that every VSS writer inside the guest quiesced successfully. The only supported way to verify this is to inspect the checkpoint’s VSS_Progress.txt file (or the corresponding event‑log entries) after the checkpoint is created. If any writer reports a non‑zero error code or a timeout, the checkpoint is only crash‑consistent, and you should not use it for a critical rollback.
After the checkpoint completes, locate the snapshot folder:
\\\"C:\\\\ProgramData\\\\Microsoft\\\\Windows\\\\Hyper-V\\\\Snapshots\\\\\\\\\\\"Open VSS_Progress.txt and verify that each writer line ends with Status=Success. Example line:
Writer: MSSQLSERVER Status=Success ErrorCode=0Run Get-VMCheckpoint -VMName <VMName> to confirm the checkpoint type is Production and the state is Ready.
Check the host’s event log for VSS Requestor: Production Checkpoint completed and no Failed entries. Any failure entry indicates crash consistency.
If the guest hosts VSS writers that Hyper‑V cannot quiesce (e.g., third‑party or unsupported writers), production checkpoints cannot guarantee consistency. The only Hyper‑V supported fallback is a standard (non‑production) checkpoint, which is inherently crash‑consistent. In such environments, plan for a separate application‑level backup (SQL backup, file‑system snapshot, etc.) before making changes.
Get-VMCheckpoint -VMName <VMName> | Where-Object {$_.Type -eq \"Production\"} to ensure no pending checkpoints.Checkpoint-VM -VMName <VMName> -SnapshotName <Name> on Server 2022 or New-VMCheckpoint -VMName <VMName> -Name <Name> on older builds.Stop-VM -VMName <VMName> -TurnOff), then apply the checkpoint (Restore-VMCheckpoint -VMName <VMName> -Name <Name>). Restoring while the VM is running is unsupported.Server 2022 and later use Checkpoint-VM for both production and standard checkpoints. Server 2019 and earlier rely on New-VMCheckpoint. Mixing cmdlets across versions can silently create a crash‑consistent checkpoint.
If you are unsure whether any unsupported VSS writers are present in the guest, run:
Get-WmiObject -Namespace root\\vss -Class Win32_ShadowCopy | Where-Object {$_.State -eq \"Created\"}
and look for writers that report NotSupported in the event log. This detail will determine whether you can safely rely on a production checkpoint.Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.