База знаний VMmanager
Режим фокусировки

Что делать, если у ВМ статус "Недоступна"?

В статье используются следующие термины:

Проблема

Виртуальная машина (ВМ) имеет статус «Недоступна». Как правило, проблема присутствует на узле кластера, где расположена проблемная ВМ, и связана:

  • с некорректной работой службы libvirtd;
  • с проблемами сертификата.

Диагностика

Чтобы подтвердить причину проблемы, выполните следующие проверки. Наличие хотя бы одного признака подтверждает проблему:

  1. На узле кластера, где расположена ВМ в статусе «Недоступна», проверьте статус службы libvirtd:
    1. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
    2. Выполните команду:
      systemctl status libvirtd

      Признак проблемы: служба остановлена или в выводе есть ошибки, связанные с файлами сокетов.

      Пример вывода с проблемой
      ● libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
       Active: failed (Result: exit-code) since Wed 2026-02-25 05:06:57 CET; 7h ago
       Docs: man:libvirtd(8)
  2. На сервере с платформой проверьте лог vmwatch.log:
    1. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
    2. Выполните команду:
      docker exec -it vm_back tail -f /var/log/vmwatch.log
      Признак проблемы: присутствуют ошибки libvirtd или записи о проблемах с сертификатом. 
      Пример ошибки подключения к libvirtd
      Connect to libvirt failed: virError(Code=38, Domain=7, Message='unable to connect to server')
      Connection to libvirt not active, reconnect 
      Пример ошибки сертификата
      libvirt: XML-RPC error : authentication failed: Failed to verify peer's certificate

Решение

Некорректная работа libvirtd

Если диагностика указала на проблемы с службой libvirtd, перезапустите сервис:

  1. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Перезапустите службу libvirtd:
    systemctl restart libvirtd
  3. Проверьте статус:
    systemctl status libvirtd
  4. Если перезапуск не помог, выполните перезапуск файлов сокетов:
    systemctl stop libvirtd-ro.socket
    systemctl stop libvirtd-admin.socket
    systemctl stop libvirtd.socket
    systemctl stop libvirtd.service
    systemctl start libvirtd-tls.socket
    systemctl start libvirtd-ro.socket
    systemctl start libvirtd-admin.socket
    systemctl start libvirtd.socket
  5. Убедитесь, что в логе vmwatch.log нет ошибок сертификатов:
    1. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
    2. Выполните команду:
      docker exec -it vm_back tail -f /var/log/vmwatch.log
    3. Если ошибки есть, перевыпустите сертификат на узле по инструкции в разделе Проблемы с сертификатом

Проблемы с сертификатом

Если в логе vmwatch.log присутствует ошибка, связанная с сертификатами, перевыпустите сертификат на узле кластера:

  1. Уточните ID узла кластера с недоступной ВМ:
    1. Перейдите в раздел Узлы → выберите нужный узел → столбец id
    2. Сохраните полученное значение.
  2. Перевыпустите сертификат одним из следующих способов:
    • через API-запрос:
      1. Подключитесь к узлу кластера по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
      2. Выполните API-запрос:
        curl -H 'internal-auth: on' input:1500/vm/v3/node/<node_id>/cert -d '{}'
        Пояснения
    • через Swagger:
      1. В правом меню нажмите значок СервисыSwagger.
      2. В поле Select a definition выберите vm.
      3. Перейдите в раздел Node.
      4. Выберите следующий метод:
        POST /node/{node_id}/cert Updating libvirt certificates on a host
      5. Нажмите Try it out.
      6. Введите ID узла с недоступной ВМ. Получен в п. 1.
      7. Нажмите Execute.

Подробнее см. в статье Использование Swagger.

Перезапуск сервиса vmwatch

Если проблемы с libvirtd и сертификатом отсутствуют, но статус ВМ не обновился, перезапустите сервис vmwatch в контейнере vm_back:

  1. Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
  2. Выполните команду:
    docker exec -it vm_back supervisorctl restart vmwatch