प्रत्येक नए ESXi रिलीज़ में, VMware वर्चुअल मशीन और वर्चुअल हार्डवेयर के संस्करण को अपडेट करता है। VMware VMs के नए संस्करणों में नई कार्यक्षमता दिखाई देती है, नए वर्चुअल डिवाइस जोड़े जाते हैं, संसाधन सीमाएं बढ़ जाती हैं (PCI स्लॉट, RAM, vCPU), बग फिक्स होते हैं, आदि। इसलिए नए ESXi संस्करण में माइग्रेट करते समय सभी वर्चुअल मशीनों पर वर्चुअल हार्डवेयर संस्करण को अपग्रेड करना वांछनीय है। पुराने VM संस्करणों का उपयोग केवल अनुकूलता उद्देश्यों के लिए करना बेहतर है। इस लेख में, हम देखेंगे कि VMware ESXi होस्ट पर चल रही VM के वर्चुअल हार्डवेयर संस्करण को कैसे अपग्रेड करें।
ESXi और 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 (7.0.0) | 17 |
| ESXi 7.0 U1 (7.0.1) | 18 |
| ESXi 7.0 U2 (7.0.2) | 19 |
आप वर्चुअल मशीन के Summary टैब पर Compatibility सेक्शन में वर्तमान वर्चुअल मशीन (वर्चुअल हार्डवेयर) संस्करण देख सकते हैं। नीचे दिए गए स्क्रीनशॉट में दिखाया गया है कि VM संस्करण 18 (ESXI 7.0 U1 और बाद) उपयोग किया जा रहा है।

VMware वर्चुअल हार्डवेयर संस्करण अपडेट करने की अनुशंसा नहीं करता जब तक कि आपको नए हार्डवेयर द्वारा प्रदान की जाने वाली नई सुविधाओं की आवश्यकता न हो।
आप उस ESXi होस्ट पर VM नहीं चला पाएंगे जो VM हार्डवेयर के नए संस्करण का समर्थन नहीं करता। ऐसी VM को पुराने संस्करण के ESXi होस्ट पर vMotion का उपयोग करके माइग्रेट करने का प्रयास करते समय त्रुटि दिखाई देगी:
The virtual machine version is not compatible with the version of the host munexi1.

VM संस्करण अपग्रेड करने से पहले, इसकी अनुशंसा की जाती है:
- VM स्नैपशॉट बनाएं
- VMware Tools अपडेट करें। यदि आप नवीनतम VMware Tools संस्करण इंस्टॉल करने से पहले VM हार्डवेयर अपग्रेड करते हैं, तो Windows गेस्ट वर्चुअल मशीन में नेटवर्क सेटिंग्स रीसेट हो सकती हैं।
वर्चुअल हार्डवेयर संस्करण अपग्रेड करने के लिए, वर्चुअल मशीन को रोका जाना चाहिए। उसके बाद VM पर राइट-क्लिक करें और Compatibility → Upgrade VM Compatibility चुनें।

वर्चुअल हार्डवेयर अपडेट की पुष्टि करें और VM हार्डवेयर संस्करण चुनें। इस उदाहरण में, मैंने अपने होस्ट पर उपलब्ध नवीनतम ESXi 7.0 U1 और बाद को चुना है।

आप वर्चुअल मशीन हार्डवेयर संस्करण के स्वचालित अपग्रेड को अगली बार VM के ग्रेसफुली रीस्टार्ट होने पर शेड्यूल कर सकते हैं।
- VM कॉन्टेक्स्ट मेनू में Compatibility → Schedule VM Compatibility Upgrade चुनें;
- Compatible with ड्रॉप-डाउन सूची से, उस VM हार्डवेयर संस्करण का चयन करें जिसे आप अपग्रेड करना चाहते हैं;
- विकल्प Only upgrade after normal guest OS shutdown सक्षम करें;

