Introduction
An OVA (open virtual appliance or application) is an OVF package stored
as a single file. The DMTF's Open Virtualization Format specification (DSP0243 2.1.1, clause 5.3, read in
full for this page) says a package is stored either as a set of files or as a compressed package with the
extension .ova, and that both modes shall be supported. Virtual machines from VMware,
VirtualBox and others are exchanged this way.
Structure
An OVA is a tar archive in the USTAR format (ISO/IEC/IEEE 9945:2009), which the specification calls "a compressed OVF package" although tar itself does not compress. It holds the files of the package: one OVF descriptor, an optional manifest, an optional certificate, the disk images (usually VMDK files, often stream-optimized) and other resource files.
Ordering rules
Entries shall exist only once, and shall be in one of three orders, so that the descriptor can be read without scanning the archive:
| Order | Entries |
|---|---|
| 1 | The OVF descriptor; then the remaining files in the order listed in the References section of the descriptor. |
| 2 | The OVF descriptor; the manifest; the certificate; then the remaining files in References order. |
| 3 | The OVF descriptor; the intermediate files in References order; then the manifest; the certificate. |
External string resource bundles (for localisation) come first in References, so they come first among the files. The manifest and certificate are siblings of the descriptor with its base name and are not in References. The reference-order rule is why a package's disks come in the order the descriptor lists, and why a parent disk comes before its child.
The viewer reads the tar headers (checking each header's checksum and the USTAR magic), finds the descriptor, reads its References, and reports: a descriptor that is not first, a repeated entry, files out of References order, a manifest and certificate that are not directly after the descriptor or last, an entry the descriptor does not list, and a listed file that is not in the archive. Each member opens as a file of its own, read through to the archive, so a VMDK inside opens in the VMDK viewer and its virtual disk opens below it.
Not described
Known, not yet covered
- Viewer: pax and GNU tar extension headers (long names) are not read; an archive that uses them is reported as not USTAR. The manifest digests are not verified against the members. Files that References gives as chunks or with
ovf:compressionopen as raw members.
Links
Software
- OVF Tool – VMware's command-line tool that converts between OVF, OVA and VMX (Windows, macOS, Linux)
- VirtualBox – free virtual machine software that imports and exports OVA (Windows, macOS, Linux)
- VMware Workstation Pro and Fusion – import and export OVA
Reference
- Open Virtualization Format – the DMTF's page for DSP0243