SystemdDoctor
мешает работе виртуализация сокеты

libvirtd: служба выключена, но виртуальные машины управляются

Современные сборки службы управления виртуализацией работают через активацию по сокету: сама служба выключена, а запускается по обращению. Попытка включить её обычным способом даёт неверную картину, а отключение сокетов ломает управление машинами.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Включать нужно сокеты, а не службу

    Обращение приходит на сокет, systemd запускает службу. Служба в выключенном состоянии — это норма такой схемы.

  2. Машины с автозапуском не поднимаются после перезагрузки

    При активации по сокету служба не запускается сама, а значит и машины с автозапуском не поднимаются, пока никто не обратится.

  3. Старые и новые сокеты включены одновременно

    В новых сборках службу разделили на отдельные драйверы со своими сокетами. Смешение старой и новой схемы даёт отказы подключения.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Состояние службы и её сокета.

systemctl is-active libvirtd libvirtd.socket 2>/dev/null

Какие unit этого семейства есть и что включено.

systemctl list-unit-files "libvirt*" --no-legend

Отвечает ли управление виртуализацией на запросы.

sudo virsh list --all 2>/dev/null

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Включать нужно сокеты, а не службу
Почему происходит
Обращение приходит на сокет, systemd запускает службу. Служба в выключенном состоянии — это норма такой схемы.
Как проверить
Посмотрите состояние службы и её сокетов.
systemctl is-active libvirtd libvirtd.socket libvirtd-ro.socket 2>/dev/null
systemctl list-unit-files "libvirt*" --no-legend | head
Как исправить
Включайте сокеты, а не службу. Автозапуск самой службы при этой схеме не нужен и мешает.
sudo systemctl enable --now libvirtd.socket libvirtd-ro.socket
2. Машины с автозапуском не поднимаются после перезагрузки
Почему происходит
При активации по сокету служба не запускается сама, а значит и машины с автозапуском не поднимаются, пока никто не обратится.
Как проверить
Посмотрите, какие машины помечены автозапуском.
sudo virsh list --all --autostart 2>/dev/null; systemctl is-enabled libvirtd 2>/dev/null
Как исправить
Включите автозапуск самой службы в дополнение к сокетам, если машины должны подниматься без обращения извне.
3. Старые и новые сокеты включены одновременно
Почему происходит
В новых сборках службу разделили на отдельные драйверы со своими сокетами. Смешение старой и новой схемы даёт отказы подключения.
Как проверить
Посмотрите все включённые сокеты этого семейства.
systemctl list-unit-files "virt*.socket" "libvirt*.socket" --no-legend 2>/dev/null | head -20
Как исправить
Выберите одну схему: монолитную службу или раздельные драйверы. Держать включённым и то и другое нельзя.

Пример вывода

Служба выключена, но управление работает через сокет. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

$ systemctl is-active libvirtd
inactive

$ systemctl is-active libvirtd.socket
active

$ sudo virsh list --all
 Id   Name   State
 1    web    running

Связанные ошибки

Источники

  • systemd.socket(5)
    Активация служб по обращению на сокет.
    официальная документация, systemd 255
    сверено 15 сентября 2026
  • Документация libvirt: режимы запуска службы документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Проверено на systemd 255: служба неактивна, сокет активен, управление отвечает.
    собственная проверка, systemd 255
    сверено 15 сентября 2026