Unable to perform Replication-assisted vMotion (RAV) or Bulk Migration of a VM due to lwd I/O filter enabled on its virtual disks.
book
Article ID: 314160
calendar_today
Updated On:
Products
VMware HCXVMware Live RecoveryVMware Cloud on AWS
Issue/Introduction
Unable to perform bulk migration in VMC on some machines because of an LWD I/O error.
Unable to perform Replication-assisted vMotions due to LWD I/O filter attached to VM.
When trying to use RAV or Bulk Migrate a VM protected by VCDR or other backup solution that leverages LWD snapshots the migration will fail its validation. HCX UI shows the error: Cannot migrate VM as it has LWD I/O filter enabled on its virtual disks
Environment
VMware HCX
Cause
HCX Bulk Migration and Replication-assisted vMotion are not compatible with LWD I/O filters.
Resolution
To perform Replication-assisted vMotions or Bulk migrations, ensure that the lwd I/O filter has been removed from each VM being migrated. Protection can be re-enabled on the VM at a later point.
For VMC on AWS environments:
Broadcom VMC on AWS Support can assist in removing the LWD I/O filter from the affected VM within a VMC SDDC.
Create a support ticket with Broadcom VMC on AWS Support to request assistance in having this resolved.
For On-premise (or self-managed) environments:
The attached script (lwd-cleanup-util.py) is a pyVmomi-based utility that allows users to first list LWD-protected virtual machines in the vCenter inventory, before then disabling LWD protection for selected virtual machines on a vSphere vCenter server where needed.
The script requires the VMware vSphere API Python bindings. In particular, it requires the below dependencies, all of which are satisfied by the VMware vCenter Appliance:
pyVim (vm, folder, connect)
pyVmomi (with vim version of at least vim.version.v7_0_2_1)
six (a single-file opensource dependency used by pyVim and pyVmomi)
Move the script into the vCenter Appliance and SSH to it.
For command line help: #python lwd-cleanup-util.py --help
Execution Steps
Use one or more of the below list commands to confirm which VM's are LWD-protected:
List all LWD-protected VM(s) which are protected by any vendors (including VMs protected by a vendor without a vendor ID). #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' --list #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' --list --all-vendors
List all LWD-protected VM(s) which are protected by 'myVendor'. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' --list -i myVendor
List all LWD-protected VM(s) which are protected but do not have an associated vendor ID. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' --list -i ""
Use the below commands to remove the I/O filter from the needed VM's:
Disable LWD protection provided by 'myVendor' if present on the specified VM. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' -d -i myVendor -m <VM_ID>
Disable LWD protection provided by a vendor which didn't specify a vendor ID, if present on the specified VM. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' -d -i "" -m <VM_ID>
Disable LWD protection provided by any vendor, if present on the specified VM. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' -d --all-vendors -m <VM_ID>
Disable LWD protection provided by 'myVendor' if present on the specified VMs. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' -d -i myVendor -m <VM_ID_1> -m <VM_ID_2> -m <VM_ID_3>
Disable LWD protection provided by 'myVendor' for all VMs. #python ./lwd-cleanup-util.py -u 'administrator@vsphere.local' -d -i 'myVendor' --all
To list LWD protected VM's under a remote vCenter and to remove the I/O filter from them, use the below commands:
Connect to a remote vCenter Server to list LWD protected VMs. #python ./lwd-cleanup-util.py -r <vCenter_IP_ADDRESS> -u 'administrator@vsphere.local' --skipCertCheck -l
Connect to a remote vCenter Server to disable LWD protection provided by 'myVendor' for all LWD-protected VMs. #python ./lwd-cleanup-util.py -r <vCenter_IP_ADDRESS> -u 'administrator@vsphere.local' -d -i myVendor -all
Use custom pyVpx library from 'pyVpx' subfolder to connect to a remote vCenter Server and disable LWD protection provided by 'myVendor' for all LWD-protected VMs. #python ./lwd-cleanup-util.py -r <vCenter_IP_ADDRESS> -u 'administrator@vsphere.local' -d -i myVendor --all --pyVpx pyVpx