Find VM snapshots in your VMware environment
Snapshots are a great feature, probably one of the coolest in virtualization. They can become a problem if they are not used appropriately, unfortunately sometimes we let them grow to an unmanageable size, which can bring performance issues and give us headaches when we need to delete them.
In this post, I will show you how to find out what snapshots are present in your environment, along with some other useful information, like size.
To run the commands below you will need to install PowerCLI (on windows), which is a way to manage a VMware environment programmatically using PowerShell scripting.
To get PowerCLI, go to: www.vmware.com/go/powercli
1) Once you have PowerCLI, open it up, a command prompt will appear:
PowerCLI C:\Program Files\VMware\Infrastructure\vSphere PowerCLI> Connect-VIServer -Server vcenter.example.com -User john
Name Port User
---- ---- ----
vcenter.example.com 443 john
// At this point you have a session open with your vCenter
2) Query your vCenter to find out what snapshots are present:
PowerCLI C:\Program Files\VMware\Infrastructure\vSphere PowerCLI> Get-VM | Get-Snapshot | Format-list vm,name,sizeGB,create,powerstate
VM : vm1
Name : Before_upgrade
SizeGB : 16.38431124389171600341796875
PowerState : PoweredOn
VM : vm2
Name : Before_package_install
SizeGB : 12.368686250410974025726318359
PowerState : PoweredOn
Let me explain what is going on: ‘Get-VM’ asks for the VMs that are running on your vCenter, PowerCLI returns an object for each VM and you then asks for the snapshots of each returned VM object by using ‘Get-Snapshot’, then you take that output and format it by using ‘Format-list’, but you are only asking for the information about ‘vm,name,sizeGB,create,powerstate’
You can request any of the following: Description Created Quiesced PowerState VM VMId Parent ParentSnapshotId ParentSnapshot Children SizeMB SizeGB IsCurrent IsReplaySupported ExtensionData Id Name Uid
3) The above will give you the info you want, but I prefer CSV reports that I can share with the team or management. To get a good CSV report run the following:
PowerCLI C:\Program Files\VMware\Infrastructure\vSphere PowerCLI> Get-VM | Get-Snapshot | Select-Object vm,name,sizeGB,create,powerstate | Export-Csv C:\vm_snapshots.csv
I recommend taking a look at VMware’s best practices around snapshots: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1025279