qemu, kvm, xen & libvirtHauptseite | Über | Hilfe | FAQ | Spezialseiten | Anmelden

Druckversion | Impressum | Datenschutz

QEMU Monitor Protocol, QMP, QEMU Guest Agent, qemu-ga

(Link zu dieser Seite als [[QEMU-KVM-Buch/ Anhang/ QMP]])

<<<|###| >>> | English


Inhaltsverzeichnis

[bearbeiten] QMP-Befehle

Das QEMU Monitor Protocol (siehe http://wiki.qemu.org/QMP) ist ein auf JASON (http://www.json.org) basierendes Management Interface, welches Applikationen die Kommunikation mit der QEMU-Instanz ermöglicht. JASON (JavaScript Object Notation) ist ein Datenformat in einer für Maschinen einfach zu lesenden Textform. Das heißt, die Kommunikation mit dem QEMU-Monitor erfolgt über JavaScript-Dokumente. Mit der Option -qmp erfolgt die Umleitung auf ein Device. Die Wirkungen der QMP-Befehle entsprechen meist denen der QEMU-Monitor-Befehle. Es git zwei Arten von QMP-Befehlen: Regelmäßige und Abfragebefehle. Die regelmäßigen Befehle ändern meist den Zustand der Instanz. Abfrage-Befehle geben Informationen über die Instanz aus. Es wird folgende Notation verwendet.

-> Eingabe durch den Client
<- Antwort des Servers

[bearbeiten] Regelmäßige Befehle

In den nachfolgenden Beispielen stellen die Antworten des Server jeweils erfolgreiche Befehlsausführungen dar.

[bearbeiten] quit

Beendet die Instanz.

Beispiel:

-> { "execute": "quit" }
<- { "return": {} }

[bearbeiten] eject

Wirft ein Wechselmedium (CD/DVD, Diskette) aus.

force 

Das Argument force (JSON-Bool, optional) forciert den Auswurf.

device

Das Argument device definiert den Namen des Devices (JSON-String).

Beispiel:

-> { "execute": "eject", "arguments": { "device": "ide1-cd0" } }
<- { "return": {} }

[bearbeiten] change

Ändert die Konfiguration eines Devices (Wechselmedium, VNC).

device

Das Argument device definiert den Namen des Devices (JSON-String).

target

Das Argument target definiert den Datei-Namen oder die zu ändernde Eigenschaft (JSON-String).

arg

Mit arg werden zusätzliche Argumente übergeben (JSON-String, optional).

In diesem Beispiel wird ein Wechselmedium ausgetauscht.

-> { "execute": "change", "arguments": { "device": "ide1-cd0", "target": "/VMs/ReactOS.iso" } }
<- { "return": {} }

In diesem Beispiel wird das VNC-Passwort geändert.

-> { "execute": "change", "arguments": { "device": "vnc", "target": "password", "arg": "foobar1" } }
<- { "return": {} }

[bearbeiten] screendump

Sichert ein Bildschirmfoto als Grafikdatei im PPM-Format.

filename

Das Argument filename definiert den Datei-Pfad (JSON-String).

Beispiel:

-> { "execute": "screendump", "arguments": { "filename": "/tmp/image" } }
<- { "return": {} }

[bearbeiten] stop

Lässt die Instanz pausieren.

Beispiel:

-> { "execute": "stop" }
<- { "return": {} }

[bearbeiten] cont

Lässt die durch stop pausierende Instanz weiterlaufen.

Beispiel:

-> { "execute": "cont" }
<- { "return": {} }

[bearbeiten] system_reset

Bewirkt ein System-Reset.

Beispiel:

-> { "execute": "system_reset" }
<- { "return": {} }

[bearbeiten] system_powerdown

Sendet ein System-Power-Down-Event.

Beispiel:

-> { "execute": "system_powerdown" }
<- { "return": {} }

[bearbeiten] device_add

Fügt ein Device hinzu.

driver

Das Argument driver definiert den Namen des Devices (JSON-String).

bus

Das Argument bus definiert den Parent-Bus (Device Tree Path, JSON-String, optional).

id

Das Argument id definiert die ID (JSON-String) des Devices. Diese ID muss eindeutig sein.

Beispiel:

-> { "execute": "device_add", "arguments": { "driver": "e1000", "id": "net1" } }
<- { "return": {} }

Mit der QEMU-Option -device DEVICE,\? erhält man eine Liste möglicher Eigenschaften eines DEVICES. Weitere Informationen enthält die Datei docs/qdev-device-use.txt.

[bearbeiten] device_del

Entfernt ein Device.

id

Das Argument id definiert die Device-ID (JSON-String).

Beispiel:

-> { "execute": "device_del", "arguments": { "id": "net1" } }
<- { "return": {} }

[bearbeiten] cpu

Setzt die Default-CPU.

index

Das Argument index definiert den CPU-Index (JSON-Int). Die CPU-Inizes erhält man mit dem Befehl query-cpus.

Beispiel:

-> { "execute": "cpu", "arguments": { "index": 0 } }
<- { "return": {} }

[bearbeiten] memsave

Speichert einen Dump des virtuellen Arbeitsspeichers mit einer Größe von size ab Adresse val in eine Datei.

val

Das Argument val definiert die Start-Adresse (JSON-Int).

size

Das Argument size definiert die Speicher-Größe in Bytes (JSON-Int).

filename

Das Argument definiert den Datei-Pfad (JSON-String).

Beispiel:

-> { "execute": "memsave", "arguments": { "val": 10, "size": 100, "filename": "/tmp/virtual-mem-dump" } }
<- { "return": {} }

[bearbeiten] pmemsave

Speichert einen Dump des physikalischen Arbeitsspeichers mit einer Größe von size ab Adresse val in eine Datei.

val

Das Argument val definiert die Start-Adresse (JSON-Int).

size

Das Argument size definiert die Speicher-Größe in Bytes (JSON-Int).

filename

Das Argument filename definiert den Datei-Pfad (JSON-String).

Beispiel:

-> { "execute": "pmemsave", "arguments": { "val": 10, "size": 100, "filename": "/tmp/physical-mem-dump" } }
<- { "return": {} }

[bearbeiten] inject-nmi

Injiziert einen Non-Maskable Interrupt (NMI) zu allen CPUs. Dieser Befehl wird nur von der x86-Architektur unterstützt.

Beispiel:

-> { "execute": "inject-nmi" }
<- { "return": {} }

[bearbeiten] migrate

Bewirkt eine Migration zu uri. Die virtuelle Maschine wird dabei von einem Host-System auf ein anderes Host-System übertragen. Mit dem Befehl query-migrate wird der Migrationsprozess überprüft. Alle boolschen Argumente liefern per Default den Wert false. Das Argument detach des QEMU-Monitor-Befehls ist hier nicht anwendbar.

blk

Mit diesem optionalen Argument (JSON-Bool) aktiviert man das Kopieren der virtuellen Festplatten zu dem Ziel-Host. Dies ist sinnvoll, wenn das Image nicht auf einen gemeinsamen Storage (Shared Storage) liegt.

inc

Mit diesem optionalen Argument (JSON-Bool) erfolgt nur ein Kopieren der Overlay-Dateien. Dies ist sinnvoll, wenn gleiche Basis-Images auf Quell- und Ziel-Host zur Verfügung stehen.

uri

Das Argument uri definiert den Ziel-URI (JSON-String).

Beispiel:

-> { "execute": "migrate", "arguments": { "uri": "tcp:0:4446" } }
<- { "return": {} }

[bearbeiten] migrate_cancel

Bricht die aktuelle Migration ab.

Beispiel:

-> { "execute": "migrate_cancel" }
<- { "return": {} }

[bearbeiten] migrate_set_speed

Begrenzt die maximale Geschwindigkeit der Migration.

value

Das Argument value definiert die Maximal-Geschwindigkeit in Bytes pro Sekunde (JSON-Int).

Beispiel:

-> { "execute": "migrate_set_speed", "arguments": { "value": 1024 } }
<- { "return": {} }

[bearbeiten] migrate_set_downtime

Definiert die maximal zu tolerierende Downtime bei der Migration in Sekunden.

value

Das Argument value definiert die maximal zu tolerierende Downtime bei der Migration in Sekunden.

Beispiel:

-> { "execute": "migrate_set_downtime", "arguments": { "value": 0.1 } }
<- { "return": {} }

[bearbeiten] client_migrate_info

Mit dem Befehl client_migrate_info sendet man Informationen bei einer Migration zum SPICE-/VNC-Client. Dabei werden die SPICE-/VNC-Verbindungsdaten für das Migrationsziel übermittelt. Der SPICE-/VNC-Server bewirkt beim SPICE-/VNC-Client ein automatisches Wiederverbinden.

protocol

Das Argument protocol (JSON-String) definiert das Protokol: spice oder vnc.

hostname

Das Argument hostname definiert den Namen des Ziel-Hosts (JSON-String).

port

Das Argument port definiert den SPICE-/VNC-Port (tcp) der Plaintext-Channels (JSON-Int, optional).

tls-port

Das Argument tls-port definiert das SPICE-Port (tcp) der mit TLS verschlüsselten Channels (JSON-Int, optional).

cert-subject

Das Argument cert-subject definiert das Subject des Server-Zertifikats (JSON-String, optional).

Beispiel:

-> { "execute": "client_migrate_info", "arguments": { "protocol": "spice", "hostname": "virt42.lab.kraxel.org", "port": 1234 } } 
<- { "return": {} }

[bearbeiten] netdev_add

Fügt ein Netzwerk-Device hinzu. Die unterstützten Device-Optionen entsprechen denen der QEMU-Option -net.

type

Das Argument type (JSON-String) definiert den Device-Typ (tap, user).

id

Das Argument id definiert die ID (JSON-String) des Devices. Diese ID muss eindeutig sein.

device options

Beispiel:

-> { "execute": "netdev_add", "arguments": { "type": "user", "id": "netdev1" } }
<- { "return": {} }

[bearbeiten] netdev_del

Löscht ein Netzwerk-Device.

id

Die ID (JSON-String) des Devices. Diese ID muss eindeutig sein.

Beispiel:

-> { "execute": "netdev_del", "arguments": { "id": "netdev1" } }
<- { "return": {} }

[bearbeiten] block_resize

Ändert die Größe einer Image-Datei während der Laufzeit des Gast-Systems. Dies erfordert meist Aktionen im Gast-System, damit dieses die Änderung erkennt. Eine Verkleinerung der virtuellen Festplatte wird zwar unterstützt, sollte aber mit großer Vorsicht angewendet werden. Es lassen sich nur Image-Dateien manipulieren. Block-Devices, wie zum Beispiel LVM-Speicher, können nicht geändert werden.

device

Das Argument device definiert die ID (JSON-String) des Devices. Diese ID muss eindeutig sein.

size

Das Argument size definiert die neue Größe.

Beispiel:

-> { "execute": "block_resize", "arguments": { "device": "scratch", "size": 1073741824 } }
<- { "return": {} }

[bearbeiten] blockdev-snapshot-sync

Generiert einen synchronen Snapshot eines Block-Devices und speichert diesen in die Image-Datei snapshot-file. Existiert diese Datei oder verweist der Pfad auf ein Device, wird der Snapshot darin generiert. Existiert die Datei nicht, wird sie angelegt.

device

Das Argument device (JSON-String) definiert den Namen des Block-Devices.

snapshot-file

Das Argument snapshot-file (JSON-String) definiert den Namen der anzulegenden Image-Datei.

format

Das Argument format (JSON-String, optional) definiert das Format der neuen Image-Datei. Per Default wird qcow2 verwendet.

Beispiel:

-> { "execute": "blockdev-snapshot", "arguments": { "device": "ide-hd0", "snapshot-file": "/some/place/my-image", "format": "qcow2" } }
<- { "return": {} }

[bearbeiten] balloon

Fordert die virtuelle Maschine auf ihre Speicher-Zuordnung zu ändern.

value

Das Argument value (JSON-Int) definiert die neue Speicher-Zuordnung in Byte.

Beispiel:

-> { "execute": "balloon", "arguments": { "value": 536870912 } }
<- { "return": {} }

[bearbeiten] set_link

Verbindet das virtuelle Netzwerkkabel mit dem Netzwerk-Adapter name.

name

Das Argument name (JSON-String) definiert den Namen des Netzwerk-Devices.

up

Das Argument up (JSON-Bool) setzt den Status auf up.

Beispiel:

-> { "execute": "set_link", "arguments": { "name": "e1000.0", "up": false } }
<- { "return": {} }

[bearbeiten] getfd

Empfängt einen File-Descriptor via SCM_RIGHTS für Unix-Sockets und weist ihm einen Namen zu. Befehle des QEMU-Monitors können diesen Namen verwenden. Ein solcher File-Descriptor ist für das Hinzufügen und Entfernen von Netzwerkkarten während des laufenden Gast-System (hotplug) notwendig.

fdname

Das Argument fdname (JSON-String) definiert den Namen des File-Descriptors.

Beispiel:

-> { "execute": "getfd", "arguments": { "fdname": "fd1" } }
<- { "return": {} }

[bearbeiten] closefd

Schließt einen via SCM_RIGHTS empfangenen File-Descriptor.

fdname

Das Argument fdname (JSON-String) definiert den Namen des File-Descriptors.

Beispiel:

-> { "execute": "closefd", "arguments": { "fdname": "fd1" } }
<- { "return": {} }

[bearbeiten] block_passwd

Setzt das Password für ein verschlüsseltes Device.

device

Das Argument device (JSON-String) definiert den Namen des Devices.

password

Das Argument password (JSON-String) definiert das Password.

Beispiel:

-> { "execute": "block_passwd", "arguments": { "device": "ide0-hd0", "password": "12345" } } 
<- { "return": {} }

[bearbeiten] set_password

Der Befehl set_password ändert das Passwort für VNC beziehungsweise SPICE. Ein leeres Passwort verhindert jede Verbindung.

protocol

Das Argument protocol (JSON-String) definiert das Protokol (VNC oder SPICE).

password

Das Argument password (JSON-String) definiert das Password.

connected [keep|disconnect|fail] 

Optional lässt sich mit einem JSON-String das Verhalten bei aufgebauter Verbindung beeinflussen. Mit keep (Default) wird die Verbindung nach Ablauf des Passwortes gehalten. Mit disconnect wird das Passwort geändert und die Verbindung beendet. fail verwirft die Passwort-Änderung.

Beispiel:

-> { "execute": "set_password", "arguments": { "protocol": "vnc", "password": "secret" } }
<- { "return": {} }

[bearbeiten] expire_password

Mit expire_password wird eine Ablaufzeit für das Passwort definiert.

protocol

Das Argument protocol (JSON-String) definiert das Protokol (VNC oder SPICE).

time [now|never| +secs|secs] 

Der JSON-String now lässt das Passwort sofort ungültig werden. Bei never ist die Ablaufzeit unendlich. Mit +nsec wird die Ablaufzeit in Sekunden neu gesetzt. Mit nsec wird die Ablaufzeit in Sekunden absolut seit 1970 (Unix-Epoche) gesetzt.

Beispiel:

-> { "execute": "expire_password", "arguments": { "protocol": "vnc", "time": "+60" } } 
<- { "return": {} }

[bearbeiten] add_client

Fügt einen Grafik-Client hinzu.

protocol

Das Argument protocol (JSON-String) definiert das Protokol (VNC oder SPICE).

fdname

Das Argument fdname (JSON-String) definiert den Namen des File-Descriptors.

Beispiel:

-> { "execute": "add_client", "arguments": { "protocol": "vnc", "fdname": "myclient" } }
<- { "return": {} }

[bearbeiten] qmp_capabilities

Aktiviert die QMP-Fähigkeiten. Dieser Befehl muss vor jedem anderen Befehl angewendet werden.

Beispiel:

-> { "execute": "qmp_capabilities" }
<- { "return": {} }

[bearbeiten] human-monitor-command

Ruft einen Befehl des QEMU-Monitors auf. Zu Beachten ist, dass sich die Befehle des QEMU-Monitors bei neueren QEMU-Versionen ändern können. Dieser Befehl ist zustandslos. Befehle, die abhängig von bestimmten Zuständen sind, zum Beispiel getfd funktionieren nicht korrekt. Dies gilt auch für Befehle, die Nutzereingaben erfordern, wie zum Beispiel cont bei verschlüsselten Devices.

command-line

Das Argument command-line (JSON-String) übergibt den Befehl mit seinen Argumenten wie im QEMU-Monitor.

cpu-index

Das Argument cpu-index (JSON-Int, optional) wählt die CPU-Nummer aus, für die der Befehl angewendet werden soll. Dies ist zum Beispiel für den Befehl info registers notwendig. Wird dieses Argument weggelassen, wird CPU 0 verwendet.

Beispiel:

-> { "execute": "human-monitor-command", "arguments": { "command-line": "info kvm" } }
<- { "return": "kvm support: enabled\r\n" }

[bearbeiten] Abfragebefehle

[bearbeiten] query-version

Zeigt die QEMU-Version an.

qemu

Dieses JSON-Objekt enthält folgende Informationen:

     major
Major-Version (JSON-Int).
     minor
Minor-Version (JSON-Int).
     micro
Micro Version (JSON-Int).
package

Paket-Version (JSON-String).

Beispiel:

-> { "execute": "query-version" }
<- {
      "return":{
         "qemu":{
            "major":0,
            "minor":11,
            "micro":5
         },
         "package":""
      }
   }

[bearbeiten] query-commands

Gibt ein JSON-Arrray mit allen QMP-Befehlen aus. Darin wird jeder QMP-Befehl durch ein JSON-Objekt dargestellt, welches folgende Informationen enthält:

name

Der Name des Befehls (JSON-String).

Dieses Beispiel gibt zeigt eine gekürzte Ausgabe des Befehls.

-> { "execute": "query-commands" }

<- {
      "return":[
         {
            "name":"query-balloon"
         },
         {
            "name":"system_powerdown"
         }
      ]
   }

[bearbeiten] query-chardev

Zeigt Informationen zu den Character-Devices an. Jedes Character-Device wird als JSON-Objekt mit folgenden Informationen dargestellt.

label

Die Kennzeichnung des Devices (JSON-String).

filename

Der Dateiname des Devices (JSON-String).

Beispiel:

-> { "execute": "query-chardev" }

<- {
      "return":[
         {
            "label":"monitor",
            "filename":"stdio"
         },
         {
            "label":"serial0",
            "filename":"vc"
         }
      ]
   }

[bearbeiten] query-block

Zeigt Informationen zu den Block-Devices (Disketten, Festplatten, CD-/DVD-ROMs) an. Die Informationen jedes Block-Devices werden jeweils in einem JSON-Objekt dargestellt. Alle diese JSON-Objekte werden in einem JSON-Array ausgegeben. Jedes JSON-Objekt enthält folgende Informationen:

device

Der Name des Devices (JSON-String).

type

Der Typ (JSON-String) des Devices. Diese Angabe ist veraltet und dient zur Abwärtskompatibilität. Ein möglicher Wert ist unknown.

removable

Ist das Device ein Wechselmedium, ist dieser Wert (JSON-Bool) gleich true. Ansonsten wird false ausgegeben.

locked

Ist das Device gesperrt, ist dieser Wert (JSON-Bool) gleich true. Ansonsten wird false ausgegeben.

inserted

Diese Angaben sind nur vorhanden, wenn das Device eingebunden ist. Dieses JSON-Objekt enthält folgende Informationen:

     file
Der Name des Devices (JSON-String).
     ro
Bei Schreibschutz wird true ausgegben. Ansonsten ist der Wert false.
     drv
Das Format des Treibers (JSON-String). Mögliche Werte sind: blkdebug, bochs, cloop, cow, dmg, file, file, ftp, ftps, host_cdrom, host_device, host_floppy, http, https, nbd, parallels, qcow, qcow2, raw, tftp, vdi, vmdk, vpc und vvfat.
     backing_file
Name der Basis-Datei bei Overlay-Dateien (JSON-String, optional).
     encrypted
Ist das Device verschlüsselt, ist dieser Wert (JSON-Bool) gleich true. Ansonsten wird false ausgegeben.

Beispiel:

-> { "execute": "query-block" }

<- {
      "return":[
         {
            "device":"ide0-hd0",
            "locked":false,
            "removable":false,
            "inserted":{
               "ro":false,
               "drv":"qcow2",
               "encrypted":false,
               "file":"disks/test.img"
            },
            "type":"unknown"
         },
         {
            "device":"ide1-cd0",
            "locked":false,
            "removable":true,
            "type":"unknown"
         },
         {
            "device":"floppy0",
            "locked":false,
            "removable":true,
            "type":"unknown"
         },
         {
            "device":"sd0",
            "locked":false,
            "removable":true,
            "type":"unknown"
         }
      ]
   }

[bearbeiten] query-blockstats

Zeigt Statistik-Informationen zu den Block-Devices an. Die Informationen jedes Block-Devices werden jeweils in einem JSON-Objekt dargestellt. Alle diese JSON-Objekte werden in einem JSON-Array ausgegeben. Jedes JSON-Objekt enthält folgende Informationen:

device

Der Name des Devices (JSON-String).

stats

Das JSON-Objekt mit den Statistik-Informationen enthält folgende Informationen:

     rd_bytes
Gelesene Bytes (JSON-Int).
     wr_bytes
Geschriebene Bytes (JSON-Int).
     rd_operations
Lese-Operationen (JSON-Int).
     wr_operations
Schreib-Operationen (JSON-Int).
     wr_highest_offset
Der größte Offset eines geschriebenen Sektors seit der BlockDriverState geöffnet wurde (JSON-Int).
parent

Dieses optionales JSON-Objekt enthält rekursiv die Statistik des zugrunde liegenden Protokolls, zum Beispiel die qcow2-Image-Datei im Host-System. Gibt es kein zugrunde liegendes Protokoll, wird dieses Feld weggelassen.

Beispiel:

-> { "execute": "query-blockstats" }
<- {
      "return":[
         {
            "device":"ide0-hd0",
            "parent":{
               "stats":{
                  "wr_highest_offset":3686448128,
                  "wr_bytes":9786368,
                  "wr_operations":751,
                  "rd_bytes":122567168,
                  "rd_operations":36772
               }
            },
            "stats":{
               "wr_highest_offset":2821110784,
               "wr_bytes":9786368,
               "wr_operations":692,
               "rd_bytes":122739200,
               "rd_operations":36604
            }
         },
         {
            "device":"ide1-cd0",
            "stats":{
               "wr_highest_offset":0,
               "wr_bytes":0,
               "wr_operations":0,
               "rd_bytes":0,
               "rd_operations":0
            }
         },
         {
            "device":"floppy0",
            "stats":{
               "wr_highest_offset":0,
               "wr_bytes":0,
               "wr_operations":0,
               "rd_bytes":0,
               "rd_operations":0
            }
         },
         {
            "device":"sd0",
            "stats":{
               "wr_highest_offset":0,
               "wr_bytes":0,
               "wr_operations":0,
               "rd_bytes":0,
               "rd_operations":0
            }
         }
      ]
   }

[bearbeiten] query-cpus

Gibt ein JSON-Array mit Informationen zu allen CPUs aus. Jede CPU wird durch ein JSON-Objekt dargestellt, das folgende Informationen enthält.

CPU

Der Index der CPU (JSON-Int).

current

Ist diese CPU die aktuelle CPU wird true ausgegeben (JSON-Bool).

halted

Wurde die CPU angehalten, wird true ausgegeben (JSON-Bool).

Aktueller Programm Zähler. 

Der Schlüssel-Name (JSON-Int) ist von der CPU-Architektur abhängig: pc (i386/x86_64), nip (PPC ), pc/npc (sparc), PC (mips).

thread_id

Die ID des zu Grunde liegenen Host-Thread (JSON-Int).

Beispiel:

-> { "execute": "query-cpus" }
<- {
      "return":[
         {
            "CPU":0,
            "current":true,
            "halted":false,
            "pc":3227107138
            "thread_id":3134
         },
         {
            "CPU":1,
            "current":false,
            "halted":true,
            "pc":7108165
            "thread_id":3135
         }
      ]
   }

[bearbeiten] query-pci

Gibt in einem JSON-Array Informationen über die emulierten PCI-Devices und Busse aus. Jeder Bus wird durch ein JSON-Objekt dargestellt, welches einen Schlüssel mit einem JSON-Array beinhaltet. Dieses Array enthält alle angeschlossenen PCI-Devices. Jedes Device wird durch ein JSON-Objekt dargestellt. Das JSON-Objekt eines Busses enthält folgende Informationen:

bus

Die Nummer des Busses (JSON-Int).

devices

Ein JSON-Array mit JSON-Objekten. Jedes JSON-Objekt stellt ein PCI-Device dar. Das JSON-Objekt für ein PCI-Device enthält folgende Informationen:

bus

Dieser Wert ist identisch mit der Nummer des Parent-Busses (JSON-Int).

slot

Die Nummer des Slots (JSON-Int).

function

Die Funktionsnummer (JSON-Int).

class_info

Ein JSON-Objekt enthält folgende Informationen:

     desc
Die Klassenbeschreibung des Devices (JSON-String, optional).
     class
Die Klassennummer des Devices (JSON-Int).
id

Dieses JSON-Objekt enthält unter device die Device-ID (JSON-Int) und unter vendor die Vendor-ID (JSON-Int).

irq

Wurde dem Device ein IRQ zugewiesen, wird dieser dargestellt (JSON-Int, optional).

qdev_id

Dieser JSON-String beinhaltet die QDEV-ID.

pci_bridge

Dieses JSON-Objekt existiert nur bei einer PCI-Bridge und enthält folgende Informationen:

     bus
Die Bus-Nummer (JSON-Int).
     secondary
Die zweite Bus-Nummer (JSON-Int).
     subordinate
Die untergeordnete Bus-Nummer (JSON-Int).
     io_range
Dieses JSON-Objekt informiert über den I/O-Speicherbereich und enthält folgende Elemente: base ist die Basis-Adresse in Bytes (JSON-Int) und limit ist die Grenz-Adresse in Bytes (JSON-Int).
     memory_range
Dieses JSON-Objekt informiert über den Speicherbereich und enthält folgende Elemente: base ist die Basis-Adresse in Bytes (JSON-Int) und limit ist die Grenz-Adresse in Bytes (JSON-Int).
     prefetchable_range
Dieses JSON-Objekt informiert über den Prefetchable-Speicherbereich und enthält folgende Elemente: base ist die Basis-Adresse in Bytes (JSON-Int) und limit ist die Grenz-Adresse in Bytes (JSON-Int). Als Prefetching bezeichnet man das vorsorgliche Laden von Speicherinhalten, um eine höhere Zugriffsgeschwindigkeit zu erzielen.
     devices
Dieses optionale JSON-Array beinhaltet die angeschlossenen PCI-Devices. Jedes Element wird durch ein JSON-Objekt dargestellt, welches die gleichen Elemente wie das oben beschriebene PCI-Device-JSON-Objekt beinhaltet.
regions

Dieses JSON-Array beinhaltet JSON-Objekte, die jeweils einen Speicherbereich des Devices darstellen. Diese JSON-Objekte beinhalten folgende Information:

base

Die Basis-Speicheradresse (JSON-Int).

limit

Der Grenzwert (JSON-Int).

Dieses JSON-Objekt kann ein I/O-Bereich oder ein Speicher-Bereich sein. Ein JSON-Objekt mit einem I/O-Bereich enthält folgende Information:

type

Dieser JSON-String enthält den festen Wert io.

bar

BAR-Nummer (JSON-Int).

address

Speicher-Adresse (JSON-Int).

size

Speicher-Größe (JSON-Int).

Ein JSON-Objekt mit einem Speicher-Bereich enthält folgende Information:

type

Dieser JSON-String enthält den festen Wert memory.

bar

BAR-Nummer (JSON-Int).

address

Speicher-Adresse (JSON-Int).

size

Speicher-Größe (JSON-Int).

mem_type_64

Ist der Speicher-Typ gleich 64-Bit, ist dieser Wert (JSON-Bool) gleich true.

prefetch

Bei Prefetching ist dieser Wert (JSON-Bool) gleich true.

Die Ausgabe dieses Beispiels ist gekürzt.

-> { "execute": "query-pci" }
<- {
      "return":[
         {
            "bus":0,
            "devices":[
               {
                  "bus":0,
                  "qdev_id":"",
                  "slot":0,
                  "class_info":{
                     "class":1536,
                     "desc":"Host bridge"
                  },
                  "id":{
                     "device":32902,
                     "vendor":4663
                  },
                  "function":0,
                  "regions":[
   
                  ]
               },
               {
                  "bus":0,
                  "qdev_id":"",
                  "slot":1,
                  "class_info":{
                     "class":1537,
                     "desc":"ISA bridge"
                  },
                  "id":{
                     "device":32902,
                     "vendor":28672
                  },
                  "function":0,
                  "regions":[
   
                  ]
               },
               {
                  "bus":0,
                  "qdev_id":"",
                  "slot":1,
                  "class_info":{
                     "class":257,
                     "desc":"IDE controller"
                  },
                  "id":{
                     "device":32902,
                     "vendor":28688
                  },
                  "function":1,
                  "regions":[
                     {
                        "bar":4,
                        "size":16,
                        "address":49152,
                        "type":"io"
                     }
                  ]
               },
               {
                  "bus":0,
                  "qdev_id":"",
                  "slot":2,
                  "class_info":{
                     "class":768,
                     "desc":"VGA controller"
                  },
                  "id":{
                     "device":4115,
                     "vendor":184
                  },
                  "function":0,
                  "regions":[
                     {
                        "prefetch":true,
                        "mem_type_64":false,
                        "bar":0,
                        "size":33554432,
                        "address":4026531840,
                        "type":"memory"
                     },
                     {
                        "prefetch":false,
                        "mem_type_64":false,
                        "bar":1,
                        "size":4096,
                        "address":4060086272,
                        "type":"memory"
                     },
                     {
                        "prefetch":false,
                        "mem_type_64":false,
                        "bar":6,
                        "size":65536,
                        "address":-1,
                        "type":"memory"
                     }
                  ]
               },
               {
                  "bus":0,
                  "qdev_id":"",
                  "irq":11,
                  "slot":4,
                  "class_info":{
                     "class":1280,
                     "desc":"RAM controller"
                  },
                  "id":{
                     "device":6900,
                     "vendor":4098
                  },
                  "function":0,
                  "regions":[
                     {
                        "bar":0,
                        "size":32,
                        "address":49280,
                        "type":"io"
                     }
                  ]
               }
            ]
         }
      ]
   }

[bearbeiten] query-kvm

Zeigt Informationen über die Kernel-based Virtual Machine an. Dieses JSON-Objekt enthält folgende Informationen:

enabled

Ist KVM aktiviert ist dieser Wert (JSON-Bool) gleich true.

present

Wird KVM unterstützt ist dieser Wert (JSON-Bool) gleich true.

Beispiel:

-> { "execute": "query-kvm" }
<- { "return": { "enabled": true, "present": true } }

[bearbeiten] query-status

Zeigt den Zustand der Instanz an (laufend, pausierend, Single-Step-Mode).

running

Pausiert die Instanz ist der Wert (JSON-Bool) gleich false.

singlestep

Befindet sich die Instanz im Single-Step-Modus ist dieser Wert (JSON-Bool) gleich true.

Beispiel:

-> { "execute": "query-status" }
<- { "return": { "running": true, "singlestep": false } }

[bearbeiten] query-mice

Zeigt alle aktiven Mäuse des Gast-Systems als ein JSON-Array an. Jede Maus wird durch ein JSON-Objekt mit folgenden Inhalt dargestellt:

name

Der Name der Maus (JSON-String).

index

Der Index der Maus (JSON-Int).

current

Emfängt die Maus Events, ist dieser Wert (JSON-Bool) gleich true.

absolute

Generiert die Maus absolute Input-Events ist dieser Wert (JSON-Bool) gleich true.

Beispiel:

-> { "execute": "query-mice" }
<- {
      "return":[
         {
            "name":"QEMU Microsoft Mouse",
            "index":0,
            "current":false,
            "absolute":false
         },
         {
            "name":"QEMU PS/2 Mouse",
            "index":1,
            "current":true,
            "absolute":true
         }
      ]
   }

[bearbeiten] query-vnc

Zeigt den VNC-Zustand an (JSON-Objekt). Verbundene VNC-Clients werden als JSON-Array bestehend aus JSON-Objekten dargestellt. Das Haupt-JSON-Objekt enthält folgende Informationen:

enabled

Ist der VNC-Server aktiviert, ist dieser Wert (JSON-Bool) gleich true.

host

Die IP-Adresse des Servers (JSON-String).

family

Dieser JSON-String kann diese Werte beinhalten: ipv4, ipv6, unix oder unknown.

service

Die Port-Nummer des VNC-Servers (JSON-String).

auth

Die Authentifizierungsmethode (JSON-String) kann diese Werte annehmen: invalid, none, ra2, ra2ne, sasl, tight, tls, ultra, unknown, vencrypt, vencrypt, vencrypt+plain, vencrypt+tls+none, vencrypt+tls+plain, vencrypt+tls+sasl, vencrypt+tls+vnc, vencrypt+x509+none, vencrypt+x509+plain, vencrypt+x509+sasl, vencrypt+x509+vnc oder vnc.

clients

Ein JSON-Array mit allen verbundenen VNC-Clients. VNC-Clients werden jeweils mit einem JSON-Objekt beschrieben, das folgende Informationen beinhaltet:

host

Die IP-Adresse des VNC-Clients (JSON-String).

family

Dieser JSON-String kann diese Werte beinhalten: ipv4, ipv6, unix oder unknown.

service

Die Port-Nummer des VNC-Clients.

x509_dname

TLS-dname (JSON-String, optional).

sasl_username

SASL-Benutzername (JSON-String, optional).

Beispiel:

-> { "execute": "query-vnc" }
<- {
      "return":{
         "enabled":true,
         "host":"0.0.0.0",
         "service":"50402",
         "auth":"vnc",
         "family":"ipv4",
         "clients":[
            {
               "host":"127.0.0.1",
               "service":"50401",
               "family":"ipv4"
            }
         ]
      }
   }

[bearbeiten] query-spice

Zeigt den SPICE-Zustand an (JSON-Objekt). Verbundene SPICE-Clients werden als JSON-Array bestehend aus JSON-Objekten dargestellt. Das Haupt-JSON-Objekt enthält folgende Informationen:

enabled

Ist der SPICE-Server aktiviert, ist dieser Wert (JSON-Bool) gleich true.

host

Die IP-Adresse des SPICE-Servers (JSON-String).

port

Die Port-Nummer des SPICE-Servers (JSON-Int, optional).

tls-port

Die TLS-Port-Nummer des SPICE-Servers (JSON-Int, optional).

auth

Die Authentifizierungsmethode (JSON-String) kann diese Werte annehmen: none oder spice.

channels

Ein JSON-Array mit allen aktiven SPICE-Kanälen. Jeder Kanal wird als JSON-Objekt beschrieben, welches folgende Informationen enthält:

host

Die IP-Adresse des SPICE-Clients (JSON-String).

family

Dieser JSON-String kann folgende Werte annehmen: ipv4, ipv6, unix oder unknown.

port

Die Port-Nummer des SPICE-Clients.

connection-id

Die ID der SPICE-Verbindung (JSON-Int). Alle Kanäle mit der gleichen ID gehören zur gleichen SPICE-Session.

channel-type

Für den Haupt-Steuerungskanal wird dieser Wert (JSON-Int) gleich 1 gesetzt.

channel-id

Dieser Wert (JSON-Int) enthält die ID des SPICE-Kanals. Normalerweise ist dieser Wert gleich 0. Wenn mehrere Kanäle mit dem gleichen Typ existieren, werden andere Werte gesetzt.

tls

Ist der Kanal verschlüsselt, ist dieser Wert (JSON-Bool) gleich true.

Beispiel:

-> { "execute": "query-spice" }
<- {
      "return": {
         "enabled": true,
         "auth": "spice",
         "port": 5920,
         "tls-port": 5921,
         "host": "0.0.0.0",
         "channels": [
            {
               "port": "54924",
               "family": "ipv4",
               "channel-type": 1,
               "connection-id": 1804289383,
               "host": "127.0.0.1",
               "channel-id": 0,
               "tls": true
            },
            {
               "port": "36710",
               "family": "ipv4",
               "channel-type": 4,
               "connection-id": 1804289383,
               "host": "127.0.0.1",
               "channel-id": 0,
               "tls": false
            },
            [ ... more channels follow ... ]
         ]
      }
   }

[bearbeiten] query-name

Dieses JSON-Objekt zeigt den Namen der Instanz an.

name

Dieser Wert (JSON-String, optional) zeigt den Namen der Instanz an.

Beispiel:

-> { "execute": "query-name" }
<- { "return": { "name": "qemu-name" } }

[bearbeiten] query-uuid

Dieses JSON-Objekt zeigt den UUID (Universally Unique Identifier) der Instanz an.

UUID

Universally Unique Identifier (JSON-String).

Beispiel:

-> { "execute": "query-uuid" }
<- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }

[bearbeiten] query-migrate

Dieses JSON-Objekt zeigt den Status der Migration an. Bei einer aktiven Migration wird ein weiteres JSON-Objekt ausgegeben, welches den Status der RAM-Migration darstellt. Bei aktiver Block-Migration wird noch ein JSON-Objekt ausgegeben, welches den Status der Block-Migration anzeigt. Das Haupt-JSON-Objekt enthält folgende Informationen:

status

Der Status der Migration (JSON-String) kann folgende Werte einnehmen: active, completed, failed oder cancelled.

ram

Dieses JSON-Objekt existiert nur, wenn status gleich active ist. Es enthält folgende Informationen in Byte: transferred ist der Überweisungsbetrag (JSON-Int), remaining ist die Restmenge (JSON-Int) und total (JSON-Int).

disk

Dieses JSON-Objekt existiert nur, wenn status gleich active ist und es eine Block-Migration ist. Es enthält folgende Informationen in Byte: transferred ist der Überweisungsbetrag (JSON-Int), remaining ist die Restmenge (JSON-Int) und total (JSON-Int).

Dieses Beispiel zeigt den Zustand vor einer Migration an.

-> { "execute": "query-migrate" }
<- { "return": {} }

In diesem Beispiel ist die Migration erfolgreich beendet worden.

