Troubleshooting vJailbreak
Common issues
- VDDK unavailable: VMware’s public download pages are down
- Windows Dynamic Disk (LDM) migration
- nbdcopy fails during disk copy (often DNS resolution)
- virt-v2v fails: rename /sysroot/etc/resolv.conf Operation not permitted
- virt-v2v-in-place fails on RHEL 7: missing GRUB compatibility symlink
- Proxy VM disk attach fails when several migrations start together
- vJailbreak Accelerated Copy fails: could not identify block device
vJailbreak is deployed on Kubernetes running on Ubuntu 22.04.5, and distributed as a QCOW2 image. The Kubernetes namespace migration-system contains the vJailbreak UI and migration controller pods. Each VM migration will spawn a migration object. The status field contains a high level view of the progress of the migration of the VM. For more details about the migration, check the logs of the pod specified in the Migration object.
Getting logs
List all pods in the migration namespace
kubectl -n migration-system get podFind a specific VM migration pod
kubectl -n migration-system get pod | grep <source VM name>Get details & events for a v2v-helper pod. This is helpful if a migration is stuck in a pending state, or to track the progress of a migration without the UI.
kubectl -n migration-system describe pod <v2v-helper-pod-name>Get logs for a specific migration pod. This shows more detail than describe pod.
kubectl logs <pod> -n migration-systemGet logs for the migration-controller-manager
kubectl logs -n migration-system deploy/migration-controller-managerTurn on Debug Mode
kubectl patch configmap -n migration-system migration-config-<vm-name> --type merge -p '{"data":{"DEBUG":"true"}}'A migration is stuck in pending
If the migration was set to Retry on Failure, then delete the v2v-helper pod for that VM and collect the logs of the pod that comes up.
kubectl delete pod -n migration-system v2v-helper-<vm-name>If the v2v-helper pod doesn’t come back up, and you can’t delete the migration in the UI, then delete the associated migrationplan.
- First, get the
migrationplanobject name UUID for the associated VMs:
kubectl get migrationplans -n migration-system -o yaml- Then delete the
migrationplanobject, which should remove it from the UI.
kubectl delete migrationplan <UUID> -n migration-systemA migration failed and I want to run it again
Use the Retry action on the failed migration in the vJailbreak UI. It reopens the migration form pre-filled with the original configuration, so you can correct the setting that caused the failure before starting again. To restart several failed migrations without changing anything, select them in the Migrations table and use Retry Selected.
See Retry a Failed Migration for the full workflow and its limitations.
Get all vJailbreak custom resource definitions (CRDs)
kubectl get migrationplans,migrations,migrationtemplates,networkmappings,openstackcreds,storagemappings,vmwarecreds,secrets -n migration-system -o yamlvirt-v2v fails: rename /sysroot/etc/resolv.conf Operation not permitted
-
Symptom
virt-v2vorvirt-v2v-in-placefails with an error similar to:renaming /sysroot/etc/resolv.conf to /sysroot/etc/6vvk9gzdguestfsd: error: rename: /sysroot/etc/resolv.conf to /sysroot/etc/6vvk9gzd: Operation not permittedcommandrvf: stdout=n stderr=n flags=0x0commandrvf: umount /sysroot/sysvirt-v2v-in-place: error: libguestfs error: sh_out: rename: /sysroot/etc/resolv.conf to /sysroot/etc/6vvk9gzd: Operation not permitted -
Cause
On some Linux VMs,
/etc/resolv.confis marked immutable. Whenvirt-v2vtries to rename or replace this file inside the guest filesystem during conversion, the immutable attribute prevents the operation and conversion fails.You can confirm the immutable bit inside the source VM with:
Terminal window lsattr /etc/resolv.conf----i----------------- /etc/resolv.confThe
iflag indicates the file is immutable. -
Resolution
-
Remove the immutable attribute inside the source VM before migration:
Terminal window chattr -i /etc/resolv.conf -
Verify the attribute is gone:
Terminal window lsattr /etc/resolv.conf---------------------- /etc/resolv.conf -
Re-run the migration.
-
-
Notes
- This is a known and documented
virt-v2vissue. See upstream documentation. - If configuration management or security hardening marks
/etc/resolv.confimmutable, ensure this is unset before conversion, or adjust your automation so VMs intended for conversion do not have/etc/resolv.confmarked immutable.
- This is a known and documented
Disk attach fails during migration: No more available PCI slots
-
Symptom
During a migration, attaching a target volume to the vJailbreak VM (or an agent VM) fails. The
nova-computelog on the OpenStack side shows an error similar to:TRACE nova.virt.libvirt.driver [instance: <uuid>] libvirt.libvirtError: internal error: No more available PCI slots -
Cause
During conversion, vJailbreak attaches the target Cinder volumes to the vJailbreak VM (or its agent VMs) to copy and convert the disk data. If the vJailbreak image was uploaded without a disk bus setting, OpenStack attaches these volumes using the default virtio-blk bus, where every attached volume is a separate PCI device and consumes its own PCI slot.
The virtual PCI bus has a limited number of slots, several of which are already used by essential devices (network interfaces, video, memory balloon, and so on). Migrating VMs with many disks — or running many migrations in parallel on one agent — exhausts the available PCI slots, and the volume attach fails with the error above.
-
Resolution
Configure the vJailbreak image to use the virtio-scsi disk bus. With virtio-scsi, all attached volumes share a single SCSI controller that consumes only one PCI slot and supports up to 256 devices.
-
Set the following properties on the vJailbreak image before creating the vJailbreak VM:
Terminal window openstack image set \--property hw_disk_bus=scsi \--property hw_scsi_model=virtio-scsi \<vjailbreak-image-name-or-ID> -
Deploy the vJailbreak VM from the updated image, then re-run the migration.
-
-
Notes
- The disk bus is fixed when the VM is created. If your vJailbreak VM is already deployed, setting the properties on the image is not enough — you must recreate the vJailbreak VM from the updated image.
- Agent VMs created during scale up use the same image, so set these properties before scaling up agents.
- See also: Known Limitations.
virt-v2v-in-place fails on RHEL 7: missing GRUB compatibility symlink
-
Symptom
A RHEL 7.x migration fails during
virt-v2v-in-place, after disk copy and volume attach/detach have already succeeded. The migration log only shows:failed to run virt-v2v-in-place: exit status 1The debug log under
/var/log/pf9/(see Debug Logs) shows the actual error:virt-v2v-in-place: error: libguestfs error: command:error opening /boot/grub/grub.cfg for read:No such file or directory -
Cause
RHEL 7’s
grubby, used internally byvirt-v2v-in-place, expects/boot/grub/grub.cfgto be a symlink to/boot/grub2/grub.cfg. On affected guests GRUB2 itself is configured correctly, but this compatibility symlink is missing, sogrubby’s file open fails. This is unrelated to SUSE Legacy GRUB 0.97, which requires a GRUB2 upgrade instead. -
Resolution
Before migrating a BIOS RHEL 7 guest, confirm:
/boot/grub2/grub.cfgexists and is non-empty (regenerate withgrub2-mkconfig -o /boot/grub2/grub.cfgif not)./boot/grub/grub.cfgexists as a symlink to../grub2/grub.cfg(mkdir -p /boot/grub && ln -sfn ../grub2/grub.cfg /boot/grub/grub.cfgif missing)./etc/grub2.cfgand/etc/grub.confresolve to the same file — recreate the same way if broken.
Then re-run the migration.
-
Notes
- Check ahead of a migration wave:
test -L /boot/grub/grub.cfg && echo OK || echo MISSING. - Observed on RHEL 7.9 (Maipo); other RHEL 7.x releases with the same layout may be affected.
- See also: Known Limitations.
- Check ahead of a migration wave:
VDDK unavailable: VMware’s public download pages are down
-
Symptom
VMware’s public VDDK download pages are currently unavailable. You cannot download VDDK from VMware’s official site.
-
Impact
Only the Standard copy method requires VDDK. vJailbreak Accelerated Copy and Storage-Accelerated Copy do not need VDDK and are fully unaffected.
-
Resolution
Use vJailbreak Accelerated Copy or Storage-Accelerated Copy instead of Standard copy. Both methods work without VDDK installed on the vJailbreak appliance.
See vJailbreak Accelerated Copy and Storage-Accelerated Copy for setup instructions.
Proxy VM disk attach fails when several migrations start together
-
Symptom
A batch of vJailbreak Accelerated Copy migrations is started at once. Some of them fail early with a vCenter error while attaching the source snapshot disks to the Proxy VM, while the rest continue into the copy phase without any problem.
-
Cause
Each migration attaches its source disks to the Proxy VM as a vCenter VM reconfigure task. When several migrations issue these tasks against the same Proxy VM simultaneously, vCenter does not always serialize them gracefully and rejects some of the attach requests.
This is a transient race condition — the Proxy VM, its credentials, and its configuration are all fine. Only the migrations that lost the race are affected.
-
Resolution
- Let the surviving migrations progress past the attach step and into the copy phase.
- Retry the failed migrations. They normally succeed on the second attempt.
-
Notes
- To reduce the chance of hitting this, stagger migration start times rather than starting a large batch at once, or register additional Proxy VMs and distribute migrations across them.
- Use the data copy start time option to spread a wave of migrations over a window.
- See also: Known Limitations.
vJailbreak Accelerated Copy fails: could not identify block device
-
Symptom
A vJailbreak Accelerated Copy migration fails after the snapshot disk has been attached to the Proxy VM:
could not identify block device for disk <uuid> -
Cause
vJailbreak locates each attached disk inside the Proxy VM by matching its disk UUID to a block device. Two conditions must be met for this to work:
disk.EnableUUIDis set toTRUEon the Proxy VM, so the UUID is visible to the guest.- The Proxy VM’s first SCSI controller (SCSI controller 0) is of type VMware Paravirtual (PVSCSI). Only PVSCSI is supported — LSI Logic SAS, LSI Logic Parallel, and BusLogic Parallel controllers do not work.
-
Resolution
- Confirm
disk.EnableUUID = TRUEon the Proxy VM: vSphere Client → Edit Settings → VM Options → Advanced → Edit Configuration. - Confirm SCSI controller 0 is VMware Paravirtual. If it is not, power off the Proxy VM, then in Edit Settings → Virtual Hardware set SCSI controller 0 → Change Type → VMware Paravirtual, and power it back on.
- Re-verify the Proxy VM in the vJailbreak UI and re-run the migration.
- Confirm
-
Notes
- SSH into the Proxy VM and run
lsblkto confirm the attached disks are visible to the guest. - Check vCenter events on the Proxy VM for disk attach errors if the disk never appears.
- See also: Known Limitations and Configure the SCSI Controller Type on the Proxy VM.
- SSH into the Proxy VM and run