Виртуальная машина может работать стабильно, но при попытке корректно ее выключить гипервизор просто «обрывает питание»? Или же снапшоты создаются без гарантии целостности данных, а получить информацию о состоянии гостевой системы без SSH невозможно. Такие ситуации чаще всего связаны с отсутствием QEMU-агента.
Этот небольшой сервис обеспечивает корректное взаимодействие между хостом и виртуальной машиной. Ниже разберем, как работает QEMU-агент, какие задачи решает и как правильно его установить в Linux и Windows.
В коммерческой эксплуатации эти задачи ложатся на плечи провайдера. Платформа Рег.облако предлагает надежные облачные решения для бизнеса любого масштаба, а ее технологическая база включает полный спектр услуг виртуализации на базе открытого ПО.
Что такое QEMU-агент и зачем он нужен
QEMU-агент (QEMU Guest Agent) — служебный процесс внутри гостевой ОС, обеспечивающий связь с гипервизором.
Он позволяет отправлять команды внутрь виртуальной машины (ВМ) без подключения к ней по SSH или VNC. Без установленного агента гипервизор может только имитировать нажатие кнопки питания — принудительно отключать виртуальную машину, что чревато потерей несохраненных данных и повреждением файловой системы.
Сценарии использования
QEMU-агент решает несколько практических задач, каждая из которых закрывает конкретную потребность при администрировании:
- корректное выключение и перезагрузка. Хост посылает агенту команду, и тот инициирует штатное завершение работы (shutdown -h now) с сохранением всех данных. Это безопаснее, чем принудительный «обрыв питания»;
- создание консистентных снапшотов. Перед созданием снимка агент замораживает файловую систему (fsfreeze): сбрасывает кэши на диск и блокирует запись. Это гарантирует целостность данных в бэкапе — самая важная функция для резервного копирования;
- сброс паролей и управление доступом. При утере доступа к ВМ можно отдать команду агенту на изменение пароля администратора, даже без подключения к консоли или по SSH;
- сбор информации о системе. Гипервизор может напрямую запросить у агента IP-адреса, имя хоста, версию ОС и список установленных приложений. Эти данные автоматически отображаются в панели управления;
- другие управляющие операции. Агент может выполнять произвольные скрипты по команде с хоста и синхронизировать состояние ВМ с панелью провайдера.

Принцип работы агента
Связь организована через специальный последовательный канал virtio-serial. Внутри Linux это выглядит как устройство:
|
1 |
/dev/virtio-ports/org.qemu.guest_agent.0 |
Гипервизор отправляет JSON-запрос в этот канал, агент принимает его, выполняет действие внутри гостя и возвращает ответ. Взаимодействие не зависит от сетевых настроек, поэтому управление возможно даже при неработающей сети или настроенном файерволе.
Предварительные шаги для начала работы
Перед тем как устанавливать агент QEMU, убедитесь, что:
- Используется гипервизор QEMU/KVM (или производные вроде Proxmox, oVirt).
- В конфигурации ВМ добавлен virtio-канал. В конфигурации libvirt это выглядит так:
|
1 2 3 4 |
<channel type='unix'> <source mode='bind'/> <target type='virtio' name='org.qemu.guest_agent.0'/> </channel> |
- Есть доступ к консоли или по SSH.
- Операционная система обновлена.
Важно: без включенного канала в конфигурации виртуальной машины сервис не сможет взаимодействовать с хостом, даже если будет установлен внутри.

Проверка наличия установленного QEMU-агента
В облачных образах пакет часто уже предустановлен. Для проверки выполните внутри ВМ:
|
1 |
sudo systemctl status qemu-guest-agent |
Если статус — active (running), значит QEMU-агент уже работает.
Дополнительно проверьте пакет:
|
1 2 |
# для Debian/Ubuntu dpkg -l | grep qemu-guest-agent |
|
1 2 |
# для CentOS/RHEL 8+ (и других на dnf) dnf list installed | grep qemu-guest-agent # проверка через dnf (можно также rpm -q qemu-guest-agent) |

Установка QEMU-агента
После проверки наличия агента можно приступить к его установке: ниже приведены инструкции для разных операционных систем и дистрибутивов.
Debian / Ubuntu
|
1 2 3 |
sudo apt update sudo apt install qemu-guest-agent -y sudo systemctl enable --now qemu-guest-agent |
RHEL 8/9, CentOS Stream 8/9, AlmaLinux 8/9, Rocky Linux 8/9, Fedora
|
1 2 |
sudo dnf install qemu-guest-agent -y sudo systemctl enable --now qemu-guest-agent |
Windows
- Скачайте установщик с официального зеркала Fedora People (
qemu-ga-x86_64.msiилиqemu-ga-i386.msiдля 64-битных или 32-битных систем соответственно). - Запустите скачанный MSI-файл от имени администратора и следуйте инструкциям установщика.
- После установки служба QEMU Guest Agent появится в оснастке
services.msc. Убедитесь, что она запущена, а тип запуска — «Автоматически».

