Ошибка Invalid Unknown у виртуальной машины 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 заполнена
Сама виртуальная машина, будет прозрачной.
Она может легко работать или быть выключенной. Самое печальное, что вы не сможете ее редактировать, перезагрузить или выключить, средствами Vmware.
Почти все доступные ранее пункты, будут не активны. Ниже мы рассмотрим ситуации, где действия будут свои.
Удаление старой виртуальной машины со статусом Invalid (Unknown)
Если вы обнаружили, что у вас есть старые записи, от не существующей виртуальной машины, по сути мусорная запись и вы хотели бы ее удалить, в виду наведения порядка, то в 99% случаев достаточно выполнить редактирование конфигурационного файла vmInventory.xml. Для этого нам потребуется включить ssh доступ на ESXI хост.
Далее подключаетесь по ssh к ESXI хосту, например, Putty или mRemoteNG. Далее нас интересует файл /etc/vmware/hostd/vmInventory.xml, но перед тем как его отредактировать, я вам советую сделать его резервную копию, например, подключившись по ssh через WinSCP и скопировать его копию, себе на компьютер и во вторых вам нужно получить идентификационный номер (ID), вашей виртуальной машины. Для этого выполните команду
В итоге вам будет показан список всех виртуалок, имеющих статус Invalid (Unknown), будет что-то вроде такого:
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'
Удалить такую виртуальную машину, можно двумя методами.
- Выполнив команду vim-cmd /vmsvc/unregister 97 (97 это номер Skipping invalid VM)
- Метод, это удалить информацию из конфигурационного файла /etc/vmware/hostd/vmInventory.xml. В WinSCP открываете его текстовым редактором и находите запись
<ConfigEntry id='27'>
<objID>97</objID>
Так же вы можете все выполнить и без визуального редактора, прямо из окна консоли, для этого выполните команды:
vi vmInventory.xml
Как только все отредактировали, то вам необходимо перезапустить службы на хосте, с помощью команды:
Ремонт работающей виртуальной машины со статусом Invalid (Unknown)
В ситуации, когда виртуалка работает и хотелось бы вернуть возможность ее редактировать и взаимодействовать из самого ESXI, вы можете выполнить ряд действий, которые устранят статус Invalid (Unknown). Во первых, вы можете попробовать выполнить из консоли ssh, такие команды:
Если новая перерегистрация не помогла, то делаем вот что, тушим по возможности виртуальную машину из самой ОС. Далее, щелкаем по ней правым кликом и удаляем ее из инвентории. В vCenter 6.5 это выглядит так, "All Virtual infrastructure Actions - More Custom Atrtributes - Remove From Inventory".
В ESXI 5.5, это выглядит вот так.
Если виртуалка работает и нет возможности ее выключить, перезагружаем ESXI хост. После чего создаем новую виртуальную машину. На этапе "Customize Hardware", где нужно указывать размер ваших ресурсов, удалите стандартно созданный диск, и нажмите кнопку Add. Выберите пункт "Существующий виртуальный диск (Existing Hard Disk).
И добавьте все ваши существующие диски, от прежней виртуальной машины. Запустите ее и проверьте, что все работает.
В ESXI 5.5, это выглядит так же, там нужно выбрать "Use an existing virtual disk".
Как только вы удостоверились, что все в порядке, осталось еще выполнить миграцию этих дисков в папку с виртуальной машиной, чтобы все было в одном месте. Для этого два пути, тупое копирование файлов и заново передобавлять их из конфигурации мастера или же сделать Storage VMotion.
Статус Invalid (Unknown) после потери связи с VMFS хранилищем
То же, очень частая ситуация, когда у вас по ряду причин может отвалиться ваше дисковое хранилище, например ISCSI. Когда доступ восстановился, то виртуалка вполне может иметь статус Invalid (Unknown), в таком случае удалите ее из инвентори (Remove From Inventory). Затем найдите на датасторе вашу виртуалку, щелкните правым кликом по конфигурационному файлу, и зарегистрируйте ее заново (Register VM). Пробуем ее включать.
Надеюсь, что данная статья оказалась вам полезной и вы устранили свою проблему. С вами был Иван Семин, автор и создатель портала Pyatilistnik.org.