We need to clear the contents of the .vmsd file in order to create new snapshots.
How to fix the issue
Create a backup copy of the current .vmsd file. Then create a new file called .vmsd. This can be done with a single command from the VMware ESX CLI (Service Console) once you have browsed to the datastore where the VM resides:
mv ./.vmsd ./.vmsd.old && touch ./.vmsd
Let's just have a look at the commands above
&& : This basically tells the CLI that if the "mv" command was executed and completed successfully, only then execute the next part of the command which is "touch".
touch: "touch" is a Linux command that simply creates an empty file.
So, with a single line we have renamed (created a backup) our original file and created a new file that has the original file's name.
After the new .vmsd file has been created, it need to be initialised. In order to do so, use the VI client to create a snapshot. Once the new snapshot has been created, go ahead and delete the new snapshots again. This will write some information to the .vmsd file:
.encoding = "UTF-8"
snapshot.lastUID = "2"
snapshot.numSnapshots = "0"
snapshot.current = "0"
snapshot0.uid = "2"
snapshot0.filename = "-Snapshot2.vmsn"
snapshot0.displayName = "Consolidate Helper- 0"
snapshot0.description = "Helper snapshot for online consolidate."
snapshot0.createTimeHigh = "290676"
snapshot0.createTimeLow = "861410424"
snapshot0.numDisks = "2"
snapshot0.disk0.fileName = ".vmdk"
snapshot0.disk0.node = "scsi0:0"
snapshot0.disk1.fileName = "_1.vmdk"
snapshot0.disk1.node = "scsi0:1"
snapshot.needConsolidate = "FALSE"
The issue should now be resolved and snapshots should work as expected.