Proxmox Import QCOW2 Image
Published: 2021-11-08
Intro
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
KVM/QEMU Host
Start by finding the ID of the VM you want to migrate.
virsh list --all
# Output
Id Name State
----------------------------------------------------
2 uctl01 runningShutdown the target VM.
virsh shutdown 2
# Output
Id Name State
----------------------------------------------------
uctl01 shut offCopy 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.qcow2That's everything that is required on the KVM/QEMU host.
Proxmox 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 socketConfirm the VM was created successfully.
qm list
# Output
VMID NAME STATUS MEM(MB) BOOTDISK(GB) PID
101 uctl01 stopped 4096 0.00 0Import 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-0Attach 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-0Make the disk bootable, otherwise the VM will not boot.
qm set 101 --boot c --bootdisk scsi0
# Output
update VM 101: -boot c -bootdisk scsi0Thats all the steps required to import the VM into the Proxmox host. But we are not finished yet, the VM had no network connectivity 😭.
Virtual Machine
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/passwordConfirm the network interface numbering.
ip addr
# Output
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 applyAnd that's it, the VM should now have network connectivity.
Outro
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.