On Thu, Mar 5, 2020 at 12:49 PM Jakub Dżon <jdzon(a)redhat.com> wrote:
Hi,
I'm looking into how current state of a volume (as seen by the VM) can
be downloaded in raw format using imageio and I wonder what is the
behavior when I request a qcow2 volume. Will it always return the top
snapshot in qcow2 format?
It depends on the format argument of the ImageTransfer.
If you don't specify the format, we use the file backend and you get
the top volume in the chain as is (qcow2 or raw).
If you specify "raw" format we use the nbd backend, and in this case
you get the entire disk in raw format, including all the snapshots.
I understand that in 4.4 I can explicitly specify
format=types.DiskFormat.RAW when creating the transfer to get the
current state of the disk converted to raw format.
Exactly
Is that also possible in older versions and how?
Support for format="raw" was added in 4.3, so it may work
with 4.3. However in 4.3 imagio daemon did not support the extents
API, so downloading entire image in raw format is not very practical.
For example if you download 50g empty qcow2 image you will download
50g of zeroes.
In 4.4. you can find if imageio daemon supports the extents API by doing
OPTIONS request on the transfer_url and looking for the "extents" feature.
If the extents feature is enabled, you can get the list of extents using
a GET request on transfer_url + "/extents', and then you can download
only the data extents and skip the zero extents.
See the fosdem talk about incremental backup for more details:
https://fosdem.org/2020/schedule/event/vai_back_to_the_future/
Slides:
https://docs.google.com/presentation/d/e/2PACX-1vTYZrJp4F4XIM_9eg-_dGJdM6...
Nir