Обновление версии виртуальной машины в VMWare ESXi

В каждом новом релизе своего гипервизора ESXi, VMware обновляет используемую версию виртуальной машины ( VM Version ) и, соответственно, параметры виртуального железа ( virtual hardware ). В новой версии виртуальной машины, как правило, появляется поддержка нового функционала, новые виртуальные устройства, увеличиваются лимиты на ресурсы (PCI слоты, RAM, vCPU ), правятся старые баги и т.д. Поэтому при миграции на новую версию ESXi желательно выполнять и обновление версии виртуального железа для всех виртуальных машин. Старые версии виртуальных машин стоит использовать только в целях совместимости. В этой статье мы рассмотрим, как обновить версию виртуальной машины (виртуального железа) для виртуальной машины, запущенной на хосте VMware ESXi.

В таблице ниже приставлено соответствие между версиями ESXi и версиями VM hardware.

Версия гипервизора Версия железа виртуальной
машины
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 (7.0.0) 17
ESXi 7.0 U1 (7.0.1) 18
ESXi 7.0 U2 (7.0.2) 19

Текущую версию виртуальной машины (виртуального железа) можно узнать на вкладке Summary виртуальной машины в секции Compatibility . В примере на скриншоте видно, что используется версия VM version 18 (ESXI 7.0 U1 and later).

узнать версию виртуальной машины на хосте vmware

VMware не рекомендует обновлять версию виртуального оборудования, если вам не нужны новые функции, предоставляемые новой версией.

Вы не сможете запустить ВМ на хосте ESXi которые не поддерживает новую версию VM hardware. При попытке миграции такой ВМ на хост со старой версией ESXi с помощью VMotion появится ошибка:

The virtual machine version is not compatible with the version of the host exi1.

The virtual machine version is not compatible with the version of the host

Перед выполнением обновления версии ВМ рекомендуется:

  • Создать снапшот ВМ;
  • Обновить версию VMware Tools (если обновить версию VM Hardware до установки свежей версииVMware Tools, ВМ с гостевой Windows может потерять сетевые настройки).

Для выполнения апгрейда версии Virtual Hardware, виртуальную машину нужно выключить. После этого в контекстном меню выбрать пункт Compatibility -> Upgrade VM Compatibility .

пункт контекстного меню виртуальной машины пункт Compatibility -> Upgrade VM Compatibility.

В открывшемся окне нужно подтвердить обновление версии виртуального оборудования и выбрать версию VM Hardware. В этом примере я выбрал последнюю доступную на моем хосте версию ESXi 7.0 U1 and later.

Выбрать версию VM compatibility для виртуальной машины Vmware

Можно запланировать автоматический апгрейд версии оборудования виртуальной машины при следующей корректной перезагрузке ВМ.

  1. Для этого в контекстном меню ВМ выберите Compatibility -> Schedule VM Compatibility Upgrade ;
  2. Вы выпадающем списке Compatible with выберите версию VM hardware до которой версии вам нужно обновиться;
  3. Включите опцию Only upgrade after normal guest OS shutdown ; запланировать обновление vm hardware при следующей перезагрузке
  4. Версия виртуального оборудования виртуальной машины будет обновлена при следующей перезагрузке ВМ.

Также вы можете обновить версию VM Hardware с помощью PowerShell командлетов из модуля VMware PowerCLI .

Подключитесь к своему vCenter или ESXi хосту:

Connect-VIServer esxi_hostname

Выведите список версий виртуального оборудования ВМ:

Get-VM | select Name, hardwareversion, PowerState

Get-VM | select Name, hardwareversion вывести версии всех вирутальных машин на хосте ESXi

В новых версиях VMware вместо атрибута Version ВМ нужно использовать HardwareVersion. При использовании старого формата появляется предупреждение:

WARNING: The 'Version' property of VirtualMachine type is deprecated. Use the 'HardwareVersion' property instead.

Чтобы обновить версию vm hardware с помощью PoweShell, выполните команду:

Set-VM -VM mytestVM1 -HardwareVersion vmx-19 -Confirm:$false

Если указанная версия VM hardware не поддерживается хостом ESXi, появится ошибка The operation for the entity mytestVM1 failed with the following message: The operation is not supported on the object.

Можно вывести список ВМ, которые нужно обновить с помощью командлета Out-GridView :

Get-VM |Where-object {$_.powerstate -eq "poweredoff"} | Out-GridView -PassThru | Set-VM -HardwareVersion vmx-19 -Confirm:$false

Перед вами появится графическое окно, в котором нужно выбрать ВМ которые вы хотите обновить (чтобы выбрать несколько ВМ используйте клавишу CTRL )

обновить версию виртуального оборудования ВМ VMware с помощью POwerShell Set-VM -HardwareVersion

Можно запланировать автоматическое обновление железа на всех ВМ на хосте с помощью простого скрипта PowerShell

$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 hardware при следующей перезагрузке.

Для централизованного обновления VM hardware и VM tools в enterprise сетях лучше использовать vCenter Update Manager или vSphere Lifecycle Manager (VLCM) в vSphere 7+.

Если вы используете бесплатную версию VMware vSphere Hypervisor , вы не сможете обновить версию оборудования ВМчерез PowerCLI из-за ограничений API. Но можно воспользоваться командами vim-cmd в ESXi shell. Подключитесь к хосту по SSH и выведите список ВМ на хосте:

vim-cmd vmsvc/getallvms

Запомните VMID ВМ, которую нужно обновить:

vim-cmd vmsvc/upgrade vmid vmx-17

vim-cmd vmsvc/upgrade vmid vmx-10

Осталось включать ВМ и проверить, что версия обновилась до VM version 17.

Также есть еще один, неподдерживаемый версий обновления версии VM hardware путем прямого редактирования конфигурационного VMX файла ВМ:

Подключитесь к хосту по SSH и перейдите в каталог с ВМ:

cd /vmfs/volumes/datastorename/myvm

Отредактируйте файл myvm.vmx:

vi myvm.vmx

Найдите строку:

virtualHW.version = "12"

И измените на:

virtualHW.version = "17"

Закройте и сохраните VMX файл ( Esc, :, w, q ).

EnglishRussianUkrainian