GNU/Linux >> Znalost Linux >  >> Cent OS

RHV – Porozumění Qemu Guest Agent

Libvirt používá hostujícího agenta Qemu běžícího uvnitř virtuálního počítače. Tento příspěvek vysvětlí, jak agent Qemu funguje jako komunikační kanál mezi hostitelem KVM a hostem.

Komunikační protokol

Komunikační protokol používaný k načítání informací o VM OS nebo vydávání příkazů hostujícímu OS je Qemu Machine Protocol (QMP). QMP je protokol založený na JSON.

Například libvirt používá agenta hosta k načtení podrobností o souborovém systému od hosta. Chcete-li zkontrolovat, zda hostující agent funguje:

# virsh qemu-agent-command >vm_name> '{"execute": "guest-info"}'

Například:

# virsh qemu-agent-command TestVM '{"execute": "guest-get-host-name"}' --pretty
Please enter your authentication name: vdsm@ovirt
Please enter your password:
{
"return": {
"host-name": "<VM FQDN>"
}
# virsh qemu-agent-command TestVM '{"execute": "guest-get-osinfo"}' --pretty
Please enter your authentication name: vdsm@ovirt
Please enter your password:
{
"return": {
"name": "Oracle Linux Server",
"kernel-release": "4.14.35-1902.300.11.el7uek.x86_64",
"version": "7.8",
"variant": "Server",
"pretty-name": "Oracle Linux Server 7.8",
"version-id": "7.8",
"variant-id": "server",
"kernel-version": "#2 SMP Tue Mar 17 17:11:47 PDT 2020",
"machine": "x86_64",
"id": "ol"
}
}

Způsob komunikace

Komunikace mezi hostujícím agentem a hostitelem probíhá prostřednictvím virtio-serial a isa-serial kanálu org.qemu.guest_agen.0.

– Z VM guest je zde proces qemu.guest_agent:

# ps auxwww |grep guest
root 811 0.0 0.0 44232 4572 ? Ss Feb22 0:51 /usr/bin/qemu-ga --method=virtio-serial --path=/dev/virtio -ports/org.qemu.guest_agent.0 --blacklist=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek ,guest-file-flush,guest-exec,guest-exec-status -F/etc/qemu-ga/fsfreeze-hook

– Z hostitele bude také vytvořen odpovídající soketový soubor v /var/lib/libvirt/qemu/channels/.org.ovirt.hosted-engine-setup.0:

# file /var/lib/libvirt/qemu/channels/56f42910-82d1-4e14-b4a4-646d220567c7.org.ovirt.hosted-engine-setup.0
/var/lib/libvirt/qemu/channels/56f42910-82d1-4e14-b4a4-646d220567c7.org.ovirt.hosted-engine-setup.0: socket
# virsh -r dumpxml TestVM |grep guest_agent
<source mode='bind' path='/var/lib/libvirt/qemu/channels/56f42910-82d1-4e14-b4a4-646d220567c7.org.qemu.guest_agent.0'/>
<target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>

Pokud je komunikace v pořádku, soket UNIX má připojení „ESTAB“:

# ss |grep guest_agent
u_str ESTAB 0 0 /var/lib/libvirt/qemu/channels/56f42910-82d1-4e14-b4a4-646d220567c7.org.qemu.guest_agent.0 82797274 * 82971852
u_str ESTAB 0 0 /var/lib/libvirt/qemu/channels/9c798303-1c30-4965-b447-e1c12588db14.org.qemu.guest_agent.0 82944156 * 82971680

Interval komunikace

Ve výchozím nastavení VDSM dotazuje hostujícího agenta QEMU (qemu-ga) každých 5 minut, aby získal informace. Pokud hostující agent QEMU neběží a odpoví do 5 minut, libvirtd ohlásí chybu jako „Hostující agent neodpovídá:Hostující agent QEMU není připojen“

Ostatní

K dispozici je také podsíť QMP s názvem 'hmp. „qemu-monitor-command“ má schopnost vyměňovat informace ve formátu „hmp“ pomocí voleb -hmp. Chcete-li zkontrolovat stav virtio-sériového portu připojeného k ovirt-guest-agent:

# virsh qemu-monitor-command --hmp <Virtual Machine Name Here> 'info qtree'

Například:

# virsh qemu-monitor-command --hmp TestVM 'info qtree'
Please enter your authentication name: vdsm@ovirt
Please enter your password:

dev: virtserialport, id "channel1"
chardev = "charchannel1"
nr = 2 (0x2)
name = "org.qemu.guest_agent.0"
port 2, guest on, host on, throttle off


Cent OS
  1. Vysvětlení souborů zóny DNS

  2. Pochopení chroot Jail

  3. Porozumění linuxové rezervaci SCSI

  1. Windows – sdílená složka mezi hostem Qemu Windows a hostitelem Linuxu?

  2. Pochopení SELinux Booleans

  3. Pochopení DM-multipath deamon (multipathd)

  1. Pochopení objemových řetězců ve virtualizaci RedHat (RHV)

  2. RHV – Jak vypnout VM z AdminPortal

  3. RHV – Funkce Qemu Guest Agent(qemu-host-agent).