Проблема
Фактически виртуальная машина (ВМ) успешно перенесена на целевой узел кластера, но в платформе отображается на исходном узле.
При этом наблюдаются следующие симптомы:
- одно из следующих состояний ВМ:
- ВМ имеет статус Активна, при этом задача по миграции имеет статус Ошибка, находится в зависшем состоянии или отсутствует;
- ВМ зависла в статусе Мигрирует, при этом задача по миграции завершена и имеет статус Успешно;
- ВМ имеет статус Остановлена, при этом задача по миграции имеет статус Выполняется.
- команда
virsh list --all|grep <Имя_ВМ>на исходном узле не отображает целевую ВМ; - команда
virsh list --all|grep <Имя_ВМ>на целевом узле показывает ВМ в статусеrunning.

Причина
Платформа не получила подтверждения об успешном завершении миграции из-за сбоя сети или ошибки при обработке запроса. В результате фактическое состояние ВМ расходится с состоянием в БД платформы.
Решение
Чтобы исправить несоответствие между фактическим состоянием ВМ и состоянием в БД платформы:
- Определите ID задачи миграции:
- В правом меню нажмите Список задач
. - Выберите задачу по миграции для целевой ВМ.
- Проверьте значение в столбце id.
- В правом меню нажмите Список задач
- Подключитесь к серверу с платформой по SSH. Подробнее о подключении по SSH см. в статье Настройка рабочего места.
- Подключитесь к БД:
Вмешательство в базу данных предполагает потенциальный риск. Мы не рекомендуем вносить ручные правки в базу, поскольку это может нарушить корректную работу платформы.
Перед внесением изменений в БД создайте резервную копию платформы.
В связи с поэтапным переходом платформы на использование СУБД PostgreSQL, разные экземпляры VMmanager могут использовать разные СУБД.
Платформа использует PostgreSQL:
- во всех новых установках, начиная с версии 2026.03.1;
- в установках VMmanager Infrastructure на сервере с ОС Astra Linux, начиная с версии VMmanager 2023.06.1.
В остальных случаях платформа использует MySQL. Смена СУБД при обновлении платформы не выполняется.
Чтобы определить тип СУБД, выполните на сервере с платформой команду:
docker ps --filter name=pgsqlПример ответаCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3213c5dc94d0 postgres:12 "docker-entrypoint.s…" 5 days ago Up 4 days 5432/tcp pgsqlЕсли вывод команды содержит информацию о контейнере, платформа использует PostgreSQL, если ответ пустой — MySQL.
MySQLdocker exec -it mysql bash -c "mysql isp -p\$MYSQL_ROOT_PASSWORD"PostgreSQLdocker exec -it pgsql bash -c "psql -d isp" - Получите
consul_idдля проблемной задачи:
SELECT consul_id FROM vm_task_log WHERE id = [id_задачи];Пояснения:
[id_задачи]— значение получено в п. 1.
Пример выводаSELECT consul_id FROM vm_task_log WHERE id = 2338; +-----------+ | consul_id | +-----------+ | 16980 | +-----------+ - Получите
callback_paramsдля проблемной задачи. Это параметры, которые система должна была отправить при успешном завершении миграции:
SELECT callback_params FROM taskmgr_task WHERE id = [consul_id];Пример выводаSELECT callback_params FROM taskmgr_task WHERE id = 16980 *************************** 1. row *************************** callback_params: {"disks": [{"id": 64466, "storage": 34}], "host_id": 66687, "node_id": 397, "is_dummy": false, "interfaces": [{"id": 66689, "name": "eth0", "is_vxlan": false, "mac_address": "52:54:00:11:C1:0F", "node_interface": 337, "is_main_network": true, "node_interface_name": "vmbr0"}], "dst_node_id": 375}Пояснения:
[consul_id]— значение получено в п. 4.
- Выйдите из БД:
exit - В контейнере
vm_boxвыполните API-запрос на ручное завершение задачи:
curl -X POST -H 'Instance-ID:1' -H 'internal-auth:on' -o- -D- \ http://localhost:1500/vm/v3/task/[consul_id]/success?name=host_migrate \ -d '{"output":{"content":"","type":"text"},"params":[callback_params]}'Пояснения:
[consul_id]— значение получено в п. 4;[callback_params]— значение получено в п.5.
Пример запроса для consul_id = 16980curl -X POST -H 'Instance-ID:1' -H 'internal-auth:on' -o- -D- \ http://localhost:1500/vm/v3/task/16980/success?name=host_migrate \ -d '{"output":{"content":"","type":"text"},"params":{"disks": [{"id": 64466, "storage": 34}], "host_id": 66687, "node_id": 397, "is_dummy": false, "interfaces": [{"id": 66689, "name": "eth0", "is_vxlan": false, "mac_address": "52:54:00:11:C1:0F", "node_interface": 337, "is_main_network": true, "node_interface_name": "vmbr0"}], "dst_node_id": 375}}'Пример успешного ответаHTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Content-Length: 4 Connection: keep-alive - Проверьте в веб-интерфейсе, что ВМ находится на целевом узле.
Связанные статьи: