This articles provides the steps to identify the cause for a generic error message encountered during snapshot creation of a virtual machine. Issue occurs when the virtual machine is resident on vSAN or VVOL based storage and is not running on a snapshot.
ddb.objectParentUri = vsan://<vsanDatastore>/<vmdk_uuid>
or
ddb.objectParentUri = vvol://############-##############/#######.#########-####-####-####-##########'. A specified parameter was not correct: spec.deviceChange.device An error occurred while taking a snapshot: One of the parameters supplied is invalid. An error occurred while saving snapshot file "/vmfs/volumes/vsan://################-###############/###############-############/<VM_Name>-Snapshot1.vmsn". An error occurred while saving the snapshot: One of the parameters supplied is invalid./var/run/log/hostd.log on the ESXi host where the virtual machine is registered, we see entries similar to below:YYYY-MM-DDTHH:MM:SS In(166) Hostd[2102036]: [Originator@6876 sub=Vmsvc.vm:/vmfs/volumes/vsan:################-###############/###############-############/<VM_Name>.vmx opID=########## sid=####### user=vpxuser:VSPHERE.LOCAL\<BackupUser>] State Transition (VM_STATE_ON -> VM_STATE_CREATE_SNAPSHOT)
YYYY-MM-DDTHH:MM:SS Db(167) Hostd[2102043]: [Originator@6876 sub=Vigor.Vmsvc.vm:/vmfs/volumes/vsan:################-###############/###############-############/<VM_Name>.vmx] Create Snapshot translated error to vmodl.fault.InvalidArgument
YYYY-MM-DDTHH:MM:SS Db(167) Hostd[2102043]: [Originator@6876 sub=Vigor.Vmsvc.vm:/vmfs/volumes/vsan:################-###############/###############-############/<VM_Name>.vmx] Create Snapshot message: An error occurred while saving the snapshot: One of the parameters supplied is invalid.
YYYY-MM-DDTHH:MM:SS Db(167) Hostd[2102005]: --> An error occurred while taking a snapshot: One of the parameters supplied is invalid.
/vmfs/volumes/vsan:################-###############/###############-############/vmware.log) , we see entries similar to belowYYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - DISKLIB-LINK : DiskLinkNativeSnap: Attempting to take a snapshot of 'vsan:################-###############/###############-############/' which is already a snapshot of 'vsan:################-###############/###############-############/'.
YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - DISKLIB-LIB_CREATE :DiskLibPrepareOrCreateChildNativeSnap: Failed to do native snapshot: One of the parameters supplied is invalid
YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - DISKLIB-LIB_CREATE : DiskLib_CreateChild: Failed to create child disk: One of the parameters supplied is invalid
YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - SNAPSHOT: SnapshotBranchDisk: Failed to branch disk natively: '/vmfs/volumes/vsan:################-###############/###############-############/<VM_name>.vmdk' -> '/vmfs/volumes/vsan:################-###############/###############-############/<VM_Name>-000001.vmdk' : One of the parameters supplied is invalid (1)
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - DISKLIB-VMFS : "vsan:################-###############/###############-############/" : closed.
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - SNAPSHOT: SnapshotBranch failed: One of the parameters supplied is invalid (5).
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - OBJDESC-LIB : Failed to unlink 'vsan:################-###############/###############-############/<VM_Name>.vmem': No such file or directory (20004)YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - DISKLIB-LINK : DiskLinkNativeSnap: Attempting to take a snapshot of 'vvol://############-##############/#######.#########-####-####-####-##########' which is already a snapshot of 'vvol://############-##############/#######.#########-####-####-####-##########'.
YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - DISKLIB-LIB_CREATE :DiskLibPrepareOrCreateChildNativeSnap: Failed to do native snapshot: One of the parameters supplied is invalid
YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - DISKLIB-LIB_CREATE : DiskLib_CreateChild: Failed to create child disk: One of the parameters supplied is invalid
YYYY-MM-DDTHH:MM:SS Er(02) vcpu-0 - SNAPSHOT: SnapshotBranchDisk: Failed to branch disk natively: '/vmfs/volumes/vvol:############-##############/#######.#########-####-####-####-##########/VM.vmdk' -> '/vmfs/volumes/vvol:############-##############/#######.#########-####-####-####-##########/VM-000001.vmdk' : One of the parameters supplied is invalid (1)
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - SNAPSHOT: SnapshotBranch failed: One of the parameters supplied is invalid (5).
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - SnapshotVMXTakeSnapshotWork: Transition to mode 1.
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - SnapshotVMXTakeSnapshotComplete: Done with snapshot 'VM Snapshot': 0
YYYY-MM-DDTHH:MM:SS In(05) vcpu-0 - SnapshotVMXTakeSnapshotComplete: Snapshot 0 failed: One of the parameters supplied is invalid (5).ls -alhtr *.vmdk
-rw------- 1 root root 6.3M Oct 15 00:37 VM_Name-ctk.vmdk
-rw------- 1 root root 858 Oct 15 00:40 VM_Name.vmdk
-rw------- 1 root root 710 Oct 30 22:55 VM_Name-000002.vmdk
-rw------- 1 root root 7.8M Jan 9 16:28 VM_Name_1-000001-ctk.vmdk
-rw------- 1 root root 6.3M Jan 9 16:28 VM_Name-000001-ctk.vmdk
-rw------- 1 root root 867 Jan 9 16:34 VM_Name_1-000001.vmdk
-rw------- 1 root root 866 Jan 9 16:34 VM_Name-000001.vmdk
-rw------- 1 root root 819 Jan 9 16:34 VM_Name_1-000002.vmdk
-rw------- 1 root root 813 Jan 9 16:34 VM_Name-000003.vmdk
-rw------- 1 root root 7.8M Jan 9 16:35 VM_Name_1-000002-ctk.vmdk
-rw------- 1 root root 6.3M Jan 9 16:35 VM_Name-000003-ctk.vmdk
Example descriptor file contains the parameter
# Disk DescriptorFile
version=4
encoding="UTF-8"
CID=a3d15d68
parentCID=ffffffff
createType="vmfs"
# Extent description
RW 209715200 VMFS "vsan://################-###############/###############-############"
# Change Tracking File
changeTrackPath="VM_Name-000001-ctk.vmdk"
# The Disk Data Base
#DDB
ddb.adapterType = "lsilogic"
ddb.geometry.cylinders = "13054"
ddb.geometry.heads = "255"
ddb.geometry.sectors = "63"
ddb.longContentID = "##########################"
ddb.nativeDeltaBytes = "105472447744"
ddb.nativeDeltaBytesIsEstimate = "yes"
ddb.objectParentUri = "vsan://################-###############/###############-############"
ddb.thinProvisioned = "1"
ddb.toolsInstallType = "1"
ddb.toolsVersion = "13317"
ddb.uuid = "## ## ## ## ## ## ## ##-## ## ## ## ## ## ## ##"
ddb.virtualHWVersion = "13"
If this was an actual snapshot we would see the below two lines in the descriptor just above the line ddb.objectParentUri =
ddb.nativeParentCID = "fffffffe"
ddb.nativeParentHint = "VM_Name.vmdk"
The snapshot database file VM_Name.vmsd doesn't show any snapshots
cat VM_Name.vmsd
.encoding = "UTF-8"
snapshot.lastUID = "17"
snapshot.uncommittedUID = "17"
If a snapshot was present/active the snapshot database file would look more like so:
cat VM_Name.vmsd
.encoding = "UTF-8"
snapshot.lastUID = "19"
snapshot.current = "18"
snapshot0.uid = "18"
snapshot0.filename = "VM_Name-Snapshot18.vmsn"
snapshot0.displayName = "VM Snapshot dd/mm/yyyy"
snapshot0.createTimeHigh = "411639"
snapshot0.createTimeLow = "38246619"
snapshot0.numDisks = "2"
snapshot0.disk0.fileName = "VM_Name-000001.vmdk"
snapshot0.disk0.node = "scsi#:#"
snapshot0.disk1.fileName = "VM_Name_1-000001.vmdk"
snapshot0.disk1.node = "scsi#:#"
snapshot.numSnapshots = "1"
This is an indicator that the base descriptor file has a delta descriptor naming convention.
ddb.objectParentUri = vsan://<vsanDatastore>/<vmdk_uuid>
or
ddb.objectParentUri = vvol://############-##############/#######.#########-####-####-####-##########'.Method A - Requires VM downtime
This process involves manually editing the vmdk descriptor files to eliminate the metadata causing the problem.
grep ddb.objectParentUri *.vmdkMethod B - Does not require VM downtime
Performing a cross-datastore storage migration from vVols to a traditional VMFS block datastore forces ESXi to reconstruct the virtual disk architecture. Block-based VMFS deployments utilize standard linear file chains rather than native object pointers (vvol:// descriptors). During the data copy and descriptor translation process, advanced storage keys such as ddb.objectParentUri are entirely stripped or omitted from the newly written VMFS descriptor file. This effectively cleans up the underlying metadata discrepancy and permits subsequent snapshot operations to succeed without hitting the validation error.