I’ve got a bunch of existing VirtualBox and VMWare VMs that I want to run on Proxmox. Eventually I’ll migrate them to containers, but for the time being run them as “fat” VMs using Proxmox’s KVM virtualisation. After copying the OVA files that I had to the server, I uncompressed them:
root@proxmox01:/data04/vms/bdl44-biwa# cd ../bdl44
root@proxmox01:/data04/vms/bdl44# ll
total 27249328
-rw------- 1 root root 27903306752 Jun 1 10:14 BigDataLite440.ova
root@proxmox01:/data04/vms/bdl44# tar -xf BigDataLite440.ova
root@proxmox01:/data04/vms/bdl44# ll
total 54498668
-rw------- 1 root root 7300486656 Feb 18 21:25 BigDataLite440-disk1.vmdk
-rw------- 1 root root 1261044224 Feb 18 21:26 BigDataLite440-disk2.vmdk
-rw------- 1 root root 19295202816 Feb 18 21:48 BigDataLite440-disk3.vmdk
-rw------- 1 root root 46550528 Feb 18 21:48 BigDataLite440-disk4.vmdk
-rw------- 1 root root 27903306752 Jun 1 10:14 BigDataLite440.ova
-rw------- 1 root root 19619 Feb 18 21:15 BigDataLite440.ovf
and then converted each disk image to qcow2 format: (You can read more about how and why here and here).
root@proxmox01:/data04/vms/bdl44# time qemu-img convert -f vmdk BigDataLite440-disk1.vmdk -O qcow2 BigDataLite440-disk1.qcow2
real 2m14.986s
user 1m39.976s
sys 0m23.548s
root@proxmox01:/data04/vms/bdl44# time qemu-img convert -f vmdk BigDataLite440-disk2.vmdk -O qcow2 BigDataLite440-disk2.qcow2
real 0m47.865s
user 0m35.556s
sys 0m3.684s
root@proxmox01:/data04/vms/bdl44# time qemu-img convert -f vmdk BigDataLite440-disk3.vmdk -O qcow2 BigDataLite440-disk3.qcow2
real 5m21.469s
user 3m49.736s
sys 1m0.348s
root@proxmox01:/data04/vms/bdl44# time qemu-img convert -f vmdk BigDataLite440-disk4.vmdk -O qcow2 BigDataLite440-disk4.qcow2
real 0m13.419s
user 0m5.716s
sys 0m0.296s
For re-usability, this will convert all found vmdk files in one fell swoop:
for file in *.vmdk; do i=${file##*/};qemu-img convert -f vmdk $i -O qcow2 $(echo $i |sed 's/vmdk/qcow2/g'); done
I then created a new VM using the Proxmox web interface, specifying the disk to match the size of the first disk listed in the OVF
of the unpacked OVA
<DiskSection>
<Info>List of the virtual disks used in the package</Info>
<Disk ovf:capacity="41943040000" ovf:diskId="vmdisk2" ovf:fileRef="file1" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" vbox:uuid="150dbbe8-0c88-48d0-9fcf-e80d7d7d4c2f"/>
<Disk ovf:capacity="104857600000" ovf:diskId="vmdisk3" ovf:fileRef="file2" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" vbox:uuid="64101bef-46af-4e89-8c02-0e6315d6be41"/>
<Disk ovf:capacity="62914560000" ovf:diskId="vmdisk4" ovf:fileRef="file3" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" vbox:uuid="d7fae10b-aac3-4675-b295-6a5ab9db3e7f"/>
<Disk ovf:capacity="20971520000" ovf:diskId="vmdisk5" ovf:fileRef="file4" ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized" vbox:uuid="e29ccf7f-69f1-4338-ac2d-909344d74f75"/>
</DiskSection>
and once created added the three remaining disks to the VM configuration. I removed the CD device so as to be able to sequence the four IDE disks as per the original OVF configuration.
The config for the server looks like this:
root@proxmox01:/data04/vms/bdl44# cat /etc/pve/nodes/proxmox01/qemu-server/100.conf
bootdisk: ide0
cores: 4
ide0: data01:100/vm-100-disk-1.qcow2,size=40G
ide1: data01:100/vm-100-disk-2.qcow2,size=100G
ide2: data01:100/vm-100-disk-4.qcow2,size=60G
ide3: data01:100/vm-100-disk-5.qcow2,size=20G
memory: 16000
name: bdl44
net0: bridge=vmbr0,e1000=66:65:31:38:36:64
numa: 1
ostype: l26
smbios1: uuid=58e05db8-1bae-4ccf-90fe-9ea036a58056
sockets: 2
I copied the qcow2 files (converted from VMDK) over the existing qcow2 files:
time mv -f /data04/vms/bdl44/BigDataLite440-disk1.qcow2 /data01/images/100/vm-100-disk-1.qcow2
time mv -f /data04/vms/bdl44/BigDataLite440-disk2.qcow2 /data01/images/100/vm-100-disk-2.qcow2
time mv -f /data04/vms/bdl44/BigDataLite440-disk3.qcow2 /data01/images/100/vm-100-disk-3.qcow2
time mv -f /data04/vms/bdl44/BigDataLite440-disk4.qcow2 /data01/images/100/vm-100-disk-4.qcow2
From the Proxmox GUI I started the migrated VM, but it failed with the error Unable to resolve 'LABEL=oracle_sw'
The reason being I’d got the disks wrong - look at the above configuration (1,2,4,5) and list of disk images (1-4). After fixing this the VM (a version of Big Data Lite 4.4) started up just fine. As did SampleApp v506:
If you want you can tidy up by uninstalling the VirtualBox support modules:
sudo /opt/VBoxGuestAdditions-4.3.22/uninstall.sh
For reference:
- I’m not sure if it makes too much difference on the exact sizing of the disk images in the qemu configuration file, since they grow as needed - hence sticking a size of 200G is going to do no harm (unless you actually don’t have that disk space) and makes importing the image easier.
- You can update the configuration file to make the disk image names match those that you have, instead of renaming them to match the pattern that qemu generates. Swings & roundabouts.