The next version of VMware ESX will run only on 64-bit CPUs hardware . So you might be wondering if your current ESX hardware has 64-bit capable CPUs so you can upgrade to vSphere when it is finally released.
First let's review what a 64-bit CPU is. When applied to CPUs, the term bits indicates the amount of data that the processor registers can hold. So each processor register on a 64-bit CPU can hold 64-bits as opposed to only 32-bits for a 32-bit CPU. A bit is the smallest unit of measurement for information storage ; a byte is typically composed of 8 bits. Most x86 processors are either 32- or 64-bit. Almost all enterprise servers manufactured today have 64-bit CPUs but many older servers have 32-bit CPUs.
CPUs with 64 bits can run 32- and 64-bit operating systems and applications. Many applications and operating systems have 64- and 32-bit versions that can be installed based on the server hardware used. Unlike operating systems and applications that have different versions for 32- and 64-bit CPUs,VMware ESX 3.x supports both by default, and there is no need to install a special version. VSphere, however, will run on only 64-bit CPUs. If you try and install it on a server that has 32-bit CPUs you will get the kind of error message that is shown below.
To explain this image, 32-bit distribution refers to ESX 3.5.x, as it supports 32-bit CPUs; vSphere supports only 64-bit CPUs. (ESX 3.5.x supports both 32-bit and 64-bit CPUs, vSphere supports only 64-bit CPUs.) You might also wonder what "long mode" is. 64-bit CPUs can operate in two modes: legacy and long mode. When operating in legacy mode, a CPU runs exclusively 32-bit code and none of the 64-bit extensions are used. When operating in long mode, the CPU can run native 64-bit applications but also 32-bit applications in a special compatibility mode.
ESX 3.x could run in legacy mode or long mode depending on the type of CPU that was used in the server. VSphere was written to support only long mode and thus requires 64-bit CPUs. The reason that VMware chose to do this was to increase scalability and performance.
But not all 64-bit CPUs are created equal. Just because you have a 64-bit server doesn't mean you can run 64-bit guest OSes on it. The x86 64-bit architecture was designed to use an improved memory model, which consists of flat 64-bit address space, and the segmented memory model which was used in the 32-bit architecture was removed. Consequently this caused issues for 64-bit guest OSes on virtual host servers. They did not have an efficient mechanism for isolating the virtual machine monitor from 64-bit guest OSes. Voth Intel and AMD have since added features to their CPUs to support memory segmentation when running in Long mode, but earlier 64-bit CPU models did not have this feature.
AMD and Intel servers
Early AMD64 CPUs (Revision C and earlier) were missing memory segmentation support when running in long mode, so Revision D and later CPUs are required to run vSphere. If running on AMD Opteron, you'll need AMD Opteron family CPUs Rev E or later. Additionally many AMD servers have a BIOS feature called AMD-V (virtualization extensions) that must be enabled to support 64-bit guest OSes. Intel CPUs require both EM64T and VT support in the CPU and the BIOS of the server. EM64T is Intel's 64-bit technology and VT is their Virtualization Technology. Intel EM64T CPUs also do not have memory segmentation support in long mode, but the VT feature allows ESX to work around.
Both the Intel-VT and AMD-V features may be disabled in a server's BIOS by default, so check your BIOS to see whether this is the case. This setting's BIOS setup location depends on the server manufacturer's requirements, but is typically located under the advanced or security options. If you don't see such options to enable these features in your server's BIOS settings, it may be because the server does not support the option, which is common among older servers. Alternatively, you may have an older BIOS version that needs to be upgraded. Check with your server manufacturer whether there is a newer BIOS version so you can enable these features.
Got 64-bit processors?
So how do you find out whether your have 64-bit processors? There are a few utilities available to check your servers and see whether they have 64-bit CPUs and can run 64-bit guest OSes. The first is a CPU Identification Utility. This utility is a small ISO file that VMware provides on its website to identify the CPU that supports your host and let you know if it supports 64-bit long mode and 64-bit guest OSes. You can burn the ISO file to a CD, or mount it using a remote management board so you can shut down and boot your host from it.
The utility is meant to run directly on a host, which requires shutting it down, but I've also mounted the ISO file to a guest OS's virtual CD-ROM, booted from it and garnered the same results. I believe this is because while much of a guest OS's hardware is generic virtual hardware, the CPU always displays as the brand and model of whatever is in the host server. Once the utility runs, it will display an output similar to what's in the image below.
In the above example of an HP DL360 G4, you can see that it supports 64-bit long mode, but it does not support 64-bit VMware guest OSes. This means that you could install vSphere on the server but can only run 32-bit guest OSes on the host. Here's another example of an HP DL385 G1 server with AMD Opteron CPUs.
This server supports both 64-bit long mode and 64-bit VMware guest OSes, so you can install vSphere on it and run 32- and 64-bit guest OSes.
Another way to check your host servers' CPUs is to use the utility VMware CPU Host Info. The utility can run on any workstation, connect a vCenter Server (though not on individual ESX hosts) and report on each host's CPU capabilities. However, this utility determines only whether a host is VT-capable or not or whether it can run 64-bit guest OSes. It will not tell you whether the host supports only 64-bit long mode, as the other utility does.
VMware CPU Host Info works by using the VMware Infrastructure SDK to query system information from each host. It then presents it in a spreadsheet format. As an added bonus this utility will show if the host will work with the new Fault Tolerant (FT) utility of vSphere, which only works with the latest CPU types. Once you download and run this utility on your workstation you specify the vCenter Server you want it to connect to and it displays all the host servers managed by that vCenter Server along with information on their CPUs.
Below are the results from this utility using the same DL360G4 server as before. It shows that the server is not VT Capable but does not tell you the server supports 64-bit long mode, which it does. The other columns show if FT (Fault Tolerance) is supported, if VT is enabled and whether or not various CPU features exist.
Here are the results from running the utility against other servers.
Note all the utility reports show that all the hosts have VT enabled. I think the way the utility was written is to only to show if the host is VT-capable and/or VT enabled, but not both. If the utility reports that a host is only VT capable, you probably need to modify its BIOS setting to enable the VT features.
Now that you know how to check your hosts to identify whehter they have 64-bit CPUs, you can determine whether they can be upgraded from VMware Infrastructure 3 to vSphere. Understanding your server hardware and what it supports will help you plan your upgrade and allow you to budget for new server hardware if necessary.
Eric Siebert is a 25-year IT veteran with experience in programming, networking, telecom and systems administration. He is a guru-status moderator on the VMware community VMTN forums and maintains VMware-land.com, a VI3 information site.
For more information on virtual machines, check out the following SearchVirtualDataCentre.co.uk resources:
- Financial firm pumps up VM density, lowers power consumption
- How to simplify your IT and stop being stupid
- The myth of virtual machine consolidation ratios
This was first published in April 2009