-> { "execute": "query-migrate" }
<- { "return": { "status": "completed" } }

In diesem Beispiel ist die Migration fehlerhaft beendet worden.

-> { "execute": "query-migrate" }
<- { "return": { "status": "failed" } }

In diesem Beispiel läuft eine Migration ohne Block-Migration.

-> { "execute": "query-migrate" }
<- {
      "return":{
         "status":"active",
         "ram":{
            "transferred":123,
            "remaining":123,
            "total":246
         }
      }
   }

In diesem Beispiel läuft eine Migration mit Block-Migration.

-> { "execute": "query-migrate" }
<- {
      "return":{
         "status":"active",
         "ram":{
            "total":1057024,
            "remaining":1053304,
            "transferred":3720
         },
         "disk":{
            "total":20971520,
            "remaining":20880384,
            "transferred":91136
         }
      }
   }

[bearbeiten] query-balloon

Fordert asynchron Informationen zum Ballooning an. Ist die Anforderung abgearbeitet, wird ein JSON-Objekt mit folgenden Informationen ausgegeben:

actual

Aktueller Balloon-Wert in Bytes (JSON-Int).

mem_swapped_in

Größe des eingelagerten Speichers in Bytes (JSON-Int, optional).

mem_swapped_out

Größe des ausgelagerten Speichers in Bytes (JSON-Int, optional).

