[libvirt-users] Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
Min Du
min.du.email at gmail.com
Tue Nov 11 01:54:58 UTC 2014
Hi Kashyap,
Thanks for the reply.
>>
>> Now for some reason, I need to add “ -qmp tcp:127.0.0.1:1235” when
>> creating a KVM VM using libvirt.
>
> You might need to elaborate how exactly you're doing this.
I wanted to add “-qmp tcp:127.0.0.1:1235” when creating VM because I was using a multi-level debugger which needs this option to get more information of the VM kernel debuginfo and the processes running inside the VM besides gdb attach.
>
>> This command meaning in “qemu-kvm --help” is: -qmp dev like
>> -monitor but opens in 'control' mode.
>
> The above is used if you want to explicitly control a running QEMU
> instance via QMP, e.g. manually issue them QMP commands via telnet(1)
> for development/testing/debugging.
This is exactly what I need - for debugging. Is there a way to achieve this while still using the default monitor libvirt provides?
>
>> I added command-line equivalent options into the xml file, like below
>> format:
>>
>> <qemu:commandline> <qemu:arg value="-s"/> <qemu:arg value="-qmp"/>
>> <qemu:arg value="tcp:127.0.0.1:1235"/> </qemu:commandline>
>
> In guests created in a regular fashion (e.g. virt-install,
> virt-manager), this is all handled by libvirt for you via its APIs.
>
>> However when I create VM using this xml file, I got the error:
>>
>> # virsh create instance-libvirt.xml error: Failed to create domain
>> from instance-libvirt.xml error: internal error process exited while
>> connecting to monitor: qemu-kvm: -qmp tcp:127.0.0.1:1235: Duplicate ID
>> 'monitor' for mon duplicate chardev: monitor
>>
>> The VM I created, without “—qmp” option, has below options showing in
>> “ps aux | grep qemu-kvm”:
>>
>> -chardev
>> socket,id=charmonitor,path=/var/lib/libvirt/qemu/vmifs_test.monitor,server,nowait
>> -mon chardev=charmonitor,id=monitor,mode=control
>>
>> Looks like libvirt automatically adds the monitor options upon VM
>> creation.
>
> As I understand it, libvirt uses its own APIs to handle interactions
> with QEMU monitor console, e.g. qemuMonitorOpen(), etc.
>
> If you're fine delving into code, you might want to libvirt
> sources, specificially this directory: libvirt/src/qemu.
Messing up the source code is the last thing I want to do. I am using the default libvirt coming with CentOs6.5, last time I modified and installed the libvirt source code, I got seriously version-not-match problem.
>
>> Is there a way to disable this and use “—qmp” instead when creating
>> VM?
>
> I doubt libvirt developers will agree with this proposal. But if you're
> intending to try QEMU monitor console for testing, here's some old notes
> on different ways to access QEMU monitor via QMP:
>
> http://kashyapc.com/2013/03/31/multiple-ways-to-access-qemu-monitor-protocol-qmp/
I’ve read this and looks like you’re also using command line to create a KVM machine while enabling “—qmp” option. Is there a way to do this but still creating VM through libvirt?
Thank you very much for your time!
Best Regards,
Min
On Nov 9, 2014, at 11:34 AM, Kashyap Chamarthy <kchamart at redhat.com> wrote:
> On Fri, Nov 07, 2014 at 03:28:57PM -0700, Min Du wrote:
>> Hi,
>>
>> Now for some reason, I need to add “ -qmp tcp:127.0.0.1:1235” when
>> creating a KVM VM using libvirt.
>
> You might need to elaborate how exactly you're doing this.
>
>> This command meaning in “qemu-kvm --help” is: -qmp dev like
>> -monitor but opens in 'control' mode.
>
> The above is used if you want to explicitly control a running QEMU
> instance via QMP, e.g. manually issue them QMP commands via telnet(1)
> for development/testing/debugging.
>
>> I added command-line equivalent options into the xml file, like below
>> format:
>>
>> <qemu:commandline> <qemu:arg value="-s"/> <qemu:arg value="-qmp"/>
>> <qemu:arg value="tcp:127.0.0.1:1235"/> </qemu:commandline>
>
> In guests created in a regular fashion (e.g. virt-install,
> virt-manager), this is all handled by libvirt for you via its APIs.
>
>> However when I create VM using this xml file, I got the error:
>>
>> # virsh create instance-libvirt.xml error: Failed to create domain
>> from instance-libvirt.xml error: internal error process exited while
>> connecting to monitor: qemu-kvm: -qmp tcp:127.0.0.1:1235: Duplicate ID
>> 'monitor' for mon duplicate chardev: monitor
>>
>> The VM I created, without “—qmp” option, has below options showing in
>> “ps aux | grep qemu-kvm”:
>>
>> -chardev
>> socket,id=charmonitor,path=/var/lib/libvirt/qemu/vmifs_test.monitor,server,nowait
>> -mon chardev=charmonitor,id=monitor,mode=control
>>
>> Looks like libvirt automatically adds the monitor options upon VM
>> creation.
>
> As I understand it, libvirt uses its own APIs to handle interactions
> with QEMU monitor console, e.g. qemuMonitorOpen(), etc.
>
> If you're fine delving into code, you might want to libvirt
> sources, specificially this directory: libvirt/src/qemu.
>
>> Is there a way to disable this and use “—qmp” instead when creating
>> VM?
>
> I doubt libvirt developers will agree with this proposal. But if you're
> intending to try QEMU monitor console for testing, here's some old notes
> on different ways to access QEMU monitor via QMP:
>
> http://kashyapc.com/2013/03/31/multiple-ways-to-access-qemu-monitor-protocol-qmp/
>
> --
> /kashyap
More information about the libvirt-users
mailing list