Comprehensive checklists for planning and executing VM migrations with Hyper2KVM.
# For each VM
./scripts/vmdk_inspect.py /path/to/vm.vmdk > inspection-report.txt
pip install "hyper2kvm[full]"
h2kvmctl --version
qemu-img --version
python3 --version
df -h # Check disk space
free -h # Check memory
# Verify disk space
df -h /output/directory
# Check system load
uptime
# Verify network
ping -c 4 esxi-host.example.com
# Start migration
h2kvmctl --config vm-migration.yaml
# Monitor progress
tail -f /var/log/hyper2kvm/migration.log
# Verify output file
qemu-img info /output/vm.qcow2
qemu-img check /output/vm.qcow2
# Check size
ls -lh /output/vm.qcow2
# Test boot (if libvirt_test enabled)
virsh list --all
virsh start test-vm
virsh console test-vm
# Create libvirt domain
virsh define vm.xml
# Start VM
virsh start vm-name
# Verify status
virsh list
# Console access
virsh console vm-name
# Check logs
journalctl -b
dmesg | grep -i error
cat /etc/fstab
mount | grep -v tmpfs
df -h
ip addr show
ip route show
ping -c 4 8.8.8.8
systemctl status
systemctl list-units --failed
ipconfig /all
ping 8.8.8.8
Test-Connection google.com
# Disk performance
fio --name=randwrite --ioengine=libaio --iodepth=16 \
--rw=randwrite --bs=4k --direct=1 --size=1G \
--numjobs=4 --runtime=60
# Network performance
iperf3 -c target-host
virsh shutdown vm-name
# If doesn't respond
virsh destroy vm-name
# On VMware
# 1. Remove snapshot if migration successful
# 2. Or restore from snapshot if VM was modified
# 3. Power on source VM
Additional checks:
Additional checks:
Additional checks:
VM Name: _______________
OS: _______________
Size: _______________
Priority: _______________
Pre-Migration:
[ ] Backup created: _______________
[ ] Inspection done: _______________
[ ] Config prepared: _______________
Migration:
[ ] Started: _______________
[ ] Completed: _______________
[ ] Output verified: _______________
Post-Migration:
[ ] Boot test: _______________
[ ] Network test: _______________
[ ] App test: _______________
[ ] Sign-off: _______________
Batch Name: _______________
Number of VMs: _______________
Schedule: _______________
Pre-Migration:
[ ] All VMs backed up
[ ] All configs prepared
[ ] Capacity verified
[ ] Team notified
Migration:
[ ] Batch started: _______________
[ ] VMs completed: _____ / _____
[ ] Errors: _______________
Post-Migration:
[ ] All VMs booted
[ ] All VMs validated
[ ] All apps tested
[ ] Batch sign-off: _______________
Create simple text files from templates above:
# Generate migration checklist for VM
cat > migration-checklist-${VM_NAME}.txt << 'EOF'
MIGRATION CHECKLIST - ${VM_NAME}
================================
PRE-MIGRATION
[ ] Backup created
[ ] Inspection complete
[ ] Config validated
[ ] Team notified
MIGRATION
[ ] Start time: _______
[ ] End time: _______
[ ] Status: _______
POST-MIGRATION
[ ] Boot validated
[ ] Network validated
[ ] Applications tested
[ ] Sign-off: _______
EOF
#!/bin/bash
# quick-validate.sh - Post-migration validation
VM_NAME=$1
echo "=== Quick Validation for $VM_NAME ==="
# Check VM status
echo -n "VM Status: "
virsh domstate $VM_NAME
# Check if VM is running
if [ "$(virsh domstate $VM_NAME)" != "running" ]; then
echo "ERROR: VM is not running"
exit 1
fi
# Check console output for errors
echo "Checking for errors..."
virsh console $VM_NAME --force &
CONSOLE_PID=$!
sleep 5
kill $CONSOLE_PID 2>/dev/null
# Check domain XML
echo "Checking configuration..."
virsh dumpxml $VM_NAME | grep -q "qcow2" && echo "✓ Using qcow2"
# Check network
echo "Checking network..."
virsh domifaddr $VM_NAME
echo "=== Validation Complete ==="
A migration is successful when:
A batch migration is successful when:
Last Updated: February 2026 Documentation Version: 2.1.0