Problem solve Get help with specific problems with your technologies, process and projects.

Redhat Linux and Moving a Virtual Machine from one ESX to another with different CPU Vendor

Describes Redhat Linux and how to move a virtual machine from one ESX to another.

I got this from a Forum Thread on which I learnt something interesting this week. We all know you cannot VMotion any Virtual Machine regardless of OS from one ESX server to another that doesn’t obey the “Family & Stepping” rule. Certainly, this rules out the possibility of VMotion from Intel box to an AMD box (and vice-versa). Putting that aside there is an interesting “gotcha” regarding CPU Vendor and Linux. It seems that nothing is as virtualized as it seems.

From the Installing Guest Operating Systems on VMware’s Website

“VMware recommends you do not move a Red Hat Enterprise Linux 2.1 virtual machine between hosts when one host is running on an AMD processor and the other is running on an Intel processor. 

During installation, Red Hat Enterprise Linux 2.1 chooses a kernel that is optimized for the specific processor on which it is running. The kernel may contain instructions that are available only on that processor. These instructions can have adverse effects when run on a host with the wrong type of processor. 

Thus, a Red Hat Enterprise Linux 2.1 virtual machine created on a host with an AMD processor may not work if migrated to a host with an Intel processor. The reverse is also true: a Red Hat Enterprise Linux 2.1 virtual machine created on a host with an Intel processor may not work if migrated to a host with an AMD processor. 

This problem is not specific to virtual machines and would also occur on physical computers. For example, if you moved a hard drive with a Red Hat Enterprise Linux 2.1 installation from an AMD machine to an Intel machine, you would experience problems trying to boot from that drive.”

The thread continued with one poster suggesting using command-line switches to enforce a low processor type to get compatiability – the downside of this appears “lost” of some the performance gained by selecting a Linux kernel optimised for the particular type of processor you have in the ESX server.

“The -i386 switch does, indeed, mean that the code will be compiled to run on a 80386. A 386 is considered to be the lowest common denominator, to be used when the target platform is unknown. Of course, all new instructions and optimizations for recent CPUs just cannot be used, which hinders performance. As there are virtually no 386 still running, many suggest that the bar should be raised to -i686 – the Pentium Pro processor. That would allow many optimizations without jeopardizing compatibility.

As for portability of Linux machines, I would try building them on a PIII host to avoid any fancy optimizations. That way I’d get a truly portable machine that would run on any “grown-up” processors, whichever they are” Ron Osenkoetter

Dig Deeper on VMware View

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.