published: 8th of November 2021
I recently migrated my homelab servers from running bare metal KVM/QEMU on Ubuntu, to running Proxmox as a hypervisor. As part of that process I migrated some of the VM's from KVM to Proxmox. In this post I will show you how I imported the qcow2 VM's from KVM/QEMU into Proxmox.
The following software was used in this post.
Start by finding the ID of the VM you want to migrate.
virsh list --all
# Output
Id Name State
----------------------------------------------------
2 uctl01 running
Shutdown the target VM.
virsh shutdown 2
# Output
Id Name State
----------------------------------------------------
uctl01 shut off
Copy the qcow2 image to the Proxmox host. I used SCP in the below example.
scp /opt/libvirt/vm/uctl01.qcow2 root@<target-ip>:/tmp/uctl01.qcow2
That's everything that is required on the KVM/QEMU host.
On the Proxmox host, create a new VM that will be used to attach the qcow2 disk that was copied over. Ensure that you use a unique VM ID: 101 in the below example.
qm create 101 \
--name uctl01 --numa 0 --ostype l26 \
--cpu cputype=host --cores 2 --sockets 1 \
--memory 4096 \
--scsihw virtio-scsi-pci \
--net0 bridge=vmbr0,virtio=BE:66:BD:74:E8:C9,firewall=1 \
--serial0 socket
Confirm the VM was created successfully.
qm list
# Output
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
101 uctl01 stopped 4096 0.00 0
Import the qcow2 disk to the required datastore. local-lvm in my case.
qm importdisk 101 /tmp/uctl01.qcow2 local-lvm
# Output
Successfully imported disk as 'unused0:local-lvm:vm-101-disk-0
Attach the disk to the VM created in the previous step.
qm set 101 --scsi0 local-lvm:vm-101-disk-0
# Output
update VM 101: -scsi0 local-lvm:vm-101-disk-0
Make the disk bootable, otherwise the VM will not boot.
qm set 101 --boot c --bootdisk scsi0
# Output
update VM 101: -boot c -bootdisk scsi0
Thats all the steps required to import the VM into the Proxmox host. But we are not finished yet, the VM had no network connectivity ðŸ˜.
When I built the VM on the KVM host, the network interface was named ens3 . When I imported it into Proxmox, the interface named changed to ens18 . The interface name needs to be updated in netplan .
Logon to the console of the VM to update the network interface numbering.
qm terminal 101
# Output
starting serial terminal on interface serial0 (press Ctrl+O to exit)
# Login with username/password
Confirm the network interface numbering.
ip addr
# Output
2: ens18: mtu 1500 qdisc fq_codel state UP group default qlen 1000
...
Update the /etc/netplan/01-netcfg.yaml config file.
# /etc/netplan/01-netcfg.yaml
network:
version: 2
ethernets:
# ens3: <- Change to current interface name
ens18:
dhcp4: no
dhcp6: no
addresses: [<ip-address>/<prefix-length>]
gateway4: <gateway-ip-address>
nameservers:
addresses: [<nameserver-ip-address>]
Apply the netplan config.
sudo netplan apply
And that's it, the VM should now have network connectivity.
In this post, I showed you how to import a QCOW2 VM from a KVM/QEMU host to a Proxmox host and update the network settings on the VM to fix network connectivity.
https://www.reddit.com/r/Proxmox/comments/hwduti/vm_creation_with_cli/
https://vander.host/knowledgebase/operating-systems/how-to-import-a-qcow2-file-to-proxmox/