Migrating Enterprise VMware Workloads to Oracle Linux KVM (OLVM 4.4): Disk Conversion & Virtio Kernel Tuning

Step-by-step runbook for converting VMDK images to QCOW2, building initramfs with virtio drivers, and optimizing OLVM host memory overcommit.

⚡ BLUF (Bottom Line Up Front) Summary

When migrating Linux VMs from VMware ESXi to Oracle Linux Virtualization Manager (OLVM 4.4), inject virtio_blk and virtio_net drivers into initramfs via dracut BEFORE disk conversion using qemu-img convert -f vmdk -O qcow2 to prevent kernel panic on boot.

Environment & Prerequisites

ComponentVersion / Specification
Source HypervisorVMware ESXi 7.0 / vSphere
Target HypervisorOracle Linux Virtualization Manager (OLVM) 4.4
Host OSOracle Linux 8.6 (UEK R6)
Guest OSOracle Linux 7.9 / Red Hat Enterprise Linux 8

Symptom & Boot Diagnostics

After converting a VMware VM virtual disk to QCOW2 and importing into OLVM, the VM fails to boot, hanging at the initial ramdisk stage:

[   14.209124] dracut-initqueue[412]: Warning: dracut-initqueue timeout - starting timeout scripts
[   14.891002] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Root Cause Analysis

VMware guests utilize SCSI drivers (mptspi or pvscsi). OLVM KVM hypervisors require Linux guest virtio_blk and virtio_net drivers compiled into the initramfs image. If the virtio modules are not included prior to migration, the kernel cannot mount the root filesystem on /dev/vda1.


Step-by-Step Migration Runbook

Step 1: Inject Virtio Drivers into Guest (Before Shutdown)

On the running VMware guest node, update dracut configuration:

# Add virtio modules to dracut configuration
echo 'add_drivers+=" virtio_blk virtio_net virtio_pci virtio_scsi "' > /etc/dracut.conf.d/virtio.conf

# Rebuild initramfs for current kernel
dracut -f -v /boot/initramfs-$(uname -r).img $(uname -r)

Step 2: Convert VMDK Disk Image to QCOW2

On the migration host or staging storage server:

# Convert flat vmdk file to qcow2 format with preallocation
qemu-img convert -p -f vmdk -O qcow2 -o preallocation=metadata \
  /storage/vmware/guest_disk-flat.vmdk \
  /storage/olvm/guest_disk.qcow2

Step 3: OLVM Host Memory & Swappiness Tuning

Configure KVM host kernel parameters to prevent guest memory starvation:

# Set host swappiness to 10
sysctl -w vm.swappiness=10

# Disable Transparent Huge Pages (THP) on OLVM hypervisor nodes
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

Sanitized Log Verification

Run the DBPros collector script locally to sanitize host telemetry before submitting diagnostic bundles:

node ./scripts/collector/dbpros-sanitize-collect.js --input-log /var/log/messages

Need an expert virtualization migration audit? Book an Async Virtualization & OS Health Audit.