Перезапуск QEMU-агента
Для Linux-гостей
|
1 |
sudo systemctl restart qemu-guest-agent |
Для Windows-гостей
Через services.msc или PowerShell:
|
1 |
Restart-Service -Name "QEMU Guest Agent" |
Важно: не перезапускайте агент во время создания снапшотов или выполнения операций fsfreeze. Это может привести к «замороженному» состоянию диска, так как хост будет ждать ответа от агента, а агент перезапустится и команда «зависнет».
Проверка связи со стороны хоста
Если агент внутри установлен и запущен, но панель управления или команды с хоста не работают, проблему нужно искать на стороне гипервизора. Проверить доступность агента можно командой virsh (выполняется на хосте):
|
1 |
virsh qemu-agent-command <имя-виртуальной-машины> '{"execute":"guest-info"}' --pretty |
Если команда вернет JSON с информацией о версии агента и поддерживаемых командах — связь есть, ищите проблему в панели управления.

Типичные проблемы и решения
Сервис не запускается автоматически после установки в Ubuntu 24.04+
В отдельных случаях (например, при использовании нестандартных сборок) systemd-юнит может не иметь секции [Install]. Для решения этой проблемы нужно отредактировать файл юнита (/lib/systemd/system/qemu-guest-agent.service) и в конец добавить строку:
|
1 2 |
[Install] WantedBy=multi-user.target |
Затем выполнить:
|
1 |
sudo systemctl enable qemu-guest-agent |
Это поведение не является массовым для официальных пакетов Ubuntu и встречается редко.
Агент установлен, но не отвечает на команды (RHEL/CentOS/AlmaLinux)
Проверьте журнал ошибок внутри гостя:
|
1 |
journalctl -u qemu-guest-agent -f |
При использовании SELinux временно можно перевести его в разрешающий режим для диагностики (команда на гостевой ВМ):
|
1 |
sudo setenforce 0 |
Важно: это допустимо только для диагностики, а не как постоянное решение. Если проблема в SELinux, настройте корректные правила или установите соответствующий контекст (virt_qemu_guest_agent_t).
Гипервизор не видит агента
Проверьте наличие virtio-канала в конфигурации ВМ (на хосте). В определении домена libvirt должна быть секция, описанная в разделе «Предварительные шаги».
Конфликт с вендорными агентами
На платформах с проприетарными решениями (например, VMware Tools на конвертированных машинах) их агенты могут конфликтовать с открытым qemu-guest-agent. В таких случаях стандартный агент отключают и маскируют, либо, наоборот, удаляют проприетарный.
Рекомендации по эксплуатации
Чтобы агент работал стабильно и безопасно:
- включайте автозапуск службы;
- обновляйте пакет вместе с системой (apt upgrade, yum update, dnf update);
- настройте SELinux или AppArmor, если они используются, не отключайте их без необходимости;
- ограничьте доступные RPC-команды, если есть риск безопасности, через файлы конфигурации (например, --block-rpcs в параметрах демона);
- регулярно проверяйте логи на наличие ошибок;
- синхронизируйте время внутри гостя (NTP/Chrony), так как это критически важно для корректной работы многих сценариев, включая timestamps (метки времени) в логах и работу с сертификатами;
- не отключайте сервис без необходимости.
Правильно настроенный QEMU-агент повышает надежность виртуального сервера и упрощает централизованное управление.
Итоги
Агент QEMU обеспечивает безопасное взаимодействие между гипервизором и гостевой системой, позволяет выполнять управляющие действия без подключения по сети и повышает устойчивость сервисов. Установка занимает несколько минут, но значительно расширяет возможности администрирования.
При создании или настройке нового сервера всегда проверяйте наличие активного агента — это избавит от множества проблем в будущем.

FAQ
Как проверить, что QEMU-агент запущен?
В Linux выполните systemctl status qemu-guest-agent. В Windows проверьте службу «QEMU Guest Agent» через services.msc.
Что делать при ошибке запуска?
Изучите журнал через journalctl -u qemu-guest-agent (Linux) или Просмотр событий Windows. Проверьте наличие virtio-канала в конфигурации ВМ. Для RHEL-систем временно можно перевести SELinux в пермиссивный режим для диагностики.
Как обновить QEMU-агента?
В Linux: apt upgrade qemu-guest-agent или yum/dnf update qemu-guest-agent.
В Windows: скачайте свежий установщик virtio-win-guest-tools.exe и запустите поверх существующей установки либо обновите через MSI-пакет.
Как проверить видимость агента со стороны хоста?
Выполните на хосте: virsh qemu-agent-command '{"execute":"guest-info"}'. Если команда вернет ошибку, значит, соединения нет.
Какие функции самые важные?
Корректное выключение, заморозка файловой системы перед снапшотами и получение сетевых параметров гостевой ОС.
Влияет ли агент на производительность?
Нет. Агент потребляет минимальные ресурсы и активируется только при получении запроса от хоста. В простое он не нагружает систему.
Поддерживаются ли разные дистрибутивы Linux?
Да, пакет доступен в большинстве популярных дистрибутивов Linux. Отличается только команда установки через пакетный менеджер.