Назад | Перейти на главную страницу

После destroy_domain виртуальная машина XenServer не может мигрировать в пуле

У меня есть три сервера XenServer 6.1 в пуле. HA обычно используется, но в настоящее время отключен для этой операции.

Недавно мне пришлось принудительно завершить работу виртуальной машины, уничтожив домен с помощью следующих инструкций: http://support.citrix.com/article/CTX131421

За исключением того, что в моей командной строке, похоже, не было команды destroy_domain. Другая статья указала мне на полный путь в / opt / xensource / debug / xenops destroy_domain -domid x (http://gimpland.org/now/2013/01/citrix-xenserver-how-to-force-shutdown-virtual-machines/)

Это сработало, и я смог без проблем запустить виртуальную машину. Однако я обнаружил, что пытаюсь перенести виртуальную машину на любой другой сервер в пуле. При попытке перенести виртуальную машину на другой хост в пуле через XenCenter примерно через 30-40 секунд возникает следующая ошибка:

    Migrating VM 'Cleanup 7' from XenBlade5 to XenBlade 6: 
    Error: Internal error: file "xapi_xenops.ml", line 1740, characters 3-9: Assertion Failed.

Теперь виртуальная машина приостановлена. Попытка возобновить его (все еще на исходном сервере, поскольку он не может переместиться) приводит к следующей ошибке в журнале событий сервера: не было доступных серверов для выполнения указанной операции.

Кроме того, XenCenter открывает диалоговое окно с сообщением «Ошибка при запуске виртуальной машины» с сообщением об ошибке для каждого сервера в пуле: «Объект удален. VDI: OpaqueRef: NULL. Сервер не возобновит работу.

Если я принудительно выключу виртуальную машину, я могу перезапустить ее. К сожалению, виртуальная машина все еще не может быть перенесена и выдает те же ошибки, что и выше.

Я обнаружил эту проблему на одном из наших производственных серверов виртуальных машин, но эти тесты проводятся на одноразовой виртуальной машине Windows 7 Enterprise. Производственная виртуальная машина - это CentOS, поэтому я не думаю, что у меня есть какие-либо особенности операционной системы. Похоже, проблема с командой destroy_domain, которую я ввел выше.

Другие виртуальные машины, которые не были выключены с помощью destroy_domain, могут свободно перемещаться на этот сервер и с него.

Я не ветеран XenServer, поэтому приветствую любую помощь, исправление или запрос разъяснений. Заранее огромное спасибо за любую помощь!

Из https://github.com/xapi-project/xen-api/blob/fe28d3e3254b1c9928dfb99d75e94e949504dcf7/ocaml/xapi/xapi_xenops.ml, который, похоже, является источником v6.1 E017, имеет строку # 1739:

(* XXX: if the guest crashed or shutdown immediately then it may be offline now *)
assert (Db.VM.get_power_state ~__context ~self = (if paused then `Paused else `Running))

Я не использую OCAML и не являюсь экспертом по XenServer, но это утверждение похоже на метод под названием start и, похоже, он гарантирует, что виртуальная машина запущена, проверяя состояние питания из внутренней базы данных. Я предполагаю, что из-за того, что вы вынудили виртуальную машину выключиться, она не обновила базу данных должным образом.

Возможно, команда из вашей второй ссылки очистит базу данных:

xe vm-reset-powerstate  uuid=<UUID of VM> force=true

В противном случае вам придется просматривать журналы, чтобы найти, какие операции не удались до этого, возможно, в /var/log/xensource.log?