[Libguestfs] [libguestfs] Problem using virt-sysprep with RBD images

Jon three18ti at gmail.com
Wed Nov 6 21:52:06 UTC 2013


Hello Rich,

Interesting.  Thanks for the explanation.

When you specify an rbd on the command line for virt-sysprep, do you expect
the path to include the monitor address?

e.g.:
>> virt-sysprep -a rbd://host-name/pool-name/device-name

If I understand correctly, libvirt is able to understand the ceph
configuration, so when I create a device with qemu-img I only specify the
protocol and pool/device.

e.g.:
>> qemu-img create rbd:pool-name/device-name 5G

(there is some voodoo that I don't understand, I've got a whole thread on
trying to get qemu-img to create format 2 rbds by default... but that's for
another thread)

Would it be possible to specify rbds like this instead?  Or is the scope
bigger than I'm understanding and that would cause issues with other disk
types specified for the --add parameter.  It seems like --add can take
either a URI or a physical disk path.

Thanks for all your help helping me to understand.

Best Regards,
Jon A


On Wed, Nov 6, 2013 at 2:37 PM, Richard W.M. Jones <rjones at redhat.com>wrote:

> On Wed, Nov 06, 2013 at 02:25:54PM -0700, Jon wrote:
> > Hello Richard,
> >
> > Haha, ok, here's a good one: I commented that if statement out at line
> 300,
> > applied your patch (I see you updated the github of this code, perhaps
> > that's the best place to grab the code from), and when I run
> virt-sysprep,
> > I get the following parameter for my disk drive:
> >
> > >> qemu-system-x86_64: -drive
> >
> file=rbd:ibvirt-pool/server-clone-test:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789:auth_supported=none,cache=writeback,id=hd0,if=none:
> > error opening pool ibvirt-pool
> >
> > Since "ibvirt-pool" doesn't exist. :)
> >
> > So this says to me that the function "create_drive_non_file" is consuming
> > that first slash somewhere.
>
> Unfortunately this code is rather intricate (and intricately broken),
> but the problem is likely to be here:
>
>  src/drives.c:
>     /* Skip the mandatory leading '/' character on exportname. */
>     return safe_asprintf (g, "rbd:%s:mon_host=%s%s%s%s",
>                           &src->u.exportname[1],
>                           mon_host,
>                           username ? username : "",
>                           auth,
>                           secret ? secret : "");
>
> The problem that this code is trying (and failing) to deal with is
> that when you use the URL on the guestfish command line, the URL is
> something like "rbd://example.com/foo/bar" and the path part of this
> has to start with a "/" character.  There is simply no way to specify
> a URL without this.
>
> However this assumption should *not* have made its way into the
> libguestfs library, since other paths into this code, such as from
> libvirt XML, have no such restrictions.
>
> So it's currently somewhat broken.
>
> Rich.
>
> --
> Richard Jones, Virtualization Group, Red Hat
> http://people.redhat.com/~rjones
> Read my programming blog: http://rwmj.wordpress.com
> Fedora now supports 80 OCaml packages (the OPEN alternative to F#)
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20131106/147ee62b/attachment.htm>


More information about the Libguestfs mailing list