QueryChangedDiskAreas API call returns a FileFault error
search cancel

QueryChangedDiskAreas API call returns a FileFault error

book

Article ID: 308049

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction

Symptoms:
When you execute the QueryChangedDiskAreas API call with a snapshot parameter, and with an offset of 0 and a changeId of *, the call returns a FileFault error similar to:

2012-09-04T11:56:17.846+02:00 [03616 info 'Default' opID=52dc4afb] [VpxLRO] -- ERROR task-internal-4118 -- vm-26512 -- vim.VirtualMachine.queryChangedDiskAreas: vim.fault.FileFault:
--> Result:
--> (vim.fault.FileFault) {
--> dynamicType = <unset>,
--> faultCause = (vmodl.MethodFault) null,
--> file = "/vmfs/volumes/4ff2b68a-########-####-########dc/VM/VM.vmdk",
--> msg = "Error caused by file /vmfs/volumes/4ff2b68a-########-####-########dc/VM/VM.vmdk",
--> }



Environment

VMware vSphere Web Services SDK 5.0
VMware vSphere Web Services SDK 4.1

Cause

This issue occurs when attempting to call QueryChangedAreaDisks on a CBT-enabled virtual machine which has been migrated to a different datastore. Occasionally, this issue has also been observed on CBT-enabled virtual machines which have not been migrated.

Resolution

This is a known issue and is under review by VMware.

To work around this issue, disable then re-enable Changed Block Tracking (CBT) on the affected virtual machine:

  1. Remove any existing snapshots. For more information, see Understanding virtual machine snapshots in VMware ESXi and ESX (1015180).

  2. Disable CBT using the VI API or the Managed Object Browser (MOB):

    • To disable CBT using the Managed Object Browser:
    • Access the virtual machine in the MOB,
    • Identify the VM's MOB ID
      Open a web browser to the vCenter Server's Client (HTML5)
      On the left-hand side inventory, select the affected VM
      With the VM selected and highlighted, in the URL bar, review the string and look for "VirtualMachine:vm-xx"
      Example:
      https://ExamplevCenterFQDNorIP/ui/#?extensionId=vsphere.core.vm.summary&objectId=urn:vmomi:VirtualMachine:vm-5008:########-####-####-####-3445fc35c5ba&navigator=vsphere.core.viTree.hostsAndClustersView

      In this example, VM's MOB ID is vm-5008.

    • Access the VM mob page after updating the vCenter FQDN and VM-ID to the below link: https://vCenterFQDNorIP/mob/?moid=<vm-id>
    • Click on the ReconfigVM_Task method.
      1. Modify the VirtualMachineConfigSpec parameter to set changeTrackingEnabled to false.

        For example:

        <spec>
        <changeTrackingEnabled>false</changeTrackingEnabled>
        </spec>


    • To disable CBT using the VI API:

      • Use the setChangeTrackingEnabled API call.

        For example:

        VirtualMachineConfigSpec spec = vimPortType.getVMConfigSpec(vmMor);
        spec = new VirtualMachineConfigSpec();
        spec.setChangeTrackingEnabled(false);
        boolean reconfiguration = vimPortType.reconfigVM(vmMor, spec);


  3. Enable CBT using the VI API or Managed Object Browser. Follow the process in step 2, but set the value to true.

  4. Take a snapshot of the virtual machine.

  5. Call QueryChangedDiskAreas with the current snapshot.


Additional Information

To be alerted when this document is updated, click the Subscribe to Article link in the Actions box

For related information, see Changed Block Tracking (CBT) on virtual machines (1020128).
Understanding VM snapshots in ESXi / ESX
Changed Block Tracking (CBT) on virtual machines