A snapshot preserves the state and data of a virtual machine at a specific point in time.
State includes the virtual machine’s power state (powered‐on, powered‐off, suspended, etc).
Data includes all the files that make‐up the virtual machine, including disks, memory, and other devices, such as virtual network interface cards.
Name – used to identify the snapshot.
Description – used to describe the snapshot.
Memory – If the <memory> flag is 1 or true, a dump of the internal state of the virtual machine is included in the snapshot. Memory snapshots take longer to create.
Quiesce – If the <quiesce> flag is 1 or true, and the virtual machine is powered on when the snapshot is taken, VMware Tools is used to quiesce the file system in the virtual machine. Quiescing a file system is a process of bringing the on‐disk data of a physical or virtual computer into a state suitable for backups. This process might include such operations as flushing dirty buffers from the operating systems in‐memory cache to disk, or other higher‐level application‐specific tasks.
<vm>-<number>.vmdk and <vm>-<number>-delta.vmdk
A collection of .vmdk and -delta.vmdk files for each virtual disk is connected to the virtual machine at the time of the snapshot. These files can be referred to as child disks, redo logs, and delta links. These child disks can later be considered parent disks for future child disks. From the original parent disk, each child constitutes a redo log pointing back from the present state of the virtual disk, one step at a time, to the original.
Note: The <number> value may not be consistent across all child disks from the same snapshot. The file names are chosen based on filename availability.
The .vmsd file is a database of the virtual machine’s snapshot information and the primary source of information for the snapshot manager. The file contains line entries which define the relationships between snapshots as well as the child disks for each snapshot.
<vm>Snapshot<number>.vmsnThese files are the memory state at the time of the snapshot.
What products use the snapshot feature?
VMware Consolidated Backup
VMware Data Recovery
VMware Lab Manager
VMware vCenter and the VMware Infrastructure Client (Snapshot Manager, Storage vMotion)
Note: This is not an exhaustive list and does not include third party programs.
How do snapshots work?
- CreateSnapshot – Creates a new snapshot of a virtual machine. As a side effect, this updates the current snapshot.
- RemoveSnapshot – Removes a snapshot and deletes any associated storage.
- RemoveAllSnapshots – Remove all snapshots associated with a virtual machine. If a virtual machine does not have any snapshots, then this operation simply returns successfully.
- RevertToSnapshot – Changes the execution state of a virtual machine to the state of this snapshot.
- A request to create, remove, or revert a snapshot for a virtual machine is sent from the client to the server using the VMware API.
- The request is forwarded to the VMware ESX host which is currently hosting the virtual machine in question.
Note: This only occurs if the original request was sent to a different server such as vCenter which is managing the ESX host.
- If the snapshot includes the memory option, the ESX host writes the memory of the virtual machine to disk.
Note: The length of time the ESX host takes to write the memory onto the disk is relative to the amount of memory the virtual machine is configured to use.
- If the snapshot includes the quiesce option, the ESX host requests the guest operating system to quiesce the disks via the VMware tools.
Note: Depending on the guest operating system, the quiescing operation can be done by the sync driver, the vmsync module, or Microsoft’s Volume Shadow Copy (VSS) service. For more information on quiescing, seeTroubleshooting Volume Shadow Copy quiesce related issues (1007696) for VSS or A virtual machine can freeze under load when you take quiesced snapshots or use custom quiescing scripts (5962168) for the SYNC driver.
- The ESX host makes the appropriate changes to the virtual machine’s snapshot database (.vmsd file) and the changes are reflected in the snapshot manager of the virtual machine.
Note: The operation to remove the snapshot entity in the snapshot manager completes before the changes are made to the child disks. The snapshot manager does not contain any snapshot entries while the virtual machine continues to run from the child disk. For more information, see Committing snapshots when there are no snapshot entries in the snapshot manager (1002310).
- The ESX host calls a function similar to the Virtual Disk API functions to make changes to the child disks (-delta.vmdk and .vmdk files) and the disk chain.
Note: During a snapshot removal, if the child disks are large in size, the operation may take a long time. This could result in a timeout error message from either VirtualCenter or the VMware Infrastructure Client. For more information about timeout error messages, see vCenter operation times out with the error: Operation failed since another task is in progress (1004790).
The child disk
Child disks and disk usage
- If a virtual machine is running off of a snapshot, it is making changes to a child or sparse disk. The more write operations made to this disk, the larger it grows.
- The space requirements of the child disk are in addition to the parent disk on which it depends. If a virtual machine has a 10 GB disk with a child disk, the space being used will be 10 GB + the child disk size.
- Child disks have been known to grow large enough to fill an entire datastore.
- The speed at which child disks grow are directly dependent on the amount of I/O being done to the disk.
- The size of the child disk has a direct impact on the length of time it takes to delete the snapshot associated to the child disk.
- No more space for the redo log error when attempting to start a virtual machine (1002103)
- Why snapshot removal can stop a virtual machine for long time (1002836)
- Troubleshooting a datastore or VMFS volume that is full or near (1003412)
The disk chain
The following diagram is an example of a snapshot chain, each square represents a block of data or a grain as described above: