База знаний VMmanager

Как проверить и восстановить работу QEMU Guest Agent?

QEMU Guest Agent — это программа-демон, которая устанавливается на ВМ. QEMU Guest Agent обеспечивает выполнение команд на ВМ и обмен информацией между ВМ и узлом кластера.

VMmanager использует QEMU Guest Agent чтобы изменять сетевые настройки ВМ без перезагрузки. Если QEMU Guest Agent недоступен для платформы в течение пяти минут, VMmanager перезагрузит ВМ для применения настроек.

Чтобы управлять ВМ с ОС CentOS, в QEMU Guest Agent должна быть включена функция guest-exec.

Чтобы избежать незапланированного перезапуска ВМ, вы можете проверить статус QEMU Guest Agent перед изменением настроек. Это можно сделать на ВМ или узле кластера.

Диагностика на ВМ

  1. Подключитесь к ВМ по SSH.
  2. Определите статус QEMU Guest Agent:

    systemctl status qemu-guest-agent

    Примеры ответов:

    QEMU Guest Agent запущен
    ● qemu-guest-agent.service - QEMU Guest Agent
       Loaded: loaded (/usr/lib/systemd/system/qemu-guest-agent.service; enabled; vendor preset: enabled)
       Active: active (running) since Вт 2021-08-10 05:25:54 UTC; 1 weeks 3 days ago
    QEMU Guest Agent остановлен
    ● qemu-guest-agent.service - QEMU Guest Agent
       Loaded: loaded (/usr/lib/systemd/system/qemu-guest-agent.service; enabled; vendor preset: enabled)
       Active: inactive (dead) since Пт 2021-08-20 06:27:16 UTC; 2s ag
    QEMU Guest Agent не установлен
    Unit qemu-guest-agent.service could not be found.

Диагностика на узле кластера

  1. Подключитесь к узлу кластера по SSH.
  2. Определите статус QEMU Guest Agent:

    virsh qemu-agent-command <vm_id>_<vm_name> '{"execute": "guest-info", "arguments": {}}'
    Пояснения к команде

    Если QEMU Guest Agent запущен, вы получите ответ вида:

    Фрагмент ответа в JSON
    {"return":{"version":"2.12.0","supported_commands":[{"enabled":true,"name":"guest-get-osinfo","success-response":true}

    Если QEMU Guest Agent не запущен или остановлен, вы получите ответ вида:

    ошибка: Guest agent is not responding: QEMU guest agent is not connected
  3. Для ВМ с ОС CentOS определите статус функции guest-exec: 

    virsh qemu-agent-command <vm_id>_<vm_name> '{"execute":"guest-info"}' --pretty | grep -B1 "guest-exec"
    Пояснения к команде
    Фрагмент ответа, если функция включена
    "enabled": true,
    "name": "guest-exec",
    Фрагмент ответа, если функция выключена
    "enabled": false,
    "name": "guest-exec",

Диагностика на платформе

Чтобы определить проблему с QEMU Guest Agent, вы можете:

  • при создании ВМ и переустановке ОС следить за логом операций c ВМ: 
    docker exec vm_box tail -f /var/log/host.log
  • при попытке установки или восстановления QEMU Guest Agent на ВМ следить за логом операций c QEMU Guest Agent: 
    docker exec vm_box tail -f /var/log/host_guest_agent.log

Восстановление работы

Если QEMU Guest Agent не установлен

  1. Подключитесь к ВМ по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Если на узле кластера установлена ОС Astra Linux Special Edition 1.8.1, добавьте репозитории frozen в файл /etc/apt/source.list:  
    Если на ВМ установлена ОС Astra Linux Special Edition 1.8.1
    Если на ВМ установлена ОС Astra Linux Special Edition 1.7.5
    Если на ВМ установлена ОС Astra Linux Special Edition 1.7.4
  3. Установите QEMU Guest Agent:

    ОС AlmaLinux, CentOS
    yum install qemu-guest-agent
    ОС Debian, Ubuntu, Astra Linux
    apt install qemu-guest-agent
  4. Добавьте QEMU Guest Agent в автозагрузку:

    systemctl enable --now qemu-guest-agent
  5. Проверьте статус QEMU Guest Agent:

    systemctl status qemu-guest-agent
  6. Проверьте статус службы SELinux:

    sestatus

    Если статус отличается от disable:

    1. Отключите SELinux. Для этого замените в файле /etc/selinux/config строку

      SELINUX=enforcing

      на

      SELINUX=disabled
    2. Перезагрузите ВМ.
  7. Если в файле /etc/sysconfig/qemu-ga есть строка вида

    BLACKLIST_RPC=guest-file-open,guest-file-close,guest-file-read,guest-file-write,guest-file-seek,guest-file-flush,guest-exec,guest-exec-status


    1. Закомментируйте или удалите эту строку.
    2. Перезапустите QEMU Guest Agent:

      systemctl restart qemu-guest-agent

Если QEMU Guest Agent остановлен

  1. Подключитесь к ВМ по SSH.
  2. Запустите QEMU Guest Agent:

    systemctl start qemu-guest-agent

Если функция guest-exec отключена

  1. Подключитесь к ВМ по SSH.
  2. Выполните команду: 

    sed -i '/BLACKLIST_RPC=/cBLACKLIST_RPC=' /etc/sysconfig/qemu-ga
  3. Перезапустите QEMU Guest Agent: 

    systemctl restart qemu-guest-agent

Работа QEMU Guest Agent в ОС Windows

Установка

  1. Чтобы подготовить ВМ к установке драйверов virtio, создайте диск размером 1 ГБ с типом подключения virtio и подключите его к ВМ: раздел Виртуальные машины → выберите ВМ → кнопка Параметры → раздел Виртуальные диски Подключить еще дискСоздать диск и подключить → выберите Размер 1 ГБ и Тип подключения virtio → кнопка Подключить диск.
  2. Скачайте и установите на ВМ драйверы Virtio
  3. Скачайте и установите на ВМ ПО QEMU Guest Agent.

Диагностика

Запустите диспетчер управления службами services.msc и проверьте, что в списке запущенных служб есть QEMU Guest Agent. Если служба остановлена, запустите её. Если такой службы нет в списке, установите ПО QEMU Guest Agent.

Пример отображения статуса QEMU Guest Agent в диспетчере


Автоматическая установка QEMU Guest Agent

Если VMmanager обнаружит проблемы с работой QEMU Guest Agent на ВМ, в статусе ВМ появится сообщение Проблема с Guest Agent. Чтобы восстановить работу QEMU Guest Agent автоматически, нажмите на сообщение Проблема с Guest Agent → кнопка Установить GA и перезапустить VM.

Автоматическая установка QEMU Guest Agent не поддерживается для гостевых ОС Astra Linux. 

При восстановлении QEMU Guest Agent в ОС семейства Windows ВМ может быть неактивной в течение продолжительного времени. В некоторых случаях период восстановления может быть более 30 минут. Это происходит из-за того, что при восстановлении платформа создаёт резервную копию диска ВМ.