Thursday, December 11, 2008

VMware ESX3i Lab Machine at Home



After I finished the VMware Infrastructure 3: Install & Configure v3.5 course I decided to put together a cheap(!) PC that I could use to mess around a little more with ESX, particularly before I sit the VCP exam.  So I looked around for hardware that could reasonably run a few Virtual Machines, and ESX, in as small a form-factor as possible.  For a custom PC that mean looking for a Micro-ATX motherboard and Case, a CPU with VT and 64bit features, at least 4GB RAM and a reasonable amount of disk space.

The motherboard I decided on (after much deliberation) was an Asus P5QL-EM.  I really wanted to get a P5Q-EM but noone in New Zealand had them in stock.  As it was the company I got all of the other components from (Playtech) couldn't get me a P5QL motherboard, so I had to order it through Acquire and go and pick it up from Morning Star out by the Airport (quite a way from my house).  The main difference between the P5Q and P5QL is the chipset (G43 as opposed to the G45) which means less total memory capacity (8GB instead of 16GB) and its also missing a few Media-related capabilities.  I didn't think I'd miss those that much, and I wanted it sooner rather than later so went for the cheaper board.  Other cool things about this motherboard:
  • Supports the 45nm CPUs (lower power & heat - good for home)
  • Onboard VGA, DVI and HDMI (capable of full 1080p output - might be nice for a future media center PC)
  • eSATA connector for additional storage
I bought an Intel E8400 Core2 Duo 3GHz, which is a 45nm CPU.  A bit more expensive than the older CPUs but I like the low power idea.  Also the HDD I bought is low power rated and quiet - a Western Digital 1TB EACS.
The case - a Silverstone SG03B is pretty funky looking. The guy at Playtech said I would struggle to build it, as it is quite cramped, but I didn't have any problems.  It was quite a cool little project to put together.  The Micro ATX case sure is cute, and fits everything in nicely.  Silverstone have done a good design job to make sure you can get at everything, removable HDD rails etc.  The Corsair HX-620 power supply has modular power connectors - so that cuts down some of the clutter inside the case.  
I installed 4GB of G.Skill DDR2-800 RAM, so there's still room for another 4GB if I need it.  I still can't believe you can get 4GB of RAM for $100 now!

I'm pretty happy with the final result.  It's a pretty quick machine, but nice and compact and really quiet.

So after building all this I tried to install ESX 3.5 (update 3) from the downloaded CD (ISO image).  As expected it wouldn't install due to a hardware issue.  The first one was due to the fact ESX couldn't read from the (SATA) CD-ROM.  It brought up the (rather unhelpful) error message "No driver found, Unable to find any devices of the type needed for this installation type".  


What it really wanted to say was change the storage configuration in the BIOS to IDE mode, and type the following at the ESX installation boot prompt:
esx all-generic-ide irqpoll pci=nommconf
So having gotten past that the expected issue showed up - ESX doesn't like the onboard NIC.  So I went on a mission to try and find an HCL-listed network card.  I wanted a Gigabit Card, with e1000 driver support.  So it came down to finding an Intel Pro 1000GT or Intel Pro 1000PT.  I couldn't find anyone with an Intel Pro 1000 PT desktop NIC (non-low Profile) in stock, so I had to front up with $200 for a Server NIC.  A nice card, but a little pricey all the same.

So ESX installed fine, and I jumped on the web interface, downloaded and installed the Virtual Infrastructure Client and logged on.  No storage adapters, and no ability to add VMFS storage :-(  So while I could connect to a NAS using NFS or iSCSI I couldn't use my 1TB drive for storage of any Virtual Machines VMDKs or ISO images.  Pretty much useless.

So after a few tears, and feeling very ripped off, I decided to go for the VI in a box setup.  Not desirable at all, but potentially the only way to get ESX running on my new hardware: Install Ubuntu Server 64bit (host), VMware Server 2.0 64bit and ESX Server 3.5 update 3 (guest) running in a Virtual Machine.  I've been trying on and off for the past week to get that to work.  I've read so many Blog posts about getting ESX to work in a VM, most or all with the same hints/tips.  

But while they work fine for VMware Workstation 6.5, they just don't work for VMware Server 2.0 (for me anyway).  ESX installs fine, but sits eating 100% CPU, takes hours to finish booting and when it finally does it's so slow its unusable.  Here are some of the better links I've found:
The VMware Forums: 
http://communities.vmware.com/thread/164935

What they basically all say is you need to ensure your VMX file has the following lines added:
monitor_control.restrict_backdoor = "TRUE"
monitor_control.vt32 = "TRUE"
ethernet0.virtualDev = "e1000"

So then I started following some of the threads about ESXi, and downloaded the ISO, and tried to run that in a VMware Server VM.  But I had the same problem.  

So today I thought I'd try to install ESXi instead of 3.5 on the PC as a host.  Because although I'd found lots of articles saying SATA isn't supported AND doesn't work for VMFS storage, I also found a couple that indicated it DID work.  

I followed the instructions in this VMware forum thread:
And now I've got a fully functional ESX Server - finally - with almost 1TB of VMFS storage space for VMs!

In summary the steps are:
  • Replace the oem.tgz file on the ESXi Installer CD with one that includes the SATA controller drivers (ICH10 in my case - from here).
  • Install ESXi
  • Boot from a Live Linux CD (I used Gentoo Minimal) and have a USB stick with oem.tgz on it connected
  • Mount the ESXi partition (mount /dev/sda5 /mnt/gentoo)
  • Mount the USB stick (mkdir /mnt/usb) and then (mount /dev/sdb /mnt/usb)
  • Copy the oem.tgz file from the USB stick to the ESXi installation (cp /mnt/usb/oem.tgz /mnt/gentoo)
Thanks to all those in the VMware forums and other blogs that contributed to that info.  It worked like a charm for me!

So now I'm getting on with setting up a vCenter Server (Formerly VMware Virtual Center - VMware have gone all Checkpoint and started renaming products every few months! - the weirdest one: Old: VMFS, New: VMware vStorage VMFS! ... who is going to say that mouthful every time?).  

I also might have a play setting up my NAS with NFS and use that for Vmotion between a couple of ESX servers. Maybe one running in a VMware Workstation 6.5 VM...hmmm, wonder if that'll work ;-)