Ошибка Invalid Unknown у виртуальной машины Vmware ESXI

Ошибка Invalid Unknown у виртуальной машины Vmware ESXI

Vmware ESXIДобрый день! Уважаемые читатели и гости блога pyatilistnik.org. В прошлый раз мы с вами разбирали две проблемные ситуации с виртуальными машинами Vmware ESXI, а именно, были найдены пути решения ошибок, при которых виртуалки имели статусы: Unknown VM (Inaccessible) и orphaned, unknown vm. Добавлю в нашу коллекцию статусов, еще один и звучит он вот так Invalid (Unknown). Его вы можете увидеть, как и на отдельном хосте, так и в vCenter, с работающей виртуалкой, так и с удаленной. Ну, что решим эту задачку.

Что означает статус Invalid (Unknown) на VMWare ESXi

Вообще ошибка Invalid (Unknown), очень частая проблема у начинающих системных администраторов и она может появляться по ряду причин:

  • Самая распространенная ситуация, это когда была не правильно удалена виртуальная машина, и после этого, от нее на осталась конфигурация в vSphere или ESXI.
  • Менее распространенная, это повреждение конфигурационного файла vmx
  • Из-за VMotion или DRS, когда перенеслись виртуальные диски машины, а файл конфигурации остался на другом датасторе.
  • После сбоя узла VMware HA или после выхода из режима обслуживания ESX-хоста
  • Сервер vCenter перезапускается во время миграции
  • Перезагрузка хоста в течение 1 часа после перемещения или включения виртуальных машин
  • База данных vCenter заполнена

Сама виртуальная машина, будет прозрачной.

Invalid (Unknown)-01

Она может легко работать или быть выключенной. Самое печальное, что вы не сможете ее редактировать, перезагрузить или выключить, средствами Vmware.

Invalid (Unknown)-02

Почти все доступные ранее пункты, будут не активны. Ниже мы рассмотрим ситуации, где действия будут свои.

Invalid (Unknown)-03

Удаление старой виртуальной машины со статусом Invalid (Unknown)

Если вы обнаружили, что у вас есть старые записи, от не существующей виртуальной машины, по сути мусорная запись и вы хотели бы ее удалить, в виду наведения порядка, то в 99% случаев достаточно выполнить редактирование конфигурационного файла vmInventory.xml. Для этого нам потребуется включить ssh доступ на ESXI хост.

Invalid (Unknown)-04

Далее подключаетесь по ssh к ESXI хосту, например, Putty или mRemoteNG. Далее нас интересует файл /etc/vmware/hostd/vmInventory.xml, но перед тем как его отредактировать, я вам советую сделать его резервную копию, например, подключившись по ssh через WinSCP  и скопировать его копию, себе на компьютер и во вторых вам нужно получить идентификационный номер (ID), вашей виртуальной машины. Для этого выполните команду

vim-cmd vmsvc/getallvms | grep invalid

В итоге вам будет показан список всех виртуалок, имеющих статус Invalid (Unknown), будет что-то вроде такого:

Skipping invalid VM '60'
Skipping invalid VM '61'
Skipping invalid VM '71'
Skipping invalid VM '72'
Skipping invalid VM '80'
Skipping invalid VM '83'
Skipping invalid VM '89'
Skipping invalid VM '97'

Удалить такую виртуальную машину, можно двумя методами.

  1. Выполнив команду vim-cmd /vmsvc/unregister 97 (97 это номер Skipping invalid VM)
  2. Метод, это удалить информацию из конфигурационного файла /etc/vmware/hostd/vmInventory.xml. В WinSCP открываете его текстовым редактором и находите запись

<ConfigRoot>
<ConfigEntry id='27'>
<objID>97</objID>

редактирование vmInventory

Так же вы можете все выполнить и без визуального редактора, прямо из окна консоли, для этого выполните команды:

cp vmInventory.xml vmInventory.xml.bak
vi vmInventory.xml

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

services.sh restart

Ремонт работающей виртуальной машины со статусом Invalid (Unknown)

В ситуации, когда виртуалка работает и хотелось бы вернуть возможность ее редактировать и взаимодействовать из самого ESXI, вы можете выполнить ряд действий, которые устранят статус Invalid (Unknown). Во первых, вы можете попробовать выполнить из консоли ssh, такие команды:

vim-cmd vmsvc/reload 97 (97 Это ID, мы его получили выше), после этого минуты через две, обновите интерфейс в вашем ESXI клиенте, чтобы проверить статус машины

Если новая перерегистрация не помогла, то делаем вот что, тушим по возможности виртуальную машину из самой ОС. Далее, щелкаем по ней правым кликом и удаляем ее из инвентории. В vCenter 6.5 это выглядит так, "All Virtual infrastructure Actions - More Custom Atrtributes - Remove From Inventory".

Remove From Inventory

В ESXI 5.5, это выглядит вот так.

Remove From Inventory-2

Если виртуалка работает и нет возможности ее выключить, перезагружаем ESXI хост. После чего создаем новую виртуальную машину. На этапе "Customize Hardware", где нужно указывать размер ваших ресурсов, удалите стандартно созданный диск, и нажмите кнопку Add. Выберите пункт "Существующий виртуальный диск (Existing Hard Disk).

Invalid (Unknown)-06

И добавьте все ваши существующие диски, от прежней виртуальной машины. Запустите ее и проверьте, что все работает.

Invalid (Unknown)-07

В ESXI 5.5, это выглядит так же, там нужно выбрать "Use an existing virtual disk".

Use an existing virtual disk

Как только вы удостоверились, что все в порядке, осталось еще выполнить миграцию этих дисков в папку с виртуальной машиной, чтобы все было в одном месте. Для этого два пути, тупое копирование файлов и заново передобавлять их из конфигурации мастера или же сделать Storage VMotion.

Storage VMotion

Статус Invalid (Unknown) после потери связи с VMFS хранилищем

То же, очень частая ситуация, когда у вас по ряду причин может отвалиться ваше дисковое хранилище, например ISCSI. Когда доступ восстановился, то виртуалка вполне может иметь статус Invalid (Unknown), в таком случае удалите ее из инвентори (Remove From Inventory).  Затем найдите на датасторе вашу виртуалку, щелкните правым кликом по конфигурационному файлу, и зарегистрируйте ее заново (Register VM). Пробуем ее включать.

Register VM

Надеюсь, что данная статья оказалась вам полезной и вы устранили свою проблему. С вами был Иван Семин, автор и создатель портала Pyatilistnik.org.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *