Test recovery fails for certain virtual machines with the error "A specified parameter was not correct : spec.deviceChange.device"
search cancel

Test recovery fails for certain virtual machines with the error "A specified parameter was not correct : spec.deviceChange.device"

book

Article ID: 407847

calendar_today

Updated On:

Products

VMware Live Recovery

Issue/Introduction

Symptoms:

  • Initiating a test failover fails at the Create writable storage snapshot phase for few virtual machines with the error "A specified parameter was not correct : spec.deviceChange.device"


  • The virtual machines are registered on VSAN datastore on the production site and a storage policy mapping is added for the policy used by the virtual machine

    For instance, in the below screenshot, virtual machines on the production site are on VSAN datastore and is using the policy VSAN Cluster Policy and on the DR site, virtual machines are replicating to a VMFS datastore and a policy ISCSI storage policy is created for the VMFS datastore

  • Few of the virtual machines added for replication is configured with storage policy while few of them are not. The ones which are not configured with a specific policy will have the storage policy Datastore Default

Environment

VMware Live Site Recovery 8.x

VMware Live Site Recovery 9.x

Cause

The error "A specified parameter was not correct: spec.deviceChange.device" occurs when there is a conflict in the storage policy mapping and the storage policy applied when configuring replication of the virtual machine.

Cause Verification

From /opt/vmware/support/logs/srm/vmware-dr.log file of the DR site srm appliance, we can see that the test recovery for the virtual machine failed at the create writable storage snapshot phase as it was unable to apply the storage policy  

2025-08-07T16:42:34.125+05:30 verbose vmware-dr[01566] [SRM@6876 sub=Replication opID=4f52920b-7fa7-xxxx-xxxx-xxxxxxxxxxxx-test:xxxx:xxxx:xxxx:xxxx] EntityFailed: Received a failure update for protected VM Id=[dr.replication.ProtectedVm:2ecbff9b-xxxx-xxxx-xxxx-xxxx:protected-vm-xxxxx], error=
--> (vmodl.fault.InvalidArgument) {
-->    faultCause = (vmodl.MethodFault) null,
-->    faultMessage = (vmodl.LocalizableMessage) [
-->       (vmodl.LocalizableMessage) {
-->          key = "msg.disk.policyChangeFailure",
-->          arg = (vmodl.KeyAnyValue) [
-->             (vmodl.KeyAnyValue) {
-->                key = "1",
-->                value = "msg.disklib.INVAL"
-->             }
-->          ],
-->          message = "Storage policy change failure: One of the parameters supplied is invalid."
-->       },
-->       (vmodl.LocalizableMessage) {
-->          key = "msg.disklib.policy.noFilterSnap",
-->          arg = <unset>,
-->          message = "The IO Filter policy cannot be changed when snapshot disks are present."
-->       }
-->    ],
-->    invalidProperty = "spec.deviceChange.device"
-->    msg = "A specified parameter was not correct: spec.deviceChange.device"
--> } 

On logging in to the target ESXi host and validating the descriptor file (.vmdk) of the working and non working vm, we can see that the working vm has the ddb.iofilters and ddb.sidecars updated in the descriptor file which indicates that while the virtual machine was added for replication, a specific storage policy was created. While for the non working vm which is using the Datastore Default policy these details are missing in the descriptor file.

Working vm

# Disk DescriptorFile
version=5
encoding="UTF-8"
CID=df917339
parentCID=ffffffff
createType="vmfs"

# Extent description
RW 419430400 VMFS "test-flat. vmdk"

# The Disk Data Base
#DDB

ddb. adapterType = "lsilogic"
ddb.geometry.biosCylinders = "0"
ddb. geometry.biosHeads = "0"
ddb.geometry.biosSectors = "0"
ddb. geometry.cylinders = "26108"
ddb. geometry.heads = "255"
ddb. geometry.sectors = "63"
ddb.iofilters = "spm"
ddb. longContentID = "##########################"
ddb.sidecars = "spm_2, test-071f087f66b8d559.vmfd"
ddb. thinProvisioned = "1"
ddb. toolsVersion = "12451"
ddb.uuid = "## ## ## ## ## ## ## ## ## ## ## ## ## ##"
ddb. virtualHWVersion = "14"
test. vmdk (END)

Non working vm

# Disk DescriptorFile
version=1
encoding="UTF-8"
CID=c5043919
parentCID=ffffffff
createType="vmfs"

# Extent description
RW 419430400 VMFS "test-flat. vmdk"

# The Disk Data Base
#DDB

ddb. adapterType = "lsilogic"
ddb. geometry.biosCylinders = "0"
ddb. geometry.biosHeads = "0"
ddb. geometry.biosSectors = "0"
ddb. geometry. cylinders = "26108"
ddb.geometry.heads = "255"
ddb. geometry. sectors = "63"
ddb. longContentID = "##########################"
ddb. thinProvisioned = "1"
ddb. toolsVersion = "12451"
ddb.uuid = "## ## ## ## ## ## ## ## ## ## ## ## ## ##"
ddb. virtualHWVersion = "14"
test. vmdk (END)

Resolution

In order to resolve this issue, remove the virtual machine from replication and add the virtual machine for replication using the correct storage policy

Or if the storage policy mapping is not required, you can remove the same and the test will work for both vms which are configured with ISCSI Storage Policy and vms configured with Datastore Default.