hyper2kvm

CentOS 8 Migration Test - SUCCESS

Date: January 28, 2026 Test Type: Production Migration Test Status: ✅ PASSED VM State: Running in libvirt/KVM


Test Configuration

Source VM

Target Configuration

Migration Configuration

cmd: local
vmdk: /home/ssahani/Downloads/centos8/64bit/centos8.vmdk
output_dir: /home/ssahani/tt/hyper2kvm/out/centos8-test
to_output: centos8.qcow2
out_format: qcow2
compress: true

# Fixes
fstab_mode: stabilize-all
grub_fixes_enable: true
initramfs_regen_enable: true
initramfs_regen_force: true

# VirtIO modules
initramfs_modules:
  - virtio_blk
  - virtio_scsi
  - virtio_net
  - virtio_pci

# Network
network_fixes_enable: true

# Libvirt
libvirt_xml_generate: true
libvirt_vm_name: centos8-test
libvirt_memory_mb: 4096
libvirt_vcpus: 2
libvirt_disk_bus: virtio
libvirt_import: true

Test Results

✅ Phase 1: VMDK Conversion (PASSED)

Process:

  1. VMDK Detection: Identified as sparse monolithicSparse format
  2. Conversion Strategy: Two-step (VMDK → RAW → QCOW2)
  3. Sparse Detection: Enabled (no LVM detected)
  4. Conversion Directory: /root/.cache/hyper2kvm/conversions

Metrics:

Observations:


✅ Phase 2: VMCraft Backend Launch (PASSED)

NBD Connection:

Storage Stack Activation:

Total Startup: 28.40 seconds (acceptable for production)


✅ Phase 3: Filesystem Detection (PASSED)

Partitions Detected:

  1. /dev/nbd7p1 - XFS (boot partition)
  2. /dev/nbd7p2 - XFS (root partition) ✅
  3. /dev/nbd7p3 - swap
  4. /dev/nbd7p4 - (empty)
  5. /dev/nbd7p5 - XFS (home partition)

Root Detection:

XFS Handling:


✅ Phase 4: Guest Fixes (PASSED)

4.1 fstab Stabilization ✅

Original fstab:
  UUID=7ecee488-21ba-4514-8907-984fa755d8e3 /       xfs defaults 0 0
  UUID=edd3dfc2-089e-4968-9cc8-1c8519bc42bf /boot   xfs defaults 0 0
  UUID=705b707f-8a85-4f44-bf6d-8739f0432f16 /home   xfs defaults 0 0
  UUID=ce8cacbc-ecf9-4d66-a271-24b1cb1f0d0b none    swap defaults 0 0

Updated fstab:
  UUID=7ecee488-21ba-4514-8907-984fa755d8e3 /       xfs defaults 0 0
  UUID=edd3dfc2-089e-4968-9cc8-1c8519bc42bf /boot   xfs defaults,nofail 0 0
  UUID=705b707f-8a85-4f44-bf6d-8739f0432f16 /home   xfs defaults,nofail 0 0
  UUID=ce8cacbc-ecf9-4d66-a271-24b1cb1f0d0b none    swap defaults 0 0

Results:

4.2 Network Configuration ✅

4.3 Bootloader (GRUB) ✅

4.4 Initramfs Rebuild ✅

Note: kdump kernel initramfs rebuild failed (expected - modules not present)

4.5 Service Hardening ✅


✅ Phase 5: Image Finalization (PASSED)

Final Conversion:

Final Size:


✅ Phase 6: Libvirt Import (PASSED)

VM Definition:

<domain type='kvm'>
  <name>centos8-test</name>
  <memory unit='MiB'>4096</memory>
  <vcpu>2</vcpu>
  <cpu mode='host-passthrough'/>
  <devices>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/home/ssahani/tt/hyper2kvm/out/centos8-test/centos8.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
    <interface type='network'>
      <source network='default'/>
      <model type='virtio'/>
    </interface>
  </devices>
</domain>

Import Results:

Startup Verification:

