Proxmox Import QCOW2 Image
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.
- Proxmox - 7.0-11
- Ubuntu - 18.04
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.