- वर्चुअल मशीन का वर्चुअल हार्डवेयर संस्करण अगली बार वर्चुअल मशीन रीबूट होने पर अपडेट हो जाएगा।
आप VMware PowerCLI मॉड्यूल से पावरशेल cmdlets का उपयोग करके VM हार्डवेयर संस्करण भी अपडेट कर सकते हैं। अपने vCenter या ESXi होस्ट से कनेक्ट करें:
Connect-VIServer esxi_hostname
अपनी वर्चुअल मशीनों के वर्चुअल हार्डवेयर संस्करण सूचीबद्ध करें:
Get-VM | select Name, hardwareversion, PowerState

नए VMware ESXi संस्करणों में, VM के Version एट्रिब्यूट के बजाय HardwareVersion का उपयोग किया जाना चाहिए। पुराने एट्रिब्यूट नाम का उपयोग करने पर चेतावनी दिखाई देती है:
WARNING: The 'Version' property of VirtualMachine type is deprecated. Use the 'HardwareVersion' property instead.
पावरशेल का उपयोग करके VM हार्डवेयर संस्करण अपडेट करने के लिए, कमांड चलाएं:
Set-VM -VM lon-fs03 -HardwareVersion vmx-19 -Confirm:$false
यदि निर्दिष्ट VM हार्डवेयर संस्करण ESXi होस्ट द्वारा समर्थित नहीं है, तो त्रुटि दिखाई देगी:
The operation for the entity mytestVM1 failed with the following message: The operation is not supported on the object.
आप Out-GridView cmdlet का उपयोग करके अपग्रेड की जाने वाली VMs सूचीबद्ध कर सकते हैं:
Get-VM |Where-object {$_.powerstate -eq "poweredoff"} | Out-GridView -PassThru | Set-VM -HardwareVersion vmx-19 -Confirm:$false
आप एक ग्राफिकल टेबल देखेंगे जिसमें आपको उन VMs को चुनना होगा जिन्हें आप अपग्रेड करना चाहते हैं (कई VMs चुनने के लिए CTRL कुंजी का उपयोग करें)।

एक साधारण पावरशेल स्क्रिप्ट का उपयोग करके होस्ट पर सभी VMs पर स्वचालित हार्डवेयर अपग्रेड शेड्यूल करें:
$AllVMs = Get-VM
Foreach ($VM in ($AllVMs)) {
$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 हार्डवेयर संस्करण पर अगले रीबूट पर सभी वर्चुअल मशीनें स्वचालित रूप से अपग्रेड हो जाएंगी।
कॉर्पोरेट नेटवर्क में VM हार्डवेयर और VM टूल्स के केंद्रीकृत अपग्रेड के लिए, vSphere 7+ में vCenter Update Manager या vSphere लाइफसाइकिल मैनेजर (VLCM) का उपयोग करना बेहतर है।
यदि आप मुफ़्त ESXi संस्करण (VMware vSphere हाइपरवाइज़र) उपयोग कर रहे हैं, तो API प्रतिबंधों के कारण आप PowerCLI के माध्यम से VM हार्डवेयर संस्करण अपग्रेड नहीं कर पाएंगे। लेकिन आप ESXi शेल में vim-cmd कमांड का उपयोग कर सकते हैं:
सर्वर पर VMs की सूची प्राप्त करें:
vim-cmd vmsvc/getallvms
आप जिस VM को अपग्रेड करना चाहते हैं उसका VMID ढूंढें और निम्न कमांड में निर्दिष्ट करें:
vim-cmd vmsvc/upgrade vmid vmx-17

VM शुरू करें और सुनिश्चित करें कि यह VM संस्करण 17 पर अपग्रेड हो गया है।
VM कॉन्फ़िगरेशन फाइल (VMX) को सीधे संपादित करके VM हार्डवेयर संस्करण अपडेट करने का एक और, असमर्थित संस्करण भी है।
SSH के माध्यम से ESXi होस्ट से कनेक्ट करें और VM वाली डायरेक्टरी में जाएं:
cd /vmfs/volumes/datastore_name/test_vm
test_vm.vmx फाइल संपादित करें:
vi myvm.vmx
कॉन्फ़िगरेशन लाइन ढूंढें:
virtualHW.version = "12"
और इसे बदलें:
virtualHW.version = "17"
सेव करें और VMX फाइल बंद करें ( Esc, :, w, q )।