Прекращение работы ВМ с ошибкой "Lost connection with qemu process"

1. Описание проблемы:

Виртуальная машина внезапно прекратила работу. В лог-файлах содержатся следующие события:

  1. На менеджере управления в лог-файле /var/log/ovirt-engine/engine.log ошибка Lost connection with qemu process

  2. На гипервизоре в лог-файле /var/log/vdsm/vdsm.log службы vdsmd ошибка Changed state to Down: Lost connection with qemu process

2. Диагностика

Одна из причин такой ошибки — остановка машины OOM-киллером в случае критической нехватки RAM и SWAP. Чтобы убедиться, нужно проверить:

  1. На гипервизоре общесистемный лог-файл /var/log/messages:

    • если был вызван OOM-киллер, в логах должна быть запись, похожая на CPU 6/KVM invoked oom-killer

    • в случае завершения процесса OOM-киллером, должна присутствовать запись

      kernel: Out of memory: Kill process 82664 (qemu-kvm) score 353 or sacrifice child
  2. На гипервизоре лог-файл /var/log/audit, в котором должна присутствовать запись, похожая на virt=kvm op=stop reason=failed с указанием имени виртуальной машины.

    Чтобы убедиться, что остановленный процесс соответствует PID гостевой виртуальной машины, необходимо в лог-файле /var/log/audit найти запись о запуске ВМ, запись должна иметь вид

    virt=kvm op=start reason=booted vm="VirtualMachineName" uuid=579dd002-a81d-48b0-8281-6b94fa94e2d2 vm-pid=82664

    Найти запись можно по имени ВМ или PID, который был остановлен OOM-киллером

3. Как избежать

  1. Измените оптимизацию памяти кластера. Для этого необходимо перейти в Ресурсы  Кластеры, выбрать целевой кластер и нажать кнопку Изменить. На вкладке Оптимизация необходимо изменить параметр Оптимизация памяти, например, уменьшив разрешённое перераспределение физической памяти с 200% до 150%.

  2. Увеличьте файл-подкачки на хосте до объёма, который сможет удовлетворить текущим запросам кластера. Если настройка Оптимизация памяти выставлена в 200%, то SWAP должен быть как минимум вдвое объёмнее общей физической памяти хостов.

  3. Уменьшите максимум памяти у виртуальных машин, чтобы динамическое расширение памяти (memory ballooning) не заняло весь объём физической памяти и SWAP.