Quick, practical recipes for common VM migration scenarios. Copy, customize, and run.
By Source Platform:
By Guest OS:
By Complexity:
Each recipe follows this structure:
# Recipe Name
# Use Case: Brief description
# Time: Estimated completion time
# Difficulty: ⭐ Easy | ⭐⭐ Moderate | ⭐⭐⭐ Advanced
command: <command-type>
# ... configuration ...
Use Case: Migrate a single Linux VM from VMware
Time: 10 minutes
Difficulty: ⭐ Easy
command: local
vmdk: /vmware/centos9-web.vmdk
output_dir: /kvm/vms
to_output: centos9-web.qcow2
out_format: qcow2
# Automatic fixes
fstab_mode: stabilize-all
regen_initramfs: true
update_grub: true
compress: true
Run it:
sudo hyper2kvm --config recipe1.yaml
Use Case: Migrate Windows Server with VirtIO drivers
Time: 15 minutes
Difficulty: ⭐⭐ Moderate
command: local
vmdk: /vmware/windows-server-2019.vmdk
output_dir: /kvm/vms
to_output: windows-server-2019.qcow2
out_format: qcow2
# Windows-specific settings
windows_drivers: true
fstab_mode: stabilize-all
update_grub: true
compress: true
report: /kvm/vms/migration-report.md
Run it:
sudo hyper2kvm --config recipe2.yaml
Use Case: Fetch VM directly from ESXi host
Time: 20-30 minutes
Difficulty: ⭐⭐ Moderate
command: fetch-and-fix
host: 192.168.1.100
user: root
identity: ~/.ssh/id_rsa
remote: /vmfs/volumes/datastore1/vm/vm.vmdk
output_dir: /kvm/vms
to_output: migrated-vm.qcow2
# Fixes
fstab_mode: stabilize-all
regen_initramfs: true
update_grub: true
Prerequisites:
# Set up SSH key authentication
ssh-copy-id root@192.168.1.100
Run it:
sudo hyper2kvm --config recipe3.yaml
Use Case: Migrate 10 VMs in parallel
Time: 1-2 hours
Difficulty: ⭐⭐ Moderate
Create batch.yaml:
command: local
batch_manifest: migrations.json
batch_parallel: 3
batch_continue_on_error: true
output_dir: /kvm/batch
Create migrations.json:
{
"migrations": [
{"vmdk": "/vmware/vm1.vmdk", "to_output": "vm1.qcow2"},
{"vmdk": "/vmware/vm2.vmdk", "to_output": "vm2.qcow2"},
{"vmdk": "/vmware/vm3.vmdk", "to_output": "vm3.qcow2"},
{"vmdk": "/vmware/vm4.vmdk", "to_output": "vm4.qcow2"},
{"vmdk": "/vmware/vm5.vmdk", "to_output": "vm5.qcow2"}
]
}
Run it:
sudo hyper2kvm --config batch.yaml
Use Case: Import VMware OVA file
Time: 15 minutes
Difficulty: ⭐ Easy
command: ova
ova: /downloads/exported-vm.ova
output_dir: /kvm/vms
to_output: imported-vm.qcow2
out_format: qcow2
# Fixes
fstab_mode: stabilize-all
regen_initramfs: true
update_grub: true
compress: true
Run it:
sudo hyper2kvm --config recipe5.yaml
Use Case: Migrate PostgreSQL/MySQL server
Time: 30-60 minutes
Difficulty: ⭐⭐⭐ Advanced
command: local
vmdk: /vmware/postgres-server.vmdk
output_dir: /kvm/vms
to_output: postgres-server.qcow2
out_format: qcow2
# Database-safe fixes
fstab_mode: stabilize-all
regen_initramfs: true
update_grub: true
# Performance settings
compress: false # Don't compress for database VMs
preallocate: true # Pre-allocate disk for performance
Additional steps:
# 1. Run migration
sudo hyper2kvm --config recipe6.yaml
# 2. Before starting DB, verify data
virsh start postgres-server --paused
# Mount and check database files
virsh resume postgres-server
Use Case: Migrate Windows desktop VM
Time: 15-20 minutes
Difficulty: ⭐⭐ Moderate
command: local
vmdk: /vmware/windows11-dev.vmdk
output_dir: /kvm/vms
to_output: windows11-dev.qcow2
out_format: qcow2
# Windows desktop settings
windows_drivers: true
fstab_mode: stabilize-all
compress: true
# Keep snapshots if needed
keep_sparse: true
Run it:
sudo hyper2kvm --config recipe7.yaml
Use Case: Fix bootloader without migration
Time: 5-10 minutes
Difficulty: ⭐⭐ Moderate
command: live-fix
host: 192.168.1.100
user: root
identity: ~/.ssh/id_rsa
# Fixes to apply
fstab_mode: stabilize-all
regen_initramfs: true
update_grub: true
Run it:
sudo hyper2kvm --config recipe8.yaml
Use Case: Fix cloned VMware VM with duplicate XFS UUIDs
Time: 10-15 minutes
Difficulty: ⭐⭐ Moderate
command: local
vmdk: /vmware/rhel9-clone.vmdk
output_dir: /kvm/vms
to_output: rhel9-fixed.qcow2
out_format: qcow2
# XFS fixes
xfs_regenerate_uuid: true
fstab_mode: stabilize-all
regen_initramfs: true
update_grub: true
compress: true
Run it:
sudo hyper2kvm --config recipe9.yaml
Use Case: VM with multiple disks
Time: 20-30 minutes per disk
Difficulty: ⭐⭐⭐ Advanced
```bash
sudo hyper2kvm –config « EOF command: local vmdk: /vmware/web-server-disk1.vmdk output_dir: /kvm/vms to_output: web-server-disk1.qcow2 fstab_mode: stabilize-all regen_initramfs: true update_grub: true