book
Article ID: 308049
calendar_today
Updated On:
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-8b657a8e-a151-3cd92b04ecdc/VM/VM.vmdk",
--> msg = "Error caused by file /vmfs/volumes/4ff2b68a-8b657a8e-a151-3cd92b04ecdc/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 being reviewed by VMware.
To work around this issue, disable then re-enable Changed Block Tracking (CBT) on the affected virtual machine:
- Remove any existing snapshots. For more information, see Understanding virtual machine snapshots in VMware ESXi and ESX (1015180).
- Disable CBT using the VI API or the Managed Object Browser (MOB):
- To disable CBT using the Managed Object Browser:
Note: For more information on using the Managed Object Browser, see Using the MOB to Explore the Object Model in the vSphere API/SDK Documentation.
- Access the virtual machine in the MOB, and click on the
ReconfigVM_Task
method. - 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);
- Enable CBT using the VI API or Managed Object Browser. Follow the process in step 2, but set the value to
true
.
- Take a snapshot of the virtual machine.
- Call
QueryChangedDiskAreas
with the current snapshot.