Min Du
2014-Nov-07 22:28 UTC
[libvirt-users] Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
Hi, Now for some reason, I need to add “ -qmp tcp:127.0.0.1:1235” when creating a KVM VM using libvirt. This command meaning in “qemu-kvm --help” is: -qmp dev like -monitor but opens in 'control' mode. 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> 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. Is there a way to disable this and use “—qmp” instead when creating VM? Thanks for your help. Best Regards, Min
Kashyap Chamarthy
2014-Nov-09 18:34 UTC
Re: [libvirt-users] Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
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
Michal Privoznik
2014-Nov-10 08:50 UTC
Re: [libvirt-users] Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
On 07.11.2014 23:28, 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. This command meaning in “qemu-kvm --help” is: -qmp dev like -monitor but opens in 'control' mode. > 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> > > 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. > > Is there a way to disable this and use “—qmp” instead when creating VM?No. Libvirt always creates a VM with monitor as it is used to control the machine. Without the monitor there's not much left for our APIs. Why do you need to have monitor anyway? Is there something you can't achieve with libvirt APIs? Even if it was so, there's this APIs which allows you to pass arbitrary monitor commands to qemu: virDomainQemuMonitorCommand. Michal
Min Du
2014-Nov-11 01:54 UTC
Re: [libvirt-users] Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
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@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
Reasonably Related Threads
- Re: Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
- Re: Is there a way to disable libvirt qemu monitor while creating kvm vm using virsh?
- guestfish runs w/ a nested guest
- Start domain with usable QMP connection?
- Re: Broken OS when booting rootfs from 9p share