Hyper-V uses the Volume Shadow Copy Service (VSS) to backup and restore virtual machines (VMs).
If the backup (volume snapshot) integration services are installed in the guest operating system, a VSS requester is installed
that will allow VSS writers in the guest operating system to participate in the backup of the VM. For details, see the following
sections:
Backing Up the Virtual Machines
Hyper-V uses one of two mechanisms to back up each VM. The default backup mechanism is called
the "Saved State" method, where the VM is put into a saved state during the processing of the
PrepareForSnapshot event, snapshots are taken of the appropriate volumes, and the VM is returned to the previous
state during the processing of the PostSnapshot event.
The other backup mechanism is called the "Child VM Snapshot" method, which uses VSS inside the
child VM to participate in the backup. For the "Child VM Snapshot" method to be supported, all
of the following conditions must be met:
- Backup (volume snapshot) Integration Service is installed and running in the child VM.The service name is
"Hyper-V Volume Shadow Copy Requestor".
Windows 2000: Backup Integration Service is not supported.
- The child VM must be in the running state.
- The Snapshot File Location for the VM is set to be the same volume in the host operating system as the VHD files for the
VM.
- All volumes in the child VM are basic disks and there are no dynamic disks.
- All disks in the child VM must use a file system that supports snapshots (for example, NTFS).
In general, the process for backing up VMs is the same as described in
Overview of Processing a Backup Under VSS.
The unique behavior happens when the Hyper-V VSS writer (part of the
"Hyper-V Virtual Machine Management" service) processes the PrepareForSnapshot event. If the
backup was done using the "Child VM Snapshot" method, there is additional processing done but
it is not visible to the child VM.
The following procedure describes how to back up VMs.
To back up virtual machines
- For each VM in the writer metadata, if the "Saved State" method is used, the VM is put
into a saved state. For VMs using the "Child VM Snapshot" method, the Hyper-V Volume Shadow Copy
Requestor Service in the child VM processes the backup as detailed in
Overview of Processing a Backup Under VSS.
All VSS events in the child VM occur during the host operating system processing of the PrepareForSnapshot event.
- After all VMs have either been put in the saved state or had snapshots taken, the Hyper-V VSS writer
returns from the PrepareForSnapshot event. No processing is done by the Hyper-V VSS writer during the Freeze and
Thaw events.
- When the Hyper-V VSS writer processes the PostSnapshot event, VMs that were backed up using the
"Saved State" method and were put into a saved state by the Hyper-V VSS writer are returned to
the state they were in before the backup started. For the VMs that were backed up using the
"Child VM Snapshot" method, the host image of the VHD files that had the snapshots taken are
rolled back to the snapshot taken during the processing of the PrepareForSnapshot event. This processing is done
independently of the VSS writers in the child VMs so the snapshots taken must be auto-recoverable.
(VSS_VOLSNAP_ATTR_NO_AUTORECOVERY is not set in the context.)
Partial backups are not supported. If any VM fails to created a snapshot, no VMs will be backed up.
Note Passthrough and iSCSI disks are not visible to the host operating system and therefore not backed up by the Hyper-V VSS
writer. Backups of these volumes must be done entirely within the VM.
Restoring the Virtual Machines
Restoring the VMs is done entirely by the host operating system; the VSS writers in the child VMs are not involved.
The following procedure describes how to restore VMs.
To restore virtual machines
- During the processing of the PreRestore event, the Hyper-V VSS writer turns off and deletes any VMs that
are about to be restored.
- After all VSS writers have processed the PreRestore event, the files are restored.
- During the processing of the PostRestore event, the Hyper-V VSS writer calls the
IVssComponent::GetFileRestoreStatus
method. If the return is not VSS_RS_ALL, then the Hyper-V VSS writer calls the
SetWriterFailure method and returns
FALSE from the
OnPostRestore method.
- For each VM that was restored, the Hyper-V VSS writer registers the VM with the Hyper-V management service.
If the VM is restored to a nondefault location, a symbolic link is created in the default location linking to
that location.
- For each VHD that was restored, the location is compared with the one specified for
that VM. If the location is different, then the configuration is updated with the proper location.
- The network configuration is updated. If the virtual switches that the VM was connected to when it was
backed up still exit, new ports are created and connected to the VM.
Failover Clustering and Hyper-V VSS
The Hyper-V VSS writer does not give any consideration to VMs that are part of a failover cluster. During both
the "Saved State" method backups and all restores, the VM would be put into the saved state or
deleted entirely. This would be seen as a failure by the clustering service and cause the applications on those
nodes to be failed over to other nodes. To avoid this during "Saved State" backups, the VM state
must be saved using the clustering service. To avoid this during a restore, the resources on the VM would need to
be taken offline.
Details on the Hyper-V VSS Writer
Writer Name: Microsoft Hyper-V VSS Writer
Writer ID: 66841cd4-6ded-4f4b-8f17-fd23f8ddc3de
See Also
- Overview of Processing a Backup Under VSS
- Overview of Processing a Restore Under VSS
Send comments about this topic to Microsoft
Build date: 10/8/2009