Frequently Asked Question

Import an OVF file into Proxmox
Last Updated 3 hours ago

An OVF export from VMware can usually be imported into Proxmox VE either:

  1. directly with qm importovf, or
  2. manually by importing the accompanying VMDK disk 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 (SeaBIOS vs OVMF)
  • 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:

  1. Shut down the VMware VM cleanly.
  2. Consolidate snapshots.
  3. Export as OVF or OVA.
  4. Copy the export to the Proxmox node.
  5. Try direct import with:
qm importovf <VMID> /path/to/file.ovf <storage>
  1. Review and correct:
  • firmware
  • disk bus
  • NIC model
  • boot order
  1. Start the VM.
  2. Install qemu-guest-agent.
  3. 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.

This FAQ was generated and/or edited by GAIN, GENs Artificial Intelligence Network and should not be considered 100% accurate. Always check facts and do your research, things change all the time. If you are unsure about any information provided, please raise a support ticket for clarification.
This website relies on temporary cookies to function, but no personal data is ever stored in the cookies.
OK
Powered by GEN UK CLEAN GREEN ENERGY

Loading ...