ESXI ошибка: The virtual machine inventory file is damaged or unreadeble. Как исправить.
Исправляем ошибку: The virtual machine inventory file is damaged or unreadeble
В один прекрасный день я открыл vSphere и к моему удивлению в инвентаре не было ни одной виртуальной машины, хотя они были доступны и к ним без проблем подключались пользователи. А в vSphere нет ни одной виртуальной машины:
The virtual machine inventory file is damaged or unreadeble
Следуя пути эникея - я первым делом перезапустил ESXi, но это ни к чему не привело. Тут я уже начал волноваться. Волноваться и гуглить проблему. Выяснилось вот что:
Эта ошибка возникает в результате того, что файл vmInventory.xml перемещен или повреждён. Сам файл расположен по адресу /etc/vmware/hostd. Для решения проблемы нам нужно подключиться к ESXi через SSH. После подключения переходим в соответствующую директорию на сервере:
cd /etc/vmware/hostd
И перед всеми манипуляциями делаем резервную копию файла vmInventory.xml. Так, на всякий случай.
mv vmInventory.xml vmInventory.xml.old
Теперь, для того чтобы сервер сформировал новый файл нам нужно перезапустить агентов следующей командой:
/sbin/services.sh restart
Заходим в vSphere и видим список всех виртуальных машин. Готово.
Если способ выше не помог
Если магии не случилось, то открываем резервную копию файла и видим там примерно такое содержимое:
<ConfigRoot> <ConfigEntry id="0000"> <objID>2</objID> <vmxCfgPath>/vmfs/volumes/608a0cf3-0ecf2d53-3a20-222590f9c76c/SQL/SQL.vmx</vmxCfgPath> </ConfigEntry> <ConfigEntry id="0001"> <objID>3</objID> <vmxCfgPath>/vmfs/volumes/608a0cf3-0ecf2d53-3a20-222590f9c76c/SC/SC.vmx</vmxCfgPath> </ConfigEntry> <ConfigEntry id="0003"> <objID>5</objID> <vmxCfgPath>/vmfs/volumes/608a0cf3-0ecf2d53-3a20-222590f9c76c/1C/1C.vmx</vmxCfgPath> </ConfigEntry> </ConfigRoot>
В файле указан путь до файла виртуалке с расширением .VMX. В одном из случаев пути были прописаны некорректно. Просто укажите корректный путь до файла VMX и сохраните файл под именем vmInventory.xml. Теперь можете запустить vSphere. Готово!
Потерялся закрывающий тег </ConfigEntry>
... <ConfigEntry id="0013"> <objID>39</objID> <vmxCfgPath>/vmfs/volumes/56b6ac48-411cb153-cfd8-002590f30fc6/WindowsServer2016/WindowsServer2016.vmx</vmxCfgPath> </ConfigRoot>
В файле не было закрывающего тега </ConfigEntry>. Уж не знаю как он в файле потерялся, но из-за его отсутствия инвентарь упорно не хотел отображаться в vSphere.
...
<ConfigEntry id="0013">
<objID>39</objID>
<vmxCfgPath>/vmfs/volumes/56b6ac48-411cb153-cfd8-002590f30fc6/WindowsServer2016/WindowsServer2016.vmx</vmxCfgPath>
</ConfigEntry>
</ConfigRoot>
Добавление через GUI vSphere
Ещё как альтернативный способ - добавить всё вручную через GUI vSphere. Открываем Configuration потом заходим в Storage, далее правой кнопкой по диску, на котором лежит нужная нам виртуалка Browse Datastore.... Ищем файл виртуалки с расширением .VMX и добавляем его вручную через правую кнопку мыши и Add to inventory. Всё, готово! :)