Introduction
A virtual machine of Parallels Desktop for Mac is a
folder with the extension .pvm, shown by Finder as a single item. It holds the machine’s
configuration (config.pvs, an XML file), one .hdd bundle for each virtual disk
(see .hds), the firmware’s variable store, a log, and, for a machine that has
been suspended or has snapshots, the saved state and the snapshot data.
Parallels does not publish the format of these files. The pages here come from reading three real bundles on a Mac (an Ubuntu 24.04 and a Fedora 42 machine, both ARM64, and a macOS guest), from the Parallels Virtualization SDK reference where it names a setting, and from QEMU’s description of the disk files. Every statement says which it is: documented (a public source), observed (seen in the real files, with no source that explains it), or undocumented.
Structure
A .pvm is a plain folder. The members seen in the real bundles (the macOS bundle’s extra files are on
the macOS bundle page):
config.pvsConfiguration XML, rootParallelsVirtualMachine;config.pvs.backupis a copyabout 28 to 31 KBNAME-0.hdd/A disk bundle withDiskDescriptor.xmland the.hdsimagefolderVmInfo.pviGuest information reported by the guest tools: XML, rootVmInfoabout 10 KBNVRAM.datFirmware variables: a UEFI firmware volume385,024 bytesparallels.log,statistic.log,.versionLog, an empty statistics file, and a file holding1small
In the explorer
Drop a .pvm folder (or a .macvm that holds a config.pvs). The folder view names what the
machine is (its name, UUID, CPUs, memory and the guest codes), lists the disks the configuration names and whether their
bundles are in the folder, and describes every member with its basis. Pick config.pvs to open the XML: the
Parallels tab lists the machine, its devices and every element with its value and, where one can be checked against
another file of the bundle, its meaning; the other tabs are the XML viewer’s text and overview. VmInfo.pvi opens
the same way, and a .hdd folder inside shows its descriptor and images.
Not described
Known, not yet covered
- Reference: the Parallels Virtualization SDK (C API reference)
names the settings it reads and writes through functions such as
PrlVmCfg_*, and the constants of the guest OS lists (PVS_GUEST_TYPE_*,PVS_GUEST_VER_*). The pages read here do not give the numeric values of those constants, so the codes inOsType,OsNumber,VmTypeand the device types are given only as seen in three bundles. - Viewer: the folder view reads only named members, and a snapshot chain across disks is not followed.
Unknown
- Reference: no public schema exists for
config.pvsorVmInfo.pvi. Most of the roughly 600 elements of a configuration have no public description; the config.pvs page lists them with their values and marks each as undocumented. - Reference: the inside of
NVRAM.datbeyond its firmware-volume header, the saved state (.sav), snapshot memory (.mem),Snapshots.xmland the.drhfile have no source; none of the last three but the saved state is present in the bundles read.
Also used for
- Parallels VM configuration – config.pvs: the XML configuration of a Parallels machine.
- Parallels VM information – VmInfo.pvi: what the guest tools reported about the running guest.
Links
Software
- Parallels Desktop – makes and runs the machines (macOS)
- QEMU and qemu-img – read and convert the disks inside a bundle (Windows, macOS, Linux)
Developers
- Parallels Virtualization SDK – C API reference for controlling machines and reading their configuration (C)
Reference
- Parallels Disk Format – QEMU’s description of DiskDescriptor.xml