Frequently Asked Question
An OVF export from VMware can usually be imported into Proxmox VE either:
- directly with
qm importovf, or - manually by importing the accompanying
VMDKdisk files.
For most VMware exports, the direct OVF import is the quickest method. The manual method is useful when the OVF metadata is not accepted cleanly, when hardware settings need to be rebuilt, or when only the disks matter.
What an OVF export normally contains
A VMware export usually includes some or all of the following files in the same folder:
*.ovf— the VM definition*.vmdk— one or more virtual disks*.mf— a manifest file with checksums*.nvram— VMware firmware data, not normally reused directly in Proxmox
If the export is a single OVA file, it must be extracted first because an OVA is just a tar archive containing the OVF and VMDK files.
Before starting
Make sure the following are in place:
- The VM was cleanly shut down before export.
- Any VMware snapshots were consolidated before export.
- There is enough free space on the Proxmox storage for all imported disks.
- The OVF file and all referenced VMDK files are present together.
- A free Proxmox VM ID is available.
- The import is run on the Proxmox node that will hold the VM.
Useful checks on the Proxmox node:
pvesm status
qm list
If the source is an OVA file
Extract it first:
mkdir -p /root/ovf-import
tar -xvf /root/exported-vm.ova -C /root/ovf-import
ls -lh /root/ovf-import
After extraction, identify the OVF file and the related VMDK files.
Method 1: Import the OVF directly with qm importovf
This is the preferred method when the export is standard and intact.
1. Copy the OVF export to the Proxmox node
For example, place the files in:
/root/ovf-import/
Check the contents:
ls -lh /root/ovf-import
2. Choose a VM ID and destination storage
Example values:
- VM ID:
120 - Storage:
local-lvm
List available storage if needed:
pvesm status
3. Run the import
Example:
qm importovf 120 /root/ovf-import/exported-vm.ovf local-lvm
This reads the OVF, creates the Proxmox VM configuration for VM 120, and imports the referenced disks into the chosen storage.
4. Review the imported VM configuration
qm config 120
Check these items carefully:
- CPU count
- RAM size
- Disk layout
- Network adapter
- BIOS or UEFI setting
- Boot order
5. Correct the network adapter if needed
VMware often uses vmxnet3, which is not available in Proxmox. A safe initial choice is e1000, especially for first boot testing. For best performance later, virtio is preferred once the guest has the drivers.
Example, set a safe NIC:
qm set 120 --net0 e1000,bridge=vmbr0
Example, set a VirtIO NIC:
qm set 120 --net0 virtio,bridge=vmbr0
6. Check firmware mode
If the original VM used legacy BIOS, use SeaBIOS:
qm set 120 --bios seabios
If the original VM used UEFI, use OVMF and add an EFI disk:
qm set 120 --bios ovmf --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
7. Confirm the boot disk order
If the imported system disk is on scsi0:
qm set 120 --boot order=scsi0
If the imported system disk is on sata0:
qm set 120 --boot order=sata0
8. Start the VM
qm start 120
If the VM fails to boot, the most common causes are:
- wrong firmware type (
SeaBIOSvsOVMF) - wrong boot order
- unsupported disk bus for the guest OS
- Windows guest missing VirtIO drivers
Method 2: Manual import using the VMDK files
Use this method if qm importovf fails or if it imports the disks but the VM hardware needs rebuilding manually.
1. Create an empty VM shell
Example for a Linux VM:
qm create 121 --name imported-linux --memory 4096 --cores 2 --net0 virtio,bridge=vmbr0
Example for a Windows VM with a safer first-boot NIC:
qm create 122 --name imported-windows --memory 4096 --cores 2 --net0 e1000,bridge=vmbr0
2. Import the VMware disk
Example using one VMDK file:
qm importdisk 121 /root/ovf-import/exported-vm-disk1.vmdk local-lvm
After import, Proxmox usually shows the disk as an unused disk attached to that VM.
3. Attach the imported disk to the VM
For Linux, VirtIO SCSI is normally the best choice:
qm set 121 --scsihw virtio-scsi-pci
qm set 121 --scsi0 local-lvm:vm-121-disk-0
qm set 121 --boot order=scsi0
For Windows, the safest first boot is often SATA unless VirtIO drivers are already installed:
qm set 122 --sata0 local-lvm:vm-122-disk-0
qm set 122 --boot order=sata0
Important: the exact disk volume name can vary by storage type. Confirm the attached disk in the VM configuration:
qm config 121
or
qm config 122
If the disk appears as unused0, attach that imported volume to the required bus.
4. Set firmware mode
Legacy BIOS:
qm set 121 --bios seabios
UEFI:
qm set 121 --bios ovmf --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
5. Start the VM
qm start 121
Choosing the right disk and network bus
The bus type matters, especially for Windows guests.
Linux guests
Usually work well with:
- Disk:
VirtIO SCSI - Network:
VirtIO
Example:
qm set 121 --scsihw virtio-scsi-pci
qm set 121 --net0 virtio,bridge=vmbr0
Windows guests
Safest first boot options are often:
- Disk:
SATA - Network:
E1000
Once the VM boots and VirtIO drivers are installed, it can be changed to:
- Disk:
VirtIO SCSI - Network:
VirtIO
This gives better performance.
Handling VMs with multiple disks
If the VMware VM has more than one VMDK, import each one and attach them in the correct order.
Example:
qm importdisk 123 /root/ovf-import/vm-disk1.vmdk local-lvm
qm importdisk 123 /root/ovf-import/vm-disk2.vmdk local-lvm
Then attach them, for example:
qm set 123 --scsihw virtio-scsi-pci
qm set 123 --scsi0 local-lvm:vm-123-disk-0
qm set 123 --scsi1 local-lvm:vm-123-disk-1
qm set 123 --boot order=scsi0
Check that the system disk is attached as the first bootable disk.
Common post-import tasks
Enable the QEMU guest agent in Proxmox
qm set 120 --agent enabled=1
Install the guest agent inside Linux
Debian or Ubuntu:
apt update
apt install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent
RHEL, Rocky, AlmaLinux or CentOS:
dnf install -y qemu-guest-agent
systemctl enable --now qemu-guest-agent
Remove VMware Tools from the guest
After confirming the VM runs correctly in Proxmox, VMware Tools should normally be removed and replaced with platform-appropriate drivers and the QEMU guest agent.
Common problems and fixes
1. qm importovf fails because files are missing
The OVF references the disk files by name. Make sure the OVF and all related VMDK files are in the same directory and unchanged since export.
Check:
ls -lh /root/ovf-import
2. The VM imports but will not boot
Most likely causes:
- wrong BIOS mode
- wrong UEFI mode
- wrong boot order
- Windows guest attached to a VirtIO disk without drivers
Typical fixes:
qm set 120 --bios seabios
or:
qm set 120 --bios ovmf --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
and:
qm set 120 --boot order=scsi0
or:
qm set 120 --boot order=sata0
3. Windows shows an inaccessible boot device
This usually means the imported system disk is attached to a controller for which Windows has no driver yet.
Use SATA first:
qm set 122 --sata0 local-lvm:vm-122-disk-0
qm set 122 --boot order=sata0
After the VM is running, install the VirtIO drivers and migrate the disk to SCSI or VirtIO.
4. Network is missing after import
VMware NIC types do not map directly to Proxmox. Replace the NIC with a Proxmox-supported model.
Safe option:
qm set 120 --net0 e1000,bridge=vmbr0
Performance option:
qm set 120 --net0 virtio,bridge=vmbr0
5. UEFI guest still does not boot
Some VMware UEFI exports include firmware state that is not portable. In Proxmox, set OVMF, add a fresh EFI disk, and confirm the boot disk is correct.
qm set 120 --bios ovmf --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
6. The VM was exported with snapshots
Only the current consolidated state should be exported. If the VMDKs are delta disks or snapshot chains, consolidate them in VMware and export again.
Recommended migration approach
For the most reliable result:
- Shut down the VMware VM cleanly.
- Consolidate snapshots.
- Export as
OVForOVA. - Copy the export to the Proxmox node.
- Try direct import with:
qm importovf <VMID> /path/to/file.ovf <storage>
- Review and correct:
- firmware
- disk bus
- NIC model
- boot order
- Start the VM.
- Install
qemu-guest-agent. - For Windows, install VirtIO drivers before switching to VirtIO disk or NIC devices.
Example end-to-end import
Example using VM ID 120, OVF file in /root/ovf-import/, and storage local-lvm:
qm importovf 120 /root/ovf-import/exported-vm.ovf local-lvm
qm set 120 --net0 e1000,bridge=vmbr0
qm set 120 --bios seabios
qm config 120
qm start 120
If it was a UEFI VM instead:
qm importovf 120 /root/ovf-import/exported-vm.ovf local-lvm
qm set 120 --net0 e1000,bridge=vmbr0
qm set 120 --bios ovmf --efidisk0 local-lvm:1,efitype=4m,pre-enrolled-keys=1
qm config 120
qm start 120
In summary, importing a VMware OVF into Proxmox is usually straightforward with qm importovf, but the VM often needs some manual adjustment afterwards, especially around firmware, boot order, disk bus and NIC type. For troublesome imports, creating a new Proxmox VM and importing the VMDK manually is the most dependable fallback.
