Backup image converted from vma.zst to vmdk

sherani1987

Member
Feb 18, 2021
38
1
8
39
Hi everyone,
I converted the backup image of my VM which was vma.zst to vmdk through the command "qemu-img" that i can import it to aws. But when i convert it and try to test it on Oracle workstation. It said vmx is corrupt. how to do the conversion in safest way in proxmox or out of the proxmox
 
Last edited:
How exactly? VMA is a custom file format which in your case is compressed with zst. Using it directly in qemu-img will not work.

You first must extract the contents of the VMA backup file and then you can use qemu-img to convert it.

For example:
Code:
zstd --decompress --stdout vzdump-qemu-106-2021_01_21-11_42_15.vma.zst | vma extract - extract
This will decompress the file and pipe it to the vma CLI tool installed on PVE nodes and extract the contents in the directory "extract". The directory should not exist prior to running the command.

You will end up with the config file(s) and the disk images which you then can convert. Make sure to have enough space available.
 
How exactly? VMA is a custom file format which in your case is compressed with zst. Using it directly in qemu-img will not work.

You first must extract the contents of the VMA backup file and then you can use qemu-img to convert it.

For example:
Code:
zstd --decompress --stdout vzdump-qemu-106-2021_01_21-11_42_15.vma.zst | vma extract - extract
This will decompress the file and pipe it to the vma CLI tool installed on PVE nodes and extract the contents in the directory "extract". The directory should not exist prior to running the command.

You will end up with the config file(s) and the disk images which you then can convert. Make sure to have enough space available.
It’s mean that I don’t need to create an extract folder it will automatically create that folder and then I can convert the image to VMDK am I correct
 
Yep, that directory will be created. If it already exists, vma will complain and stop.
 
I have the same problem too. I have two Proxmox servers running different versions, 7.3-3 and 6.1-3 respectively. The hostname machine running Proxmox 7.3-3 backup vms with zst format to Synology shared storage. From proxmox server running 6.1-3 I added the same Synology shared storage but I could see my vms. I can only see the lzo vm backup files. Do I need to convert zst to lzo ? If so how ?
 
Hi,
I have the same problem too. I have two Proxmox servers running different versions, 7.3-3 and 6.1-3 respectively. The hostname machine running Proxmox 7.3-3 backup vms with zst format to Synology shared storage. From proxmox server running 6.1-3 I added the same Synology shared storage but I could see my vms. I can only see the lzo vm backup files. Do I need to convert zst to lzo ? If so how ?
I guess Proxmox VE 6.1 just didn't have support for zstd backups, so it can't "see" them. You really should upgrade, it's very old and doesn't get any (security) updates anymore: https://pve.proxmox.com/wiki/Upgrade_from_6.x_to_7.0
 
Hi,

Thanks for those very usefull informations.

Code:
zstd --decompress --stdout vzdump-qemu-106-2021_01_21-11_42_15.vma.zst | vma extract - extract

What should I add to extract only one single raw file (my vma.zst is containing 3 raw files) ?

Thanks for your help.

Ludovic
 
Hi @ludo2223,
it depends on what ID the drive has, you can specify which drives to extract with the -d argument:
Code:
[I] root@pve9a1 /mnt/pve/dir/dump# vma
usage: vma command [command options]

vma list <filename>
vma config <filename> [-c <config>]
vma create <filename> [-c <config>] [-d format=<format>:<device name>=<path> [-d ...]]
vma extract <filename> [-d <drive-list>] [-r <fifo>] <targetdir>
vma verify <filename> [-v]
For example:
Code:
[I] root@pve9a1 /mnt/pve/dir/dump# vma config vzdump-qemu-102-2026_03_20-11_53_38.vma | grep drive
#qmdump#map:efidisk0:drive-efidisk0:rbd:raw:
#qmdump#map:scsi0:drive-scsi0:rbd:raw:
#qmdump#map:scsi1:drive-scsi1:rbd:raw:
#qmdump#map:scsi2:drive-scsi2:rbd:raw:
[I] root@pve9a1 /mnt/pve/dir/dump# vma extract vzdump-qemu-102-2026_03_20-11_53_38.vma -d drive-scsi2,drive-scsi1 target
DEVINFO target/tmp-disk-drive-scsi1.raw 16106127360
DEVINFO target/tmp-disk-drive-scsi2.raw 1073741824
[I] root@pve9a1 /mnt/pve/dir/dump# ls target/
disk-drive-scsi1.raw  disk-drive-scsi2.raw  qemu-server.conf
 
Hi @fiona ,

Thanks for your help.

I need to :

Code:
 zstd --decompress --stdout dump/vzdump-qemu-xxx.vma.zst

before ?

Or is the a way to avoid uncompressing the whole vma before doing ;

Code:
vma extract vzdump-qemu-102-2026_03_20-11_53_38.vma -d drive-scsi2,drive-scsi1 target

Thanks

Ludo
 
No, you can still use the pipe to pass stdout from zstd to stdin for vma like in your example. Just use -d <drive-list> additionally.