I find that the simplest things in life are the most complicated. Snapshot is one of those things, I believe. It is something we, administrators, do not hesitate to use and yet, not many undersand what it is or how it works. Below are a few things out of many.
- What is a snapshot?
- A snapshot is a difference. When a snapshot is created its initial size is zero. That is because initially there is no change to capture. Original data is locked. It can be read but it can’t be altered. All the changes are written to the snapshot. That is why and how you can recover the data before the snapshot - because it is still there and is still intact.
- What is a VM snapshot for?
- It is a recovery point that is meant to be kept for a brief period of time as opposed to backups that can be stored for months, years or even decades.
- Why does a VM snapshot file grow in size?
- Because the changes to the original data keep coming in. Files on the VM are edited or deleted, new files are created. The longer the snapshot exists the more changes are likely to happen to the VM disks. Remember, snapshot captures a difference between the original state of the VM disk and the disks’ current state. The bigger the difference, the larger the snapshot.
- What if I have more than one snapshot? What is a snapshot tree?
- When more than one snapshot is present the difference captured is between the latest active (not locked, not immutable set of data) and the current state. While the first taken snapshot captures the difference between the VM disks and the current state, the subsequently taken snapshots tack the difference between the current state and the latest snapshot. Thus each new snapshot creates a recovery point. Snapshot tree is a chain of snapshots of the VM.
- Can I have an eternally long snapshot tree?
- It is possible but is not recommended. Snapshots do not keep the data but rather log the metadata - which blocks have changed and what unique blocks can be used instead is what in the snapshot file. When a change is being recorded by the latest snapshot and the snapshot tree is long (or deep however you like to read it) the chase for that block reference may cause checking through several snapshots or sometimes the entire tree. That search causes additional latency for the read/write as well as additional load on the compute. Keep the snapshot tree short and the snapshots fresh. For longer-term backup solutions leverage functionality that is designed for long term backups.
To view the snapshot size refer to Prism Administration Guide: VM Details View.
Some useful information KB-4777 Usable characters in VM snapshot names.