[libvirt] Issues with qemu-nbd over AF_UNIX and virDomainAttachDevice
Deepak C Shetty
deepakcs at linux.vnet.ibm.com
Mon May 27 13:41:10 UTC 2013
On 05/27/2013 04:41 PM, Paolo Bonzini wrote:
> Il 27/05/2013 12:46, Deepak C Shetty ha scritto:
>> On 05/27/2013 02:00 PM, Paolo Bonzini wrote:
>>> Il 26/05/2013 15:54, Deepak C Shetty ha scritto:
>>>> 3) In nbdxml, i tried removing port="1111".. it didn't give any error
>>>> with regards to port beign mandatory.. which si good.. but the attach
>>>> device still gives the same error as above
>>>>
>>>> Is the `nbdxml` I am using for attachign a qemu-nbd exported drive,
>>>> correct ?
>>> What version of QEMU is this?
>>>
>>> Can you search the logs for the QMP commands related to the hotplug?
>> Do you mean starting my domain using -d option for qemu, which dumps the
>> log in /tmp/qemu.log ?
> I mean libvirt.log. You can start libvirtd with these environment
> variables:
>
> LIBVIRT_DEBUG=debug LIBVIRT_LOG_OUTPUTS=1:file:/tmp/libvirt.log
Thanks, this helped. Here is the summary
With latest libvirtd (1.0.5 built from git)...
<disk type='network'>
<driver name="qemu" type="qcow2"/>
<source protocol="nbd">
<host name="deepakcs-lx" transport="unix" socket="/tmp/mysock2" />
</source>
<target dev="vdc" bus="virtio" />
</disk>
>>> dom.attachDevice(nbdxml)
libvirt: QEMU Driver error : operation failed: open disk image file failed
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/dpkshetty/work/newlibvirt2/libvirt/python/libvirt.py",
line 419, in attachDevice
if ret == -1: raise libvirtError ('virDomainAttachDevice() failed',
dom=self)
libvirt.libvirtError: operation failed: open disk image file failed
* from /tmp/libvirt.log
QEMU_MONITOR_IO_WRITE: mon=0x7f8308003d40
buf={"execute":"human-monitor-command","arguments":{"command-line":"drive_add
dummy
file=nbd:unix:/tmp/mysock2,if=none,id=drive-virtio-disk2,format=qcow2"},"id":"libvirt-390"}
QEMU_MONITOR_RECV_REPLY: mon=0x7f8308003d40 reply={"return": "could not
open disk image nbd:unix:/tmp/mysock2: Invalid argument\r\n", "id":
"libvirt-390"}
On command line...
qemu-kvm -drive file=nbd:unix:/tmp/mysock2,format=qcow2
qemu-kvm: -drive file=nbd:unix:/tmp/mysock2,format=qcow2: could not open
disk image nbd:unix:/tmp/mysock2: Invalid argument
but
qemu-kvm -drive file=nbd:unix:/tmp/mysock2 - works!
So looks like format=qcow2 is causing issues!!!
Then tried...
(removing the <driver... altoghether)
<disk type='network'>
<source protocol="nbd">
<host name="deepakcs-lx" transport="unix" socket="/tmp/mysock2" />
</source>
<target dev="vdc" bus="virtio" />
</disk>
>>> dom.attachDevice(nbdxml)
0
>>> dom.detachDevice(nbdxml)
0
>>>
* from /tmp/libvirt.log
QEMU_MONITOR_IO_WRITE: mon=0x7f8308003d40
buf={"execute":"human-monitor-command","arguments":{"command-line":"drive_add
dummy
file=nbd:unix:/tmp/mysock2,if=none,id=drive-virtio-disk2"},"id":"libvirt-867"}
This works and I was able to successfully add/remove a disk exported via
qemu-nbd to a running VM !
>
>
>> I am using a VM started from virt-manager.... i don't see a way to pass
>> -d to it from virt-manager... I can try using a hand-coded qemu cmdline
>> tho'
>>
>> I assume when i am using python (import libvirt) and/or virsh.. it uses
>> qemu-kvm
>> qemu-kvm version is 1.0.1
> Ok.
>
>> Do i need to try with latest qemu git ?
> No, I don't think so, but you can try (1.4.0 or 1.5.0 will do).
I was using qemu-kvm version 1.0.1... for all of the ^^ above
>
>> On irc.. you asked me to check if cold-plug works.. but attach-device is
>> for active domain only... am i missing something here ?
> You can try putting the <disk> item and start the VM. In this case the
> logs in /var/log/libvirt/qemu will be helpful, because they contain the
> command-line that is used to start QEMU.
Tried putting the above nbdxml usign virsh edit <domname> as an addnl
disk and domain booted fine
It throws the same error if u add format=qcow2 under <driver>...
So looks like the right way to use NBD is *not* to specify format and
let QEMU autosense it ?
thanx,
deepak
>
> Paolo
>
>
More information about the libvir-list
mailing list