major_page_faults

Anzahl der schwerwiegenden Fehler (JSON-Int, optional).

minor_page_faults

Anzahl geringfügiger Mängel (JSON-Int, optional).

free_mem

Gesamtbetrag des freien und ungenutzten Speichers in Bytes (JSON-Int, optional).

total_mem

Gesamtgröße des verfügbaren Speichers in Bytes (JSON-Int, optional).

Beispiel:

-> { "execute": "query-balloon" }
<- {
      "return":{
         "actual":1073741824,
         "mem_swapped_in":0,
         "mem_swapped_out":0,
         "major_page_faults":142,
         "minor_page_faults":239245,
         "free_mem":1014185984,
         "total_mem":1044668416
      }
   }

[bearbeiten] Der QEMU Guest Agent qemu-ga

Host ~$ qemu-ga -c channel_opts 
-m, --method unix-listen|virtio-serial|isa-serial

Gibt die Transport-Methode vor. Die Default-Einstellung ist virtio-serial.

-p, --path

Definiert den Device/Socket-Pfad. Die Default-Einstellung für virtio-serial ist /dev/virtio-ports/org.qemu.guest_agent.0.

-l, --logfile

Gibt den Pfad für das Log-File vor. Die Default-Einstellung ist stderr.

-f, --pidfile

