On Mon, Jul 09, 2018 at 07:02:50PM +0200, Kevin Wolf wrote: > Am 09.07.2018 um 18:52 hat Richard W.M. Jones geschrieben: > > On Mon, Jul 09, 2018 at 07:38:05PM +0300, Nir Soffer wrote: > > > We are discussing importing VM images to KubVirt. The goal is to be > > > able to import an existing qcow2 disk, probably some appliance stored > > > on http server, and and convert it to raw format for writing to storage. > > > > > > This can be also useful for for oVirt for importing OVA, since we like to > > > pack > > > disks in qcow2 format inside OVA, but the user may like to use raw disks, > > > or > > > for uploading existing disks. > > > > > > Of course converting the image using qemu-img is easy, but requires > > > downloading the image to temporary disk. We would like to avoid temporary > > > disks, or telling users to convert the image. > > > > > > Base on the discussion we had here: > > > https://lists.ovirt.org/archives/list/us...@ovirt.org/thread/GNAVJ253FP65QUSOONES5XZGRIDX5ABC/#YMLSEGU7PN3MX5MUORGEGGAQLLSL4KKJ > > > > > > I think this is impossible since qcow2 is not built for streaming. But > > > both > > > Richard and Eric suggested some solutions. > > > > > > The flow is: > > > > > > qcow2 image -- http --> importer -> raw file > > > > > > Is it possible to implement the importer using qemu-img and qemu-nbd, > > > or maybe nbdkit? > > > > Strictly speaking streaming qcow2 to raw is not possible. However > > placing an overlay on top of the original remote image will allow > > streaming to raw with only a modest amount of local storage consumed. > > > > You can demonstrate this fairly easily: > > > > $ qemu-img create -f qcow2 -b 'json: { "file.driver": "https", "file.url": > > "https://uk-mirrors.evowise.com/fedora/releases/28/Cloud/x86_64/images/Fedora-Cloud-Base-28-1.1.x86_64.qcow2", > > "file.timeout": 10000 }' /var/tmp/overlay.qcow2 > > $ qemu-img convert -p -f qcow2 -O raw overlay.qcow2 fedora.img > > This overlay stays empty, so it's pretty pointless and you could just > directly point 'qemu-img convert' to https and the real image.
Right, indeed. I was copying what virt-v2v does without thinking about it enough. virt-v2v needs the overlay because it actually wants to write into it, and it does copy-on-read for the first phase (not the final ‘qemu-img convert’). Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-builder quickly builds VMs from scratch http://libguestfs.org/virt-builder.1.html