Solution:
Purpose
When protecting a VM with RDM LUNs in a Zerto Virtual Replication VPG, an administrator may see that the VPG unexpectedly drops into a “Needs Configuration” status with subtext similar to the following:
The RDM {0} for the VM {1} in VPG {2} has an odd number of blocks, which can only be replicated to a target RDM and not to a VMDK.
This behavior will also occur when attempting to protect a VM with such an RDM, resulting in an error similar to the following:
protected RDM with odd blocks: vm = [VM {1}, server {2}, size in bytes = {3}, internal name = {4}
This article outlines the cause for this behavior, as well as a means to workaround it.
Affected Versions
ZVR 3.1 Update 6, 3.5 all updates, 4.0 and greater
Complexity
High
Solution
The root cause of this behavior is that an RDM LUN with an odd number of blocks is attached to a VM that is already configured or is being configured to be protected with ZVR. A standard block is 512 bytes, meaning that it is not a multiple of KB, the units in which VMware provisions virtual disks.
As a result the following limitations apply to protecting RDM disks with ZVR:
- RDM disks with an even number of blocks can replicate to RDM disks of the same size with an even number of blocks and to VMDKs.
- RDM disks with an odd number of blocks can only replicate to RDM disks of the same size with an odd number of blocks and not to VMDKs.
If a VPG enters Needs Configuration status, or is unable to be created, for the reason above, the administrator will need to change the RDM LUN sizing to contain an even number of blocks. In order to identify which RDM LUN is at fault, the following procedure can be followed by utilizing the vCenter’s managed object browser (MOB):
- Open the vCenter MOB by browsing to https://vcenterIP/mob.
- Once inside the vCenter MOB browse to the relevant VM configuration by changing the URL in the browser to https://vcenterIP/mob/?moid=vm-#### (for the vm-#### you will need to enter the VM’s MOREF ID.)
- At the VM level, choose Config > Hardware.
- At the hardware level, located the RDM device and select the device[####] field.
- After selecting the device and verifying it is the RDM, take note of the capacityInKB field, and select the backing value to progress to the backing screen.
- At the backing level record the lunUuid value.
- After recording the lunUuid value, go back up to the VM level, and select runtime.
- Within the runtime you will see the host this VM is running on. Select the host-xx and enter the host level.
- Within the host level, select config, and then within config select storageDevice.
- From within storage device, search (via ctrl + F) for the lunUuid recorded previously - you should see the ID in the following form within a link starting with scsiLun:
- Select the link, and look for and select the capacity value.
- Within the capacity menu, you should see the values needed.
- If the block length is an odd number, the calculation of capacityInKB (step 5) will be off by one block.
- To correct this, change the RDM size such that the block length is an even number.