Управление бэкэндом устройства камеры
cameradev_add Добавить бэкэнд камеры.
Аргументы:
id
: идентификатор устройства, должен быть уникальным.driver
: тип бэкэнда камеры, например, v4l2 или demo.path
: путь к файлу бэкэнда камеры, например, /dev/video0.Примечания: МикроВМ не поддерживается.
Пример:
-> { "execute": "cameradev_add", "arguments": { "id": "cam-0", "driver": "v4l2", "path": "/dev/video0" } }
<- { "return": {} }
cameradev_del Удалить бэкэнд камеры.
Аргументы:
id
: идентификатор устройства.Примечания: МикроВМ не поддерживается.
Пример:
-> { "execute": "cameradev_del", "arguments": { "id": "cam-0" } }
<- { "return": {} }
Управление бэкэндами символьных устройств
В настоящее время поддерживается только стандартная ВМ.
chardev-add Добавить бэкэнд символьного устройства.
Аргументы:
id
: идентификатор символьного устройства, должен быть уникальным.backend
: информация о бэкэнде chardev.Примечания (стандартная ВМ):
chardev-add
должен совпадать с идентификатором в netdev_add
.Пример:
-> { "execute": "chardev-add", "arguments": { "id": "chardev_id", "backend": { "type": "socket", "data": { "addr": { "type": "unix", "data": { "path": "/path/to/socket" } }, "server": false } } } }
<- { "return": {} }
chardev-remove Удалить бэкэнд символьного устройства.
Аргументы:
id
: идентификатор символьного устройства.Пример:
-> { "execute": "chardev-remove", "arguments": { "id": "chardev_id" } }
<- { "return": {} }
Горячее подключение
StratoVirt поддерживает горячее подключение virtio-blk и virtio-net устройств с QMP. Стандартная ВМ поддерживает горячее подключение vfio и vhost-user сетевых устройств.
device_add Добавить устройство.
Аргументы:
id
: идентификатор устройства, должен быть уникальным.driver
: имя драйвера устройства.addr
: адрес, по которому устройство вставляется.host
: информация об устройстве PCI в системе, которая содержит домен, номер шины, номер слота и номер функции.bus
: шина, на которую вставляется устройство. Только для стандартной ВМ.mac
: MAC сетевого устройства.netdev
: бэкэнд сетевого устройства.drive
: бэкэнд блочного устройства.serial
: серийный номер блочного устройства.Примечания (стандартная ВМ): В настоящее время устройство можно подключить только к устройству pcie-root-port. Поэтому перед запуском ВМ необходимо настроить корневой порт в cmdline.
Конфигурация ядра гостя: CONFIG_HOTPLUG_PCI_PCIE=y. Не рекомендуется подключать/отключать устройства во время запуска, завершения работы или приостановки ВМ, а также когда ВМ находится под большой нагрузкой. В этом случае драйвер в ВМ может не отвечать на запросы, вызывая исключения ВМ.
Пример:
-> { "execute": "device_add", "arguments": { "id": "net-0", "driver": "virtio-net-mmio", "addr": "0x0" } }
<- { "return": {} }
device_del Удалить устройство из гостя.
Аргументы:
id
: идентификатор устройства.Примечания: Устройство фактически удаляется, когда вы получаете событие DEVICE_DELETED.
Пример:
-> { "execute": "device_del", "arguments": { "id": "net-0" } } }
<- { "event": "DEVICE_DELETED", "data": { "device": "net-0", "path": "net-0" }, "timestamp": { "seconds": 1614310541, "microseconds": 554250 } }
<- { "return": {} }
Жизненный цикл
С помощью QMP вы можете управлять жизненным циклом ВМ с помощью команд stop, cont и quit, а также проверять состояние ВМ с помощью команды query-status.
stop Остановить выполнение всех гостевых VCPU.
Пример:
-> { "execute": "stop" }
<- { "event": "STOP", "data": {}, "timestamp": { "seconds": 1583908726, "microseconds": 162739 } }
<- { "return": {} }
cont Возобновить выполнение всех гостевых VCPU.
Пример:
-> { "execute": "cont" }
<- { "event": "RESUME", "data": {}, "timestamp": { "seconds": 1583908853, "microseconds": 411394 } }
<- { "return": {} }
system_reset Сбросить выполнение всех гостевых VCPU.
Пример:
-> { "execute": "system_reset" }
<- { "return": {} }
<- { "event": "RESET", "data": { "guest": true }, "timestamp": { "seconds": 1677381086, "microseconds": 432033 } }
system_powerdown Запрос на отключение питания гостя. Выполнение операции отключения питания.
-> { "execute": "system_powerdown" }
<- { "return": {} }
<- { "event": "POWERDOWN", "data": {}, "timestamp": { "seconds": 1677850193, "microseconds": 617907 } }
Завершение работы.
Эта команда приводит к корректному завершению процесса StratoVirt.
-> { "execute": "quit" }
<- { "return": {} }
<- { "event": "SHUTDOWN", "data": { "guest": false, "reason": "host-qmp-quit" }, "timestamp": { "ds": 1590563776, "microseconds": 519808 } }
Запрос статуса.
Запрашивает статус выполнения всех VCPU.
-> {"execute": "query-status"}
<- {"return": { "running": true,"singlestep": false,"status": "running"}}
Управление устройством Balloon backend.
С помощью команды QMP можно установить целевой размер памяти гостя и получить размер памяти гостя.
Устройство Balloon.
Устанавливает целевой размер памяти гостя.
Аргументы:
value
— размер памяти.Пример:
-> { "execute": "balloon", "arguments": { "value": 2147483648 } }
<- { "return": {} }
Запрос устройства Balloon.
Получает размер памяти гостя.
Пример:
-> { "execute": "query-balloon" }
<- { "return": { "actual": 2147483648 } }
Миграция.
Перенос.
Создаёт снимок виртуальной машины в указанный каталог.
Аргументы:
uri
— путь к шаблону.Пример:
-> { "execute": "migrate", "arguments": { "uri": "file:path/to/template" } }
<- { "return": {} }
Запрос переноса.
Получает состояние снимка.
Существует 5 состояний во время создания снимка:
— None
: ресурс не подготовлен полностью.
— Setup
: ресурс настроен, готов к созданию снимка.
— Active
: создание снимка.
— Completed
: создание снимка успешно завершено.
— Failed
: создание снимка завершилось с ошибкой.
Пример:
-> { "execute": "query-migrate" }
<- { "return": { "status": "completed" } }
Снимок.
Blockdev-snapshot-internal-sync.
Создаёт внутренний снимок диска.
Аргументы:
device
— действительное блочное устройство.name
— имя снимка.Пример:
-> { "execute": "blockdev-snapshot-internal-sync", "arguments": { "device": "disk0", "name": "snapshot1" } }
<- { "return": {} }
Blockdev-snapshot-delete-internal-sync.
Удаляет внутренний снимок диска.
Аргументы:
device
— действительное блочное устройство.name
— имя снимка.Пример:
-> { "execute": "blockdev-snapshot-delete-internal-sync", "arguments": { "device": "disk0", "name": "snapshot1" } }
<- { "return": { "id": "1", "name": "snapshot0", "vm-state-size": 0, "date-sec": 1000012, "date-nsec": 10, "vm-clock-sec": 100, vm-clock-nsec": 20, "icount": 220414 } }
Отладка.
Query-vcpu-reg.
Запрос значения регистра vCPU.
Аргументы:
addr
— адрес регистра.vcpu
— идентификатор vCPU.Примечания:
— виртуальная машина приостанавливается во время запроса, а затем возобновляется. — сейчас поддерживается только aarch64.
Пример:
-> {"execute": "query-vcpu-reg", "arguments": {"addr": "603000000013df1a", "vcpu": 0}}
<- {"return": "348531C5"}
Query-mem-gpa.
Запрос значения гостевого физического адреса.
Аргумент:
gpa
— гостевой физический адрес.Пример:
-> {"execute": "query-mem-gpa", "arguments": {"gpa": "13c4d1d00" }}
<- {"return": "B9000001"}
Query-display-image.
Запрос образа дисплея virtiogpu. В настоящее время поддерживается только stdvm и gtk.
Пример:
-> { "execute": "query-display-image" }
<- { "return": { "fileDir": "/tmp/stratovirt-images", "isSuccess": true } }
Trace-get-state.
Запрос состояния трассировки.
Аргументы:
name
— шаблон для сопоставления имени трассировки.Пример:
-> { "execute": "trace-get-state", "arguments": { "name": "trace_name" } }
<- { "return": [ { "name": "trace_name", "state": "disabled" } ] }
Trace-set-state.
Установка состояния трассировки.
Аргументы:
name
— шаблон для сопоставления имени трассировки.enable
— включение или отключение трассировки.Пример:
-> { "execute": "trace-set-state", "arguments": { "name": "trace_name","enable": true } }
<- { "return": {} }
Прочее.
Getfd.
Получение файлового дескриптора через SCM.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )