[Tool] pvstream2ova — Export Proxmox VM to OVA, 5× faster than qemu-img

Andrea.B

New Member
May 13, 2026
1
0
1
[Tool] pvstream2ova — Export Proxmox VM to OVA, 5× faster than qemu-img

Hi all,

I wrote a Python script to export Proxmox VMs to OVA format. Two features make it different from qemu-img convert:

  • Parallel zlib compression — each 64 KiB VMDK grain is compressed in a separate thread (ThreadPoolExecutor, default: all CPU cores). On a 100 GB disk this gives ~440 MiB/s vs qemu-img's single-thread approach.
  • Hole-punch streaming — the intermediate VMDK is hole-punched as it streams into the OVA tar. Peak disk usage = final OVA size, never more.

Benchmark (100 GB disk, 52 GB used, NVMe PCIe 4):

Tool | VMDK | OVA pack | Total | Size[/B]
-----------------------------+-------+----------+--------+-----------
pvstream2ova --level 6 (def) | 3:51 | 1:30 | 5:21 | 27,968 MiB
pvstream2ova --level 1 | 3:35 | 1:30 | 5:05 | 29,128 MiB
qemu-img convert | 23:36 | 1:30* | ~25:00 | 27,988 MiB
vzdump zstd (Proxmox only) | - | - | 2:31 | 25,214 MiB
-----------------------------+-------+----------+--------+-----------

* qemu-img produces a VMDK only — OVA packing adds ~1:30

Also included: pvefingerprint.sh / ovafingerprint.sh to verify VM integrity before export and after import.

The script prints warnings for known OVF limitations (VirtIO SCSI controller, OVMF BIOS, network bridge mapping).

GitHub: https://github.com/a-n-d-r-e-a-b/pvstream2ova

Tested on Proxmox VE 9.1. Give it a try and let me know if you find it useful!

---
 
Last edited: