GNU/Linux >> Tutoriels Linux >  >> Cent OS

RHV - Compréhension de l'agent invité Qemu

Libvirt utilise l'agent invité Qemu exécuté à l'intérieur d'une machine virtuelle. Cet article expliquera comment l'agent Qemu agit comme un canal de communication entre l'hôte KVM et l'invité.

Protocole de communication

Le protocole de communication utilisé pour récupérer les informations du système d'exploitation VM ou émettre des commandes vers le système d'exploitation invité est Qemu Machine Protocol (QMP). QMP est un protocole basé sur JSON.

Par exemple, libvirt utilise l'agent invité pour récupérer les détails du système de fichiers de l'invité. Pour vérifier si l'agent invité fonctionne :

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

Par exemple :

# 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"
}
}

Méthode de communication

La communication entre l'agent invité et l'hôte se fait via le canal virtio-serial et isa-serial org.qemu.guest_agen.0.

– Depuis l'invité VM, voici le processus 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

– Depuis l'hôte, un fichier de socket correspondant sera également créé dans /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'/>

Si la communication est correcte, le socket UNIX a une connexion "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

Intervalle de communication

Par défaut, VDSM interroge l'agent invité QEMU (qemu-ga) toutes les 5 minutes pour récupérer des informations. Si l'agent invité QEMU ne s'exécute pas et répond dans les 5 minutes, libvirtd signalera l'erreur du type "L'agent invité ne répond pas :l'agent invité QEMU n'est pas connecté"

Autres

Le sous-réseau de QMP appelé hmp est également disponible. "qemu-monitor-command" a la capacité d'échanger des informations au format "hmp" par les options -hmp. Pour vérifier l'état du port virtio-série connecté à l'ovirt-guest-agent :

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

Par exemple :

# 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. RHV – Comment arrêter une machine virtuelle depuis AdminPortal

  2. RHV - Fonctionnalités de Qemu Guest Agent (qemu-guest-agent)

  3. Comprendre la politique de migration du cluster RHV

  4. Comprendre la politique de clôture de cluster dans la virtualisation RedHat (RHV)

  5. RHV – Comprendre la « politique de résilience » pour la migration en direct de VM

Comprendre les techniques de modélisation de données NoSQL

comprendre la sortie de la commande "yum history"

Comprendre le multipath Linux (dm-multipath)

Comprendre la gestion de l'alimentation dans RedHat Virtualization (RHV)

Comprendre les chaînes de volumes dans RedHat Virtualization (RHV)

Comment augmenter la résolution de l'écran visualisé sur QEMU / KVM ?