После ряда удачных и не очень удачных экспериментов с развёртыванием ПО на хостах виртуализации тестового кластера Hyper-V на базе ОС Windows Server 2016 столкнулись с проблемой потери управления компонентами виртуализации. В частности, при попытке получить информацию о виртуальных машинах (Get-VM) или самом хосте (Get-VMHost) через PowerShell появились однотипные ошибки вида:
Get-VM : Hyper-V encountered an error trying to access an object on computer 'KOM-VM01' because the object was not found. The object might have been deleted. Verify that the Virtual Machine Management service on the computer is running. At line:1 char:1 + get-VM + ~~~~~~ + CategoryInfo : ObjectNotFound: (:) [Get-VM], VirtualizationException + FullyQualifiedErrorId : ObjectNotFound,Microsoft.HyperV.PowerShell.Commands.GetVM
При попытке подключения к хосту с помощью графической консоли Hyper-V Manager, появилась схожая по содержанию ошибка об отсутствии объекта.
Проверяем состояние службы "Hyper-V Virtual Machine Management" (vmms). Служба должна быть включена и запущена.
Следующим этапом выполняем поверхностную проверку состояния инструментария WMI для Hyper-V. В первую очередь убедимся в том, что пространство имён WMI, связанное с виртуализацией вообще присутствует:
Get-WmiObject -Namespace 'root\virtualization' -List Get-WmiObject -Namespace 'root\virtualization' -Class __Namespace
В Windows Server 2016 последняя команда должна вернуть пространство имён 'root\virtualization\v2':
Также можно попробовать запросить из этого пространства имён какую-нибудь информацию. Например, давайте попробуем получить статусные данные о виртуальных машинах хоста:
Get-WmiObject -Class "Msvm_ComputerSystem" –Namespace "root\virtualization\v2" | ? {$_.Caption -eq "Virtual Machine" } | Select ElementName,Status,StatusDescriptions
Если запросы к WMI возвращают ошибки об отсутствии объекта, то можно попробовать выполнить процедуру восстановления пространства WMI, связанного с работой компонент виртуализации, командой вида:
mofcomp %SystemRoot%\System32\WindowsVirtualization.V2.mof
В нашем случае, после выполнения указанной команды, без каких-либо дополнительных манипуляций, заработали командлеты PowerShell и консоль Hyper-V Manager.
Прошу уточнить, в случае, если запрос к списку и состоянию ВМ выдается без ошибок, то надо ли выполнять восстановление пространства WMI?
Насколько помню, у нас были ошибки при попытке листинга объектов через PS, поэтому мы и проводили восстановление через WindowsVirtualization.V2.mof