GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

RHV – Verständnis von Qemu Guest Agent

Libvirt verwendet den Qemu-Gast-Agent, der in einer VM ausgeführt wird. In diesem Beitrag wird erläutert, wie der Qemu-Agent als Kommunikationskanal zwischen dem KVM-Host und dem Gast fungiert.

Kommunikationsprotokoll

Das zum Abrufen von Informationen des VM-Betriebssystems oder zum Ausgeben von Befehlen an das Gast-Betriebssystem verwendete Kommunikationsprotokoll ist Qemu Machine Protocol (QMP). QMP ist ein JSON-basiertes Protokoll.

Beispielsweise verwendet libvirt den Gast-Agenten, um Dateisystemdetails vom Gast abzurufen. So überprüfen Sie, ob der Gast-Agent funktioniert:

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

Zum Beispiel:

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

Kommunikationsmethode

Die Kommunikation zwischen Gastagent und Host erfolgt über den virtio-serial und den isa-serial Kanal org.qemu.guest_agen.0.

– Vom VM-Gast, hier ist der Prozess 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

– Vom Host wird auch eine entsprechende Socket-Datei in /var/lib/libvirt/qemu/channels/.org.ovirt.hosted-engine-setup.0:

erstellt
# 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'/>

Wenn die Kommunikation in Ordnung ist, hat der UNIX-Socket eine ‘ESTAB’-Verbindung:

# 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

Kommunikationsintervall

Standardmäßig fragt VDSM den QEMU-Gast-Agent (qemu-ga) alle 5 Minuten ab, um Informationen abzurufen. Wenn der QEMU-Gast-Agent nicht läuft und innerhalb von 5 Minuten antwortet, meldet libvirtd einen Fehler wie „Gast-Agent antwortet nicht:QEMU-Gast-Agent ist nicht verbunden“

Andere

Das Subnetz von QMP mit dem Namen „hmp“ ist ebenfalls verfügbar. „qemu-monitor-command“ hat die Fähigkeit, Informationen im „hmp“-Format durch -hmp-Optionen auszutauschen. So überprüfen Sie den Status des virtio-serial-Ports, der mit dem ovirt-guest-agent verbunden ist:

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

Zum Beispiel:

# 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. Windows – Freigegebener Ordner zwischen Qemu Windows Guest und Linux Host?

  2. Grundlegendes zu DNS-Zonendateien

  3. Boolesche Werte von SELinux verstehen

  4. Grundlegendes zum DM-Multipath-Daemon (multipathd)

  5. QEMU, wie man das Host-Netzwerk anpingt?

NoSQL-Datenmodellierungstechniken verstehen

die Ausgabe des Befehls „yum history“ verstehen

Grundlegendes zu Linux Multipath (dm-multipath)

Grundlegendes zur Energieverwaltung in der RedHat-Virtualisierung (RHV)

RHV – „Resilience Policy“ für die VM-Live-Migration verstehen

Wie kann die angezeigte Bildschirmauflösung auf QEMU / KVM erhöht werden?