Definiert das PID-File. Die Default-Einstellung ist /var/run/qemu-ga.pid.

-v, --verbose

Es werden zusätzliche Debugging-Informationen ausgegeben.

-V, --version

Es wird die Version angezeigt und danach das Programm beendet.

-d, --daemonize

Das Programm läuft als Daemon.

-h, --help

Es wird die Hilfestellung angezeigt und danach das Programm beendet.

[bearbeiten] Links


<<<|###| >>>

Von „http://qemu-buch.de/de/index.php?title=QEMU-KVM-Buch/_Anhang/_QMP

Diese Seite wurde bisher 10.283 mal abgerufen. Diese Seite wurde zuletzt am 10. September 2011 um 11:37 Uhr geändert. Inhalt ist verfügbar unter der GNU Free Documentation License 1.2.


Finden

Blättern

News

Deutsch
Weitersagen
Tipps für Autoren
Autoren
Impressum


English
Recommendation
The Authors
Contact



Letzte Änderungen


Ändern
Seite bearbeiten
Bearbeitungshilfe
Seitenoptionen
Diskussion
Kommentar hinzufügen
Druckversion
Seitendaten
Versionen
Links auf diese Seite
Änderungen an verlinkten Seiten
Meine Seiten
Anmelden
Spezialseiten
Neue Seiten
Dateiliste
Statistik
Kontakt
Mehr …