vMotion of a virtual machine fails when the VM has multiple snapshots referencing the same base disk file (.vmdk). The failure occurs because a .vmsn file (snapshot metadata) is being added to a virtual disk that is already associated with another snapshot, causing disk conflict during migration.
VMware vSphere 8.x
This issue is caused when vMotion attempts to attach a .vmsn snapshot file to a virtual disk (.vmdk) that is already linked to an existing snapshot. This violates vSphere's constraint that a virtual disk cannot be actively associated with multiple snapshot metadata structures simultaneously.
The following log entries from /var/log/hostd.log confirm the failure scenario:
2025-08-13T03:39:47.461Z info hostd[...] SNAPSHOT: SnapshotDiskTreeAddFromSnapshot: Trying to add snapshot VM_NAME-Snapshot2.vmsn to disk [...] VM_NAME.vmdk which already has snapshot VM_NAME-Snapshot1.vmsn
2025-08-13T03:39:47.466Z info hostd[...] VigorOfflineGetAllDisks: Failed to retrieve disk files: One of the disks in this virtual machine is already in use by a virtual machine or by a snapshot
2025-08-13T03:39:47.467Z warning hostd[...] Initiate: Failed to prepare the VMotionWorker
2025-08-13T03:39:47.467Z info hostd[...] State Transition (VM_STATE_IMMIGRATING -> VM_STATE_OFF)
2025-08-13T03:39:47.467Z info hostd[...] State Transition (VM_STATE_OFF -> VM_STATE_UNREGISTERING)
Delete the VMSN and VMSD files from the virtual machine location using the steps below.
1.Power off the affected virtual machine
2.Go to the VM directory
# cd /vmfs/volumes/Datastore Name/VM_Name/
Create a temporary directory and back up the snapshot state file and snapshot database file by moving them there.
# mkdir delete-later
# mv *.vmsn ./delete-later
# mv *.vmsd ./delete-later
3.Obtain the virtual machine ID using the vim-cmd command.
# vim-cmd vmsvc/getallvms |grep -i VM_NAME
Reload the virtual machine's VMX file using the VMID.
# vim-cmd vmsvc/reload VMID
vMotion should be successful.