В каждом новом релизе своего гипервизора 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).
Вы не сможете запустить ВМ на хосте ESXi которые не поддерживает новую версию VM hardware. При попытке миграции такой ВМ на хост со старой версией ESXi с помощью VMotion появится ошибка:
The virtual machine version is not compatible with the version of the host exi1.
Перед выполнением обновления версии ВМ рекомендуется:
- Создать снапшот ВМ;
- Обновить версию VMware Tools (если обновить версию VM Hardware до установки свежей версииVMware Tools, ВМ с гостевой Windows может потерять сетевые настройки).
Для выполнения апгрейда версии Virtual Hardware, виртуальную машину нужно выключить. После этого в контекстном меню выбрать пункт Compatibility -> Upgrade VM Compatibility.
В открывшемся окне нужно подтвердить обновление версии виртуального оборудования и выбрать версию VM Hardware. В этом примере я выбрал последнюю доступную на моем хосте версию ESXi 7.0 U1 and later.
Можно запланировать автоматический апгрейд версии оборудования виртуальной машины при следующей корректной перезагрузке ВМ.
- Для этого в контекстном меню ВМ выберите Compatibility -> Schedule VM Compatibility Upgrade;
- Вы выпадающем списке Compatible with выберите версию VM hardware до которой версии вам нужно обновиться;
- Включите опцию Only upgrade after normal guest OS shutdown;
- Версия виртуального оборудования виртуальной машины будет обновлена при следующей перезагрузке ВМ.
Также вы можете обновить версию VM Hardware с помощью PowerShell командлетов из модуля VMware PowerCLI.
Подключитесь к своему vCenter или ESXi хосту:
Connect-VIServer esxi_hostname
Выведите список версий виртуального оборудования ВМ:
Get-VM | select Name, hardwareversion, PowerState
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)
Можно запланировать автоматическое обновление железа на всех ВМ на хосте с помощью простого скрипта 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 при следующей перезагрузке.
Если вы используете бесплатную версию VMware vSphere Hypervisor, вы не сможете обновить версию оборудования ВМчерез PowerCLI из-за ограничений API. Но можно воспользоваться командами vim-cmd в ESXi shell. Подключитесь к хосту по SSH и выведите список ВМ на хосте:
vim-cmd vmsvc/getallvms
Запомните VMID ВМ, которую нужно обновить:
vim-cmd vmsvc/upgrade vmid vmx-17
Осталось включать ВМ и проверить, что версия обновилась до 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
).