VMware обновляет версию виртуальной машины с каждой новой версией гипервизора ESXi. В новых версиях появляется новый функционал и поддержка новых устройств. При изменении версии ESXi и vCenter виртуальные машины старых версий могут больше не поддерживаться. В этом случае версию VM нужно обновить.
Гипервизор | Версия VM |
ESX/ESXi 4.X | 7 |
ESXi 5.0 | 8 |
ESXi 5.1 | 9 |
ESXi 5.5 | 10 |
ESXi 6.0 | 11 |
ESXi 6.5 | 13 |
ESXi 6.7 | 14 |
ESXi 6.7 U2 | 15 |
ESXi 7.0 | 17 |
ESXi 7.0 U1 | 18 |
ESXi 7.0 U2 | 19 |
ESXi 8.0 | 20 |
Версию можно увидеть на вкладке Summary виртуальной машины в секции Compatibility.
Эту машину я только что накатил из OVA шаблона. Если гипервизор не поддерживает данную версию VM то при попытке запуска или миграции мы получим ошибку.
No host is compatible with the virtual machine.
Потребуется обновление версии VM. Перед обновлением версии рекомендуется создать резервную копию или снапшот. Для выполнения обновления версии виртуальную машину нужно выключить, у меня и так выключена.
Actions → Compatibility → Upgrade VM Compatibility.
Подтверждаем обновление версии VM. YES.
Выбираем версию VM. Можно выбрать последнюю доступную.
А можно какую-то другую. Понизить версию таким способом нельзя. А повысить — пожалуйста. OK.
Версия VM изменилась.
Таким же образом можно выбрать обновление версии VM при следующей перезагрузке с помощью опции Actions → Compatibility → Schedule VM Compatibility.
Для централизованного обновления версий VMможно использовать vCenter Update Manager или vSphere Lifecycle Manager.
Обновление версии VM через PowerShell
Обновить версию VM:
Set-VM -VM vmname -HardwareVersion vmx-19 -Confirm:$false
Если ESXi не поддерживает эту версию, то получим ошибку:
The operation for the entity mytestVM1 failed with the following message: The operation is not supported on the object.
Список ВМ, которые нужно обновить:
Get-VM |Where-object {$_.powerstate -eq "poweredoff"} | Out-GridView -PassThru | Set-VM -HardwareVersion vmx-19 -Confirm:$false
Запланировать обновление всех VM после перезагрузки:
$HardwareUpdateVMs = Get-VM
Foreach ($VM in ($HardwareUpdateVMs)) {
$VMConfig = Get-View -VIObject $VM.Name
$vmConfigSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
$vmConfigSpec.ScheduledHardwareUpgradeInfo = New-Object -TypeName VMware.Vim.ScheduledHardwareUpgradeInfo
$vmConfigSpec.ScheduledHardwareUpgradeInfo.UpgradePolicy = “always”
$vmConfigSpec.ScheduledHardwareUpgradeInfo.VersionKey = “vmx-19”
$VMConfig.ReconfigVM($vmConfigSpec)
Обновление версии VM редактированием конфигурационного VMX файла
Таким образом можно не только повысить версию VM, но и понизить. Этот способ используйте на свой страх и риск, не факт что VM потом корректно заработает.
В хранилище редактируем файл vmname.vmx:
cd /vmfs/volumes/datastore1/vmname
vi vmname.vmx
Находим строку:
virtualHW.version = "10"
И меняем в ней версию:
virtualHW.version = "11"