Довольно часто администраторы VMWare сталкиваются с тем, что в списке виртуальных машин присутствуют виртуальные машины со статусом Invalid (Unknown). Как правило эта проблема встречается после удаления виртуальной машиной, данные о которой почему-то остались в конфигурации vSphere/ESXi. Это также может случится при ручном удалении файлов виртуальной машины из VMFS хранилища, после выполнения VMotion и в ряде других случаев. Удалить такую ВМ из клиента vSphere Web Client штатными средствами не получится (пункт удаления в мeню Actions неактивен).
Единственный способ удалить такую ВМ – через SSH консоль хоста ESXi.
- Включите SSH на ESXi хосте, на котором находится проблемная ВМ (Actions -> Settings -> Security Profile -> Services -> SSH -> Edit -> Start).
- Подключитесь к хосту ESXi через SSH клиент (Putty, mputty и т.д.).
- Чтобы получить ID проблемной виртуальной машины, выполните команду:
vim-cmd vmsvc/getallvms | grep invalid
- На экран будет выведен список всех зарегистрированных на хосте ВМ со статусом Invalid. В списке должна присутствовать строка вида: Skipping invalid VM ‘21’. В данном случае 21 – это идентификатор виртуальной машины.
- Если вы хотите попробовать восстановить данную ВМ в vSphere, выполните команду:
vim-cmd vmsvc/reload 21
(через минуту обновите интерфейс клиента и проверьте статус ВМ). - Если нужно разрегестировать (удалить) проблемную виртуальную машину, выполните команду:
vim-cmd /vmsvc/unregister 21
- Обновите интерфейс клиента vSphere. Виртуальная машина со статусом Invalid должна исчезнуть.
Также вы можете вручную удалить проблемную ВМ из файла конфигурации хоста /etc/vmware/hostd/vmInventory.xml. Для этого достаточно с помощью текстового редактора удалить секцию с данными проблемной ВМ в файле vmInventory.xml (предварительно создайте резервную копию этого файла) и перезапустить службы хоста:
services.sh restart
В том случае, если статус Invalid появился у работающей виртуальной машины, скорее всего это значит, что поврежден файл конфигурации ВМ. Для исправления проблемы нужно:
- Удалите ВМ из инвентари и перезагрузите ESXi хост.
- После этого создайте новую ВМ и подключите к ней виртуальные диски старой ВМ (Use an existing disk).
- Сделайте Storage VMotion, чтобы собрать все файлы новой ВМ в одной папке,
- Включите новую ВМ и проверьте, что она работает.
- Удалите файлы старой ВМ.
Если проблема с Invalid ВМ возникла после пропадания доступа к VMFS хранилищам, то после восстановления доступа включенные ВМ продолжат свою работу, а выключенные виртуальные машины станут изолированными. Такие ВМ нужно вручную удалить из Inventory и вручную зарегистрировать, найдя vmx файл виртуальной машины на VMFS хранилище, щелкнув ПКМ по ВМ и выбрав пункт Register VM. После этого включите ВМ и проверьте, что она доступна.
А как Windows Server 2016 обновить безболезненно с 1609 на1803? Это что ж получается, всё с нуля нужно ставить?
Офтоп. Это статья о виртуализации, а не о апгрейде Windows Server
Но мало ли проскочит такая информация, не поленитесь, запостите на вк пожалуйста.
Попробуйте обновление с офлайн ISO образа. Сам я не пробовал, но мне кажется должно работать. Хотя где-то встречал, что MSFT рекомендует чистую переустановку 🙂 Да и надо ли вам обновлять билды Windows Server так же часто как и Windows 10? Срок поддержки у него больше.
Спасибо за статью.
Имею похожую проблему, но наоборот. Я удалил виртуальные машины, но при каждой перезагрузке они снова появляются как Invalid. Т.е. физически машин нет, но они есть в списке и после удаления и перезагрузки они снова в списке. Вручную чистил файл /etc/vmware/hostd/vmInventory.xml, удалял командой из шела, но они убираются только до перезагрузки. Самое противное, что и созданные новые виртуалки после перезагрузки в списке исчезают, но на диске есть, вручную снова добавляются и запускаются. Короче после перезагрузки восстанавливается некое состояние списка невзирая на физическое отсутствие или присутствие виртуалок.
Есть какие-нибудь идеи, как это побороть?
Какая архитектура вашей инсталяции VMWare: один esxi сервер (версия?, случайно не free?), HA кластер? Версия vcenter? Где хранится образ esxi с которого грузится хост?
Любые другие настройки сохраняются после ребута?
Version:
1.8.0
Build number:
4516221
ESXi version:
6.5.0
ESXi build number:
4887370
free, установлена на отдельный сервер, без кластеров и т.п., грузится с SD-карты.
В работе года три, сначала была версия 6.0 недавно проапгрейдил на 6.5. Возможно после этого глюки и начались, просто не было нужды перегружаться.
После ребута не сохраняется план питания и порядок загрузки, с остальными настройками не смотрел/не менял.
Добрый день. Столкнулся с подобной проблемой, после перезагрузки VMs исчезают из списка. Вы смогли решить эту проблему
У меня на диске три ВМ на момент сбоя питания 1 не работала две другие работали, после сбоя работавшие на момент пропадания питания поставили себе статус invalid разрегистрировал, зарегистрировал, не помогло, появились файлы «.lck» и никакие данные машин «vmdk, vmx и даже vmware.log» нельзя ни скачать не скопировать. При просмотре состояния файлов они находятся в LOCK виден мак адрес заблокировавшего (мой адрес хоста, он у меня 1) никаких процессов по VM нет. Версия esxi 6.7. при этом lck файлы можно переименовать, но не удались. Инструкций крайне мало. Одна на этом сайте. Но не помогает. Не подскажите как быть?
В кластере 1 ESXI хост? Если нет, попробуйте изолировать VMFS раздел на одном хосте.
Т.е. вы с помощью следующей команды проверили кто использует lck файл:
vmkfstools -D /vmfs/*-flat.vmdk
И это ваш единственный хост. Самый простой вариант начать с его перезагрузки. Или не можете?
Здравствуйте.
После крэша заблокированы файлы виртуальной машины.
touch *
touch: NB03V-58c3f29b.vswp: Invalid argument
touch: NB03V-flat.vmdk: Invalid argument
touch: NB03V.nvram: Invalid argument
touch: NB03V.vmx: Invalid argument
touch: NB03V.vmx.lck: Invalid argument
touch: NB03V.vmx~: Invalid argument
touch: vmware-371.log: Invalid argument
touch: vmware.log: Invalid argument
touch: vmx-NB03V-1489236635-1.vswp: Invalid argument
К виртуальной машине имеет доступ только один хост.
Что и подтверждается:
vmfsfilelockinfo -p /vmfs/volumes/5fe3890
7-b5c6d2e4-c873-047d7bea77ec/NB03V/NB03V-flat.vmdk
vmfsfilelockinfo Version 2.0
Looking for lock owners on «NB03V-flat.vmdk»
«NB03V-flat.vmdk» is locked in Exclusive mode by host having mac address [’04:7d:7b:ea:77:ec’]
Trying to use information from VMFS Heartbeat
Host owning the lock on file is 192.168.120.210, lockMode : Exclusive
Total time taken : 6.4138362320009037 seconds.
При этом нет конкретного процесса, который это сделал.
lsof | egrep ‘Cartel|NB03V-flat.vmdk’
Cartel | World name | Type | fd | Description
vim-cmd vmsvc/getallvms | grep -i ‘NB03V-flat.vmdk’
выдает пустоту
Перезагрузки, выключения и пр. не помогают.
Файлы нельзя ни удалить, не скопировать.
В какую сторону копать?