David Szpunar: Lead Engineer, PC Help Services

David's Church Information Technology

August 5th, 2008 at 4:38 pm Print This Post Print This Post

Explorations with VMware ESXi (now free!) and Linux NICs

Late last month, VMware announced that it was going to make it’s ESXi product free. It’s not the same as the full-blown ESX product, but it’s close enough to get anyone running VMware Server salivating! Including me.

I’m going to have to work on getting a server available to play with this at Lakeview, but it came at a great time for the Indiana District Assemblies of God office where I work one day per week: I had a server that I was about to transition into a role as a virtual server host and ESXi was released freely at just the right time to try it out! My server is a ProLiant DL580 G2 model, which isn’t on the “officially supported” HCL (Hardware Compatibility List) for ESXi, but is for the full ESX. Worth a try; I’m not planning on buying support anyway.

After registering, downloading the ISO image file, burning it to a CD, and booting the CD on the target server, the installation process completed without a hitch. It was so quick and easy, there’s no point in describing the process in detail! If you can’t make it install on supported hardware, you shouldn’t be using servers anyway :-) (You can find how-to guides online easily enough if you do need one, and I will mention that you need to change the BIOS on the DL580 G2 to indicate that the supported OS is “Linux” before installing.)

After installing, the server boots and you get a screen that you can’t actually use to do much. It tells you your IP address (if it obtained one using DHCP, which mine did) and lets you set a root password (which I recommend). Then, you need to visit the IP address of the server from a client machine on the network. This page gives you a download link to install the VMware Infrastructure Client, which you’ll need to actually setup and manage ESXi. Connect with the Client to the IP of the server using the username root (and either a blank password or the one you set earlier if you changed it–you did change it, right?).

I’m using an onboard RAID controller with SCSI storage rather than a SAN (I’ve been told ESXi does not support IDE disks but does work with SATA drives if you need it to), so I didn’t need to set up any iSCSI targets or anything like that, although that appears to be very easy if you’re fortunate enough to have a SAN.

One thing to keep in mind is that you’ll need the free VMware Converter if you want to convert Virtual Machines from a VMware Server installation to your ESXi box. It’s a rather simple process I haven’t really gone through in production yet so I won’t say more, but you can’t just copy the files over and run them.

So far I’m only running a LAMP (Linux/Apache/MySQL/Perl-or-PHP-or-Python) appliance from VirtualAppliances.net, which I absolutely love when I need a quick webserver! Installing this from the Virtual Infrastructure Client is very, very easy. File menu->Virtual Appliance->Import. I used the Import from URL function, and used this VirtualAppliances address to the .ovf file needed to install the appliance. Confirm and wait, it has to download the disks from the internet and transmit them to the ESXi server!

I’m using the LAMP server to run the HelpSpot helpdesk application. Since I had this running in a VMware Server appliance already, I simply used the “scp” command to transmit the web files from the existing appliance to the new one, and moved the MySQL database dump over as well. I logged in as root to the appliance and used “aptitude update” and then was able to use “apt-get install php5-imap” and “apt-get install php5-tidy” which are required or recommended for HelpSpot, and I used the web-based configuration to turn on the Zend engine in the Apache configuration, which HelpSpot requires. It popped up and took off like I’d never moved it! I also copied over the cron entries needed to execute the regular email checks that Helpspot does. Note that I’m leaving off a few steps involving DNS changes and firewall modifications because I gave it a new IP address, but basically the move was very easy and straightforward.

Then I ran into trouble, because I like to experiment :-) In the VMware Infrastructure Client, I right-clicked the LAMP VM and told it to “Install/Upgrade VMware Tools” on the VM (it said the Toold were out of date…wouldn’t want that now, would we?). I used the Automatic option with no Advanced Options. Everything seemed to complete successfully, and I rebooted the appliance. Oops, no network! The eth0 network interface was nowhere to be found! (Using “ifdown eth0” and then “ifup eth0” normally disables and re-enables the Ethernet interface, in case you didn’t know (I didn’t, until recently, thanks to #citrt!), but in this case only the localhost “lo” interface showed up at all.) This could be a problem, since the whole point is to be a “networK” server! I tried asking around in the #citrt Church IT Roundtable channel on IRC, where usually someone knows what to do, but I didn’t get much help on this issue from the folks currently in there when I asked. Time for Google! Without too much effort I’m pointed in the right direction, to this forum thread on the Ubuntu Forums (The VA LAMP appliance is based on Debian linux). User “modifiedmind” had the same problem as the original poster, and then found the solution and posted it later…thanks! I couldn’t quite find what to enter as the argument to the modprobe command, but I managed to track it down and this is what I had to do:

  1. Edit the /etc/udev/rules.d/70-persistent-net.rules file on the appliance and delete the last two lines (the one starting “1. PCI device…” and the one beneath it, starting with “SUBSYSTEM==”net”…” (I like using the nano text editor because I’ve never spent the time to learn vi or emacs, so I did an “apt-get install nano” first; make sure to use the -w argument to nano so it doesn’t line-wrap for you, like “nano -w /filename“. Or use whatever text editor you’re comfortable with!)
  2. Run this command: /etc/init.d/udev restart
  3. Run this command: modprobe -r pcnet32
  4. Run this command: modprobe pcnet32
  5. Run this command: ifdown eth0
  6. Run this command: ifup eth0

That’s it. Back to working order! So far I’m very happy with ESXi and I’m going to do everything I can to use it everywhere possible :-) It also has the capability of adding the higher-end features (HA, VMotion, VirtualCenter Manager) just like you can with ESX, if you’re willing to pay for them. I’ve never used them, this is my first ESX/ESXi experience ever, so I figure I’ll be happy without them as long as I don’t use them to see what I’m missing! The biggest thing that ESXi doesn’t have that the “full” ESX has is a “service console” that lets you control the machine locally. I’ve heard that many people have had great success running ESXi on even non-supported hardware, and it should at least run on anything that ESX will run on without a problem (just don’t try to pay for support!).