Changes

Jump to: navigation, search

Qemu Guest Agent Integration

1,654 bytes added, 07:43, 13 September 2013
/* Libvirt */
</channel>
</syntaxhighlight>
 
This will create a new virtual serial device within the VM and a new socket under code>/var/lib/libvirt/qemu/channel/target/</code> (make sure that this directory is protected!) named <code>
/var/lib/libvirt/qemu/channel/target/${VMNAME}.org.qemu.guest_agent.0</code>.
 
Please note: since libvirt will automatically listen on that socket one can not use a tool like <code>qemu-ga-client</code> to anything on it, everything has to go via libvirt.
 
= VM =
 
In the VM one must install and start the <code>qemu-guest-agent</code>.
 
On Gentoo this means:
<syntaxhighlight lang='bash'>
emerge qemu-guest-agent
/etc/init.d/qemu-guest-agentqemu-guest-agent
rc-update add qemu-guest-agent default
</syntaxhighlight>
 
= Test =
 
== Shutdown a VM via qemu-ga ==
 
The advantage of using qemu-ga instead of the ACPI-based mechanism to shutdown a VM is that you get a confirmation if the qemu-ga was able to issue <code>shutdown -P</code> within the VM whereas with ACPI you won't even know whether the guest OS has received the event.
 
<syntaxhighlight lang='bash'>
virsh shutdown --mode agent $VMNAME
</syntaxhighlight>
 
'''Example:'''
<pre>
~ # virsh shutdown --mode agent bc58f697-1f21-4613-9f4d-469cdaff0621Domain bc58f697-1f21-4613-9f4d-469cdaff0621 is being shutdown
</pre>
 
== Ping qemu-ga via libvirt==
 
<syntaxhighlight lang='bash'>
virsh qemu-agent-command $VMNAME'{"execute":"guest-ping"}'
</syntaxhighlight>
 
'''Example:'''
<pre>
~ # virsh qemu-agent-command bc58f697-1f21-4613-9f4d-469cdaff0621 '{"execute":"guest-ping"}'
 
{"return":{}}
 
</pre>
 
= Links =
 
* http://wiki.libvirt.org/page/Qemu_guest_agent
* http://wiki.qemu.org/Features/QAPI/GuestAgent
[[Category:Snippets]]