First, I tracked down this article, which has a pretty good detailed guide of the process. Basically it comes down to the following:
- Export the VM from Hyper-V to get a clean snapshot.
- Transfer the .vmdk files up to the ProxMox host.
- Create a new VM in ProxMox with the same CPU/Memory/Disks.
- Convert the .vmdk files to the KVM format.
- Start the VM and make any other changes, like IP, DNS, etc. that are required if the OS doesn’t detect the changed hardware properly.
There are a few caveats:
- While exporting from Hyper-V, the completion percentage is displayed in the “Status” column of the Hyper-V manager. However that column is not always visible depending on the resolution of the display and how large the window is, so make sure to expand the Hyper-V manager until you can see it.
- In the article, the .vmdk is converted to a .qcow2 file, however for me the default format of disks is actually raw, so replace “-O qcow2” with “-O raw”.
- Similarly, the location of the disks in the article is incorrect, it’s actually in /dev/pve, but that’s actually a link back to /dev/dm-? but you can use either.
That makes the conversion command something like:
qemu-img convert -O raw ~/BootDisk.vhd /dev/pve/vm-102-disk-1
Overall the migration process is quite easy, if a little slow between the transfer of the .vmdk files as well as converting them over to the new format.