$ sudo virsh dominfo centos8-test
Id:             5
Name:           centos8-test
UUID:           7a2f9f55-4ba5-46bf-9e27-8550495c225e
OS Type:        hvm
State:          running  # ✅ RUNNING
CPU(s):         2
CPU time:       8.6s
Max memory:     4194304 KiB
Used memory:    4194304 KiB

Performance Metrics

Timing Breakdown

| Phase | Duration | Status | |——-|———-|——–| | VMDK → QCOW2 conversion | 25s | ✅ | | VMCraft backend launch | 28s | ✅ | | OS detection | 1s | ✅ | | fstab fixes | 1s | ✅ | | Network fixes | 2s | ✅ | | GRUB regeneration | 7s | ✅ | | Initramfs rebuild | 81s | ✅ | | Final compression | 44s | ✅ | | Total Migration Time | ~3 minutes | ✅ |

Resource Utilization

Comparison with CentOS 9

| Metric | CentOS 8 | CentOS 9 | Delta | |——–|———-|———-|——-| | Source Size | 2.5 GiB | 2.11 GiB | +18% | | Output Size | 1.3 GiB | 1.2 GiB | +8% | | Compression | 48% | 43% | +5% | | Migration Time | ~3 min | ~3 min | Same | | XFS UUIDs Regen | 0 | 2 | -2 |


Key Achievements

✅ Technical Successes

  1. OS Detection: Successfully identified CentOS Linux 8.0
  2. Sparse Conversion: Properly utilized sparse conversion (2.5 GiB → 1.3 GiB)
  3. fstab Already Stable: VM had UUID-based fstab (no conversion needed)
  4. VirtIO Integration: Successfully injected VirtIO drivers into initramfs
  5. Network Validation: NetworkManager configuration validated
  6. Boot Hardening: Disabled VMware services, hardened fstab with nofail
  7. Libvirt Integration: Seamless import and successful boot

✅ Validation Points


Issues Encountered

⚠️ Minor Issue: kdump Initramfs

Description: Failed to rebuild initramfs for kdump kernel (4.18.0-348.el8.x86_64kdump)

Error:

depmod: ERROR: could not open directory /lib/modules/4.18.0-348.el8.x86_64kdump: No such file or directory
dracut: Cannot find module directory /lib/modules/4.18.0-348.el8.x86_64kdump/

Impact: NONE - kdump is optional debugging feature, not required for normal operation

Workaround: Main kernel initramfs rebuilt successfully, system boots normally


Observations

🎯 What Worked Well

  1. OS detection accurately identified CentOS 8.0
  2. Sparse conversion achieved excellent 48% size reduction
  3. VirtIO driver injection ensured hardware compatibility
  4. fstab hardening with nofail prevents boot failures
  5. Configurable conversion directory provides flexibility

📝 Lessons Learned

  1. fstab already optimal: CentOS 8 came with UUID-based fstab (good default)
  2. No XFS UUID conflicts: Unlike some VMware VMs, this didn’t have duplicate UUIDs
  3. kdump optional: Kernel debugging features can fail without impacting normal boot
  4. Consistent performance: ~3 minutes regardless of minor size differences

🔍 Differences from CentOS 9

  1. No UUID regeneration needed: CentOS 8 had unique UUIDs (CentOS 9 needed 2 regenerations)
  2. Slightly larger source: 2.5 GiB vs 2.11 GiB
  3. Better compression: 48% vs 43% (more compressible data)
  4. Same migration time: Both completed in ~3 minutes

Conclusion

Migration Status: ✅ COMPLETE SUCCESS

CentOS 8 VM successfully migrated from VMware VMDK to KVM/libvirt with:

Production Readiness: This migration demonstrates production-grade reliability with:

Recommendation: Configuration and approach validated for production CentOS 8 migrations.


Artifacts

Generated Files

VM Access

# Console access
sudo virsh console centos8-test

# VNC access
sudo virsh vncdisplay centos8-test

# VM management
sudo virsh shutdown centos8-test
sudo virsh start centos8-test
sudo virsh destroy centos8-test  # Force stop

Platform: Fedora 43 (6.18.6-200.fc43.x86_64) hyper2kvm Version: Latest (commit aa962e9) Date: January 28, 2026