Following a recent implementation of VMware Data Recovery manager we ran into a few issues. We eventually had to kill the virtual appliances due to the issue we were having and as a result we had a couple of virtual machines with outstanding snapshots. These snapshots were taken by VDR and as a result could not be viewed or deleted using the snapshot manager.
We raised a call with VMware support and they started a WebEx session to look at the issue. I always love watching VMware support personnel operating at the service console level, I always pick up a command or two that I didn’t know before. On this occasion the support engineer was using something called SnapVMX to view the hierarchy of snapshots at the virtual disk level.
At first I thought this was an inbuilt VMware command but it turns out it’s not. It was actually a little piece of code that was written by Ruben Garcia. What does it do? well the following extract from the download pages explains it pretty well.
- Displays snapshots structure and size of snapshots for every disk on that VM
- Calculates free space needed to commit snapshots for the worst case scenario
- Checks the CID chain of the analysed files and displays a warning if broken.
I’ve included a little demo screenshot to show what it can do. On the left hand side is a screenshot from Snapshot Manager within vCenter. On the right hand side is the same VM being viewed with SnapVMX in the service console. Put the two together and you get a better idea of the snapshot disk hierarchy and the size of each snapshot.
The other interesting feature is that it tells you what space is required to commit the snapshots. So for example, say you had taken 5 snapshots of a machine as it was being built and configured. Say that the overall effect of those 5 snapshots is to fill up your VMFS datastore completely. Chances are that you’re not going to be able to commit the snapshots within the current VMFS datastore. SnapVMX will be able to tell you the worse case scenario on how much space would be required to commit the snapshots. Armed with this information you could cold migrate to another datastore that has at least that amount of free space in order to allow you to commit the snapshots. The screenshot below isn’t the best but the best I could do due to the length of the statement.
For the download and full documentation on how to use this piece of code head over to the following web site. Worth a look if you’re a big user of snapshots.
While searching for a link to Ruben Garcia to put on this article I found that he has a blog site and within that I found a link to a superb troubleshooting VM snapshot problems article which I will definitely be keeping a link to and suggest you check out. Truly excellent stuff Ruben!