Jon
2013-Nov-05 01:35 UTC
[Libguestfs] [libguestfs] Problem using virt-sysprep with RBD images
Hello, I'm having a problem when trying to use virt-sysprep against vms that have rbd disk images. When I run virt-sysprep I get the following error:>> root@kitt:~/libguestfs-1.22.4# virt-sysprep -d server-clone-test--firstboot firstboot.sh>> Examining the guest ... >> Fatal error: exception Guestfs.Error("rbd: image name must begin with a'/'") My Disk definition is as follows:>> <disk type='network' device='disk'> >> <driver name='qemu'/> >> <source protocol='rbd' name='libvirt-pool/server-clone-test'> >> <host name='192.168.0.40' port='6789'/> >> <host name='192.168.0.35' port='6789'/> >> <host name='192.168.0.2' port='6789'/> >> </source> >> <target dev='hdb' bus='ide'/> >> <address type='drive' controller='0' bus='0' target='0' unit='1'/> >> </disk>I can resolve this error by changing the name of the libvirt-pool:>> <source protocol='rbd' name='/libvirt-pool/server-clone-test'>But this causes an error when attempting to boot the vm:>> root@kitt:~/libguestfs-1.22.4# virsh start server-clone-test >> error: Failed to start domain server-clone-test >> error: internal error: process exited while connecting to monitor: W:kvm binary is deprecated, please use qemu-system-x86_64 instead>> char device redirected to /dev/pts/5 (label charserial0) >> qemu-system-x86_64: -drivefile=rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789,if=none,id=drive-ide0-0-1: pool name too short>> qemu-system-x86_64: -drivefile=rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789,if=none,id=drive-ide0-0-1: could not open disk image rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789: Invalid argument I'm currently using libguestfs-1.22.4 and I did run into a known bug [1] that I was able to patch, but I don't think that's related to the issues with disk naming. Is there a way to give virt-sysprep a rbd with the -a flag, or is there a better way to sysprep vms? I would like to avoid having to edit the vm config if possible. Thanks, Jon A [1] https://bugs.launchpad.net/ubuntu/+source/libguestfs/+bug/1243190
Richard W.M. Jones
2013-Nov-05 09:01 UTC
Re: [Libguestfs] [libguestfs] Problem using virt-sysprep with RBD images
On Mon, Nov 04, 2013 at 06:35:42PM -0700, Jon wrote:> Hello, > > I'm having a problem when trying to use virt-sysprep against vms that have > rbd disk images. When I run virt-sysprep I get the following error: > > >> root@kitt:~/libguestfs-1.22.4# virt-sysprep -d server-clone-test > --firstboot firstboot.sh > >> Examining the guest ... > >> Fatal error: exception Guestfs.Error("rbd: image name must begin with a > '/'") > > My Disk definition is as follows: > > >> <disk type='network' device='disk'> > >> <driver name='qemu'/> > >> <source protocol='rbd' name='libvirt-pool/server-clone-test'> > >> <host name='192.168.0.40' port='6789'/> > >> <host name='192.168.0.35' port='6789'/> > >> <host name='192.168.0.2' port='6789'/> > >> </source> > >> <target dev='hdb' bus='ide'/> > >> <address type='drive' controller='0' bus='0' target='0' unit='1'/> > >> </disk> > > I can resolve this error by changing the name of the libvirt-pool: > > >> <source protocol='rbd' name='/libvirt-pool/server-clone-test'> > > But this causes an error when attempting to boot the vm: > > >> root@kitt:~/libguestfs-1.22.4# virsh start server-clone-test > >> error: Failed to start domain server-clone-test > >> error: internal error: process exited while connecting to monitor: W: > kvm binary is deprecated, please use qemu-system-x86_64 instead > >> char device redirected to /dev/pts/5 (label charserial0) > >> qemu-system-x86_64: -drive > file=rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789,if=none,id=drive-ide0-0-1: > pool name too short > >> qemu-system-x86_64: -drive > file=rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789,if=none,id=drive-ide0-0-1: > could not open disk image > rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789: > Invalid argument > > I'm currently using libguestfs-1.22.4 and I did run into a known bug [1] > that I was able to patch, but I don't think that's related to the issues > with disk naming. > > Is there a way to give virt-sysprep a rbd with the -a flag, or is there a > better way to sysprep vms? I would like to avoid having to edit the vm > config if possible.This is a bug basically. I have filed a bug report here: https://bugzilla.redhat.com/show_bug.cgi?id=1026688 It would be helpful to try with a newer version of libguestfs. Ubuntu has just pushed the 1.24.0 package. I don't know if it'll help or not, but it would be useful to know if the behaviour changes. https://launchpad.net/ubuntu/+source/libguestfs/1:1.24.0-0ubuntu1/+build/5181109 Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones virt-p2v converts physical machines to virtual machines. Boot with a live CD or over the network (PXE) and turn machines into KVM guests. http://libguestfs.org/virt-v2v
Jon
2013-Nov-06 18:17 UTC
Re: [Libguestfs] [libguestfs] Problem using virt-sysprep with RBD images
Hello Richard, Thanks for the reply. Indeed this behaviour exists in 1.25.6. Grepping through the source [1], there are a number of files in "./po/*.po[t]?" that contain this message, but I think it's ./src/drives.c where the fail condition is actually detected / set. On line 300 there is an if statement that checks the first character is a slash: if (exportname[0] != '/') { error (g, _("rbd: image name must begin with a '/'")); return NULL; } I tried to comment this out and recompile guestfs, but I get an error: make[2]: Entering directory `/root/libguestfs-1.25.6/builder' ocamlfind ocamlopt -g -warn-error CDEFLMPSUVYZX -package str,unix -I ../src/.libs -I ../ocaml -I ../mllib -package gettext-stub -c builder.ml -o builder.cmx File "builder.ml", line 53, characters 4-14: Error: Unbound value List.iteri make[2]: *** [builder.cmx] Error 2 make[2]: Leaving directory `/root/libguestfs-1.25.6/builder' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/root/libguestfs-1.25.6' make: *** [all] Error 2 Can you provide some assistance resolving this compile error please? Is there perhaps a better place to pull the source from? Thanks, Jon A [1] http://libguestfs.org/download/1.25-development/libguestfs-1.25.6.tar.gz On Tue, Nov 5, 2013 at 2:01 AM, Richard W.M. Jones <rjones@redhat.com>wrote:> On Mon, Nov 04, 2013 at 06:35:42PM -0700, Jon wrote: > > Hello, > > > > I'm having a problem when trying to use virt-sysprep against vms that > have > > rbd disk images. When I run virt-sysprep I get the following error: > > > > >> root@kitt:~/libguestfs-1.22.4# virt-sysprep -d server-clone-test > > --firstboot firstboot.sh > > >> Examining the guest ... > > >> Fatal error: exception Guestfs.Error("rbd: image name must begin with > a > > '/'") > > > > My Disk definition is as follows: > > > > >> <disk type='network' device='disk'> > > >> <driver name='qemu'/> > > >> <source protocol='rbd' name='libvirt-pool/server-clone-test'> > > >> <host name='192.168.0.40' port='6789'/> > > >> <host name='192.168.0.35' port='6789'/> > > >> <host name='192.168.0.2' port='6789'/> > > >> </source> > > >> <target dev='hdb' bus='ide'/> > > >> <address type='drive' controller='0' bus='0' target='0' > unit='1'/> > > >> </disk> > > > > I can resolve this error by changing the name of the libvirt-pool: > > > > >> <source protocol='rbd' name='/libvirt-pool/server-clone-test'> > > > > But this causes an error when attempting to boot the vm: > > > > >> root@kitt:~/libguestfs-1.22.4# virsh start server-clone-test > > >> error: Failed to start domain server-clone-test > > >> error: internal error: process exited while connecting to monitor: W: > > kvm binary is deprecated, please use qemu-system-x86_64 instead > > >> char device redirected to /dev/pts/5 (label charserial0) > > >> qemu-system-x86_64: -drive > > > file=rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789,if=none,id=drive-ide0-0-1: > > pool name too short > > >> qemu-system-x86_64: -drive > > > file=rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789,if=none,id=drive-ide0-0-1: > > could not open disk image > > > rbd:/libvirt-pool/server-clone-test:auth_supported=none:mon_host=192.168.0.40\:6789\;192.168.0.35\:6789\;192.168.0.2\:6789: > > Invalid argument > > > > I'm currently using libguestfs-1.22.4 and I did run into a known bug [1] > > that I was able to patch, but I don't think that's related to the issues > > with disk naming. > > > > Is there a way to give virt-sysprep a rbd with the -a flag, or is there a > > better way to sysprep vms? I would like to avoid having to edit the vm > > config if possible. > > This is a bug basically. I have filed a bug report here: > > https://bugzilla.redhat.com/show_bug.cgi?id=1026688 > > It would be helpful to try with a newer version of libguestfs. Ubuntu > has just pushed the 1.24.0 package. I don't know if it'll help or > not, but it would be useful to know if the behaviour changes. > > > https://launchpad.net/ubuntu/+source/libguestfs/1:1.24.0-0ubuntu1/+build/5181109 > > Rich. > > -- > Richard Jones, Virtualization Group, Red Hat > http://people.redhat.com/~rjones > virt-p2v converts physical machines to virtual machines. Boot with a > live CD or over the network (PXE) and turn machines into KVM guests. > http://libguestfs.org/virt-v2v >
Seemingly Similar Threads
- Re: Problem using virt-sysprep with RBD images
- Re: Problem Connecting to RBD images using Sys::Guestfs Perl Module
- Re: Problem using virt-sysprep with RBD images
- Problem Connecting to RBD images using Sys::Guestfs Perl Module
- Re: Problem using virt-sysprep with RBD images