A migration needs somewhere to hold VM disk copies and run offline disk tools: qemu-img (disk containers), libguestfs (guest filesystems), virt-v2v (whole-guest conversion) and QEMU/KVM (boot tests of converted disks). Stage 0 feasibility section 6 listed three places this could run: a local Linux helper VM on ESXi, an AWS instance, or a Job inside the target cluster. The Stage 1E entry criteria asked for the choice to be recorded as an ADR.
The lab already had two Linux VMs with fixed roles. legacy-source-vm (Vmid 2) is the migration source and must stay an unaltered, running reference. kvm-learning-01 (Vmid 1) is the Stage 1B learning VM and is kept powered off. Stage 1F therefore built a third VM, conversion-host-01 (Vmid 3), for inspection only. Stage 1G then needed a place to run real conversions and boot converted guests, which raised the same question again with higher stakes.
conversion-host-01 is the dedicated host for disk inspection, conversion experiments and QEMU/KVM boot validation in this lab. It is separate from legacy-source-vm and from kvm-learning-01, and neither of those is used for this work.
Operating rules:
C:\VMs\legacy-source-vm\stage-1e\) and is only ever read. Its descriptor and flat extent carry the Windows read-only attribute (set in Stage 1G). It is re-hashed before and after each stage./srv/migration-lab/working/ (mode 0444, chattr +i). Nothing converts in place: every conversion writes to a new path, every output is hashed and then made read-only.--no-install-recommends, and their versions are recorded. They are not upgraded silently. If a tool proves insufficient, the stage stops for review.| Tool | Package version | Role |
|---|---|---|
| qemu-img / qemu-system-x86_64 | 1:8.2.2+ds-0ubuntu1.18 | Container conversion; direct QEMU/KVM boots without libvirt |
| libguestfs, guestfish | 1:1.52.0-5ubuntu3 | Read-only inspection; overlay instrumentation; file-level diffs (guestfs-tools 1.52.0-2ubuntu5) |
| virt-v2v | 2.4.0-2build4 | Guest-aware conversion, -i disk to -o local only |
| nbdkit / libnbd / supermin | 1.36.3 / 1.20.0 / 5.2.2 | virt-v2v and libguestfs dependencies |
| ovmf | 2024.02-2ubuntu0.9 | UEFI firmware for boot tests (OVMF_CODE_4M.fd, Secure Boot off) |
legacy-source-vm stays the unaltered “before” state, so every result can be compared against it and it can serve as the rollback.conversion-host-01 uses 4 vCPU, 8192 MB and a 60 GB thin disk. While it runs, ESXi reports about 8.2 GB of host memory for it, plus an 8 GiB swap file on the datastore. With it and the source running, ESXi uses about 11.3 of 16 GB, so kvm-learning-01 should stay off during conversion work (INFERRED from the numbers, not tested).fstrim after deleting temporary files returns their space to the thin VMDK.C:\VMs\conversion-host-01\) are the reproducible record.virt-v2v -o kubevirt, and anything about Kubernetes, KubeVirt, CDI, AWS or the migration controller (ADR 005).Stage 1F record (host build, toolchain, working copy); Stage 1G record (conversions, boot tests, resource numbers).