En Proxmox un disco de VM en ZFS es un ZVOL (rpool/data/vm-101-disk-0), no un archivo. Para copiarlo a otro hypervisor o a un USB, sacas un RAW.

Hilo: Import/convert/export RAW images to ZFS volume.

Snapshot y dd

Si la VM está encendida, congela el disco con un snapshot y lee el snap (el ZVOL @snap aparece bajo /dev/zvol/…):

1
2
3
zfs snapshot rpool/data/vm-101-disk-0@export
dd if=/dev/zvol/rpool/data/vm-101-disk-0@export of=/mnt/backup/vm-101.raw bs=1M status=progress
zfs destroy rpool/data/vm-101-disk-0@export

VM apagada, puedes leer el zvol vivo:

1
dd if=/dev/zvol/rpool/data/vm-101-disk-0 of=/mnt/backup/vm-101.raw bs=1M status=progress

bs=1M (o 1m en dd GNU) importa: el default de 512 B es eterno.

qemu-img (qcow2 / vmdk)

1
qemu-img convert -p -f raw -O qcow2 /mnt/backup/vm-101.raw /mnt/backup/vm-101.qcow2

O directo desde el zvol:

1
qemu-img convert -p -f raw -O qcow2 /dev/zvol/rpool/data/vm-101-disk-0 vm-101.qcow2

El otro sentido (RAW → ZVOL)

1
2
zfs create -s -V 32G rpool/data/vm-101-disk-0
dd if=file.raw of=/dev/zvol/rpool/data/vm-101-disk-0 bs=1M status=progress

-s = sparse. El RAW no puede ser más grande que el zvol.

Ver también: comandos básicos.