hyper2kvm

Failure Modes and Troubleshooting Guide

This document covers common failure scenarios in VM migration and how hyper2kvm addresses them.

Table of Contents

  1. Boot Failures
  2. Storage Issues
  3. Network Problems
  4. Windows-Specific Issues
  5. Conversion Failures
  6. Testing Failures
  7. Debugging Strategies

Boot Failures

Failure: VM boots once, fails after reboot

Symptoms:

Root Cause:

Solution:

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --fix-fstab \
  --use-uuid

Manual Fix:

# Mount the disk
sudo guestfish -a vm.qcow2 -i

# Check fstab
cat /etc/fstab

# Convert to UUID
blkid
# Edit fstab to use UUID=xxx instead of /dev/sdX

Failure: Kernel panic - no initramfs match

Symptoms:

Root Cause:

Solution:

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --regen-initramfs \
  --add-virtio-modules

Manual Fix (Fedora/RHEL):

sudo guestfish -a vm.qcow2 -i
dracut --force --add-drivers "virtio_blk virtio_net virtio_pci" /boot/initramfs-$(uname -r).img $(uname -r)

Failure: GRUB cannot find root device

Symptoms:

Root Cause:

Solution:

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --fix-bootloader \
  --regenerate-grub

Storage Issues

Failure: Corrupted data after conversion

Symptoms:

Root Cause:

Solution:

# Always flatten snapshots
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --flatten \
  --to-output vm.qcow2 \
  --verify

Prevention:

# Check source VMDK integrity first
qemu-img check vm.vmdk
qemu-img info vm.vmdk

# Validate after conversion
qemu-img check vm.qcow2

Failure: Disk full / out of space during conversion

Symptoms:

Root Cause:

Solution:

# Check space before conversion
df -h /output/directory

# Use compression to save space
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --compress \
  --temp-dir /large/partition

Failure: Snapshot chain broken

Symptoms:

Root Cause:

Solution:

# Fetch all related files
sudo python -m hyper2kvm fetch-and-fix \
  --host esxi.example.com \
  --remote /vmfs/volumes/ds1/vm/vm.vmdk \
  --fetch-all \
  --flatten

Network Problems

Failure: No network after migration

Symptoms:

Root Cause:

Solution:

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --fix-network \
  --regenerate-network-config

Manual Fix:

# Check interface names
ip link show

# Regenerate network config
sudo nmcli connection show
sudo nmcli connection delete old-connection
sudo nmcli connection add type ethernet ifname ens3

Failure: Network works but loses config on reboot

Symptoms:

Root Cause:

Solution:

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --clean-udev-rules \
  --fix-network

Windows-Specific Issues

Failure: Windows blue screen (BSOD) on first boot

Symptoms:

Root Cause:

Solution:

# Download VirtIO drivers first
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso

# Inject drivers offline
sudo python -m hyper2kvm local \
  --vmdk windows.vmdk \
  --to-output windows.qcow2 \
  --windows \
  --inject-virtio \
  --virtio-win-iso ./virtio-win.iso

See also: Windows Migration Guide


Failure: Windows boots but no network

Symptoms:

Root Cause:

Solution:

# Use two-phase Windows boot
sudo python -m hyper2kvm local \
  --vmdk windows.vmdk \
  --to-output windows.qcow2 \
  --windows \
  --inject-virtio \
  --virtio-win-iso ./virtio-win.iso \
  --two-phase-boot

Failure: Windows activation issues after migration

Symptoms:

Root Cause:

Solution:

Not a hyper2kvm issue - this is expected Windows behavior.


Conversion Failures

Failure: qemu-img convert fails

Symptoms:

Root Cause:

Solution:

# Try alternative converter
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --use-export

# Or increase resources
ulimit -v unlimited
sudo python -m hyper2kvm local --vmdk vm.vmdk --to-output vm.qcow2

Failure: libguestfs cannot mount filesystem

Symptoms:

Root Cause:

Solution:

# Install filesystem support
sudo dnf install libguestfs-xfs libguestfs-ext2

# Test libguestfs
sudo libguestfs-test-tool

# Skip inspection if needed
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --no-guest-inspection

Failure: Conversion extremely slow

Symptoms:

Root Cause:

Solution:

# Use fast mode
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --no-compress \
  --fast

# Or use multiple threads
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --threads 4

Testing Failures

Failure: libvirt test fails on headless server

Symptoms:

Root Cause:

Solution:

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --qemu-test \
  --headless

Failure: QEMU test times out

Symptoms:

Root Cause:

Solution:

# Increase timeout
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --qemu-test \
  --boot-timeout 600

# Or disable boot test
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --no-test

Debugging Strategies

Enable Debug Logging

sudo python -m hyper2kvm --log-level DEBUG local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --log-file debug.log

Use Dry Run Mode

# Preview what will happen
sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --dry-run

Generate Detailed Report

sudo python -m hyper2kvm local \
  --vmdk vm.vmdk \
  --to-output vm.qcow2 \
  --report migration-report.md

Manual Inspection

# Inspect source VMDK
qemu-img info vm.vmdk
qemu-img check vm.vmdk

# Inspect output
qemu-img info vm.qcow2
qemu-img check vm.qcow2

# Mount and explore
sudo guestfish -a vm.qcow2 -i
><fs> ls /
><fs> cat /etc/fstab
><fs> cat /boot/grub2/grub.cfg

Boot in Rescue Mode

# Boot with serial console
qemu-system-x86_64 \
  -m 2048 \
  -smp 2 \
  -drive file=vm.qcow2,if=virtio \
  -enable-kvm \
  -nographic \
  -serial mon:stdio \
  -append "console=ttyS0"

Common Error Messages

“VFS: Cannot open root device”

“INACCESSIBLE_BOOT_DEVICE (0x0000007B)”

“Could not open backing file”

“guestfs_launch failed”

“No space left on device”


Getting Help

If you encounter issues not covered here:

  1. Enable debug logging: --log-level DEBUG
  2. Generate a report: --report issue-report.md
  3. Check GitHub Issues: https://github.com/ssahani/hyper2kvm/issues
  4. Create a bug report: Use the issue template

Information to Include

When reporting issues, provide: