On 07/12/2017 03:56 AM, Ala Hino wrote:
> We encountered a performance issue when creating a volume for a running VM
> and we'd like to share the info with you. The root cause of the issue is in
> our code but we found a workaround that relies on qemu-img create
> undocumented behavior.
> During our tests, we found that in order to create a volume with a backing
> file, the baking file has to be valid and accessible.
In general, that's a good thing. But you're also right that it is nice
to have a mode where the backing file is not probed.
> This requires us to
> activate the entire chain before creating the volume, and deactivate the
> chain after the operation completes. Activating and deactivating the chain
> are expensive operations that we prefer to avoid when possible. Below is
> the command we use to create volumes:
> qemu-img create -f qcow2 -o compat=1.1 -b
> 8a28cda2-548d-47da-bbba-faa81284f6ba -F raw
> We also found that when providing the size and the backing format for qemu,
> qemu doesn't open the backing chain, and in this case we don't have to
> activate/deactivate the entire chain - exactly the behavior we wish to have.
Yes, that is currently the case. You are correct that patches have been
proposed to tighten things so that we would probe the existence of the
backing file in more cases (even when the size is provided); and that if
we do so, we'd also have to provide a backdoor for creating an image
without probing the backing file. But it is also the case that you can
create an image with NO backing file, and then use 'qemu-img rebase -u'
to add the backing file after the fact, without waiting for any proposed
patches to land.
> We we'd like to get your confirmation of the above behavior as it isn't
> documented, and whether it can be documented.
The fact that you are asking does mean that we should revive John's
proposed patches, in some form or another.
Eric, we are more concerned about using the current qemu version.
We can use the fact that providing both size and backing format,
qemu does not open the backing file, but this is not documented, and
we don't want to base oVirt code on undocumented behavior.
What we would like to have is:
- qemu blessing for using this undocumented behaviour
- and documenting this behavior in qemu-img(1)
now, instead of waiting for qemu 2.10.
For future version, having a explicit way to allow unsafe create
is of course better.
> In addition, we are aware of https://bugzilla.redhat.com/1213786, where a
> -u (unsafe) option is planned to be added (see comment #4 in the BZ). Can
> you please confirm that once that support is released, it won't break
> existing, i.e. code that provides size and backing format assuming that
> "unsafe" create is supported?
If we tighten things to require the backing file to exist unless -u is
provided, then providing the size alone will no longer be sufficient to
prevent the probe - you'd have to use -u to prevent the probe, or change
your workflow to create the image without a backing file then add in the
backing information via 'qemu-img rebase -u'.
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3266
Virtualization: qemu.org | libvirt.org