– OVERVIEW / THOUGHT PROCESS –
For years now, I’ve been using VMWare Fusion for all of my home/lab virtual environments. It’s a wonderful way to create all of your experiments, or even real world servers, in the compact environment of your home desktop computer. At work, however, this type of virtual setup was not robust enough to support all of our user’s requirements. As such, we were using an enterprise level virtualized environment which centered around what is known as an ESXi Controller. This allowed us to set up several virtual desktops, access them from anywhere, and manage them through a single source.
Before we switched from full computers at every desk to virtual computers at every desk, I had no idea what ESXi was. So here’s the explanation I wish I would have had so long ago. If you’re familiar with ESXi, you can probably skip to the next section.
As I mentioned, VMWare Fusion is a program that you install on a computer that creates virtuals within the confines of that computer. All of the resources of that computer are then shared between each virtual computer that you have created. The difficult part of that is sharing the resources. My desktop is a Mac Pro which has 10GB of RAM. The OSX operating system requires minimum amount of RAM to function, and each virtual that I create also requires RAM. Therefore, my pool of resources is very limited.
An ESXi Controller works similarly, however there is no overhead with the operating system, except for the very minimal requirements of the controller software. In a nutshell, an ESXi Controller will assign resources to each virtual that you create without the hassle of running out of those resources because of the overlying dynamic requirements of OSX, Windows, Linux, or any other full OS. But wait, it gets better!
ESXi Controllers can work in tandem. If you create more than one Controller, they can all talk to each other to make sure that your virtual desktops are available, even when something goes wrong. This is because your virtual desktops are stored on Network Area Storage (NAS), which can be accessed by all of the Controllers, all of the time.
So the two most important advantages to ESXi Controllers over Fusion or Parallels is that there is redundancy ensuring your systems will always be available, and there is little to no overhead for the computers to which you install the ESXi Controllers. Additionally, as if that weren’t enough, VMWare offers home use ESXi software for free. It limits you to only your home network, but it’s worth it when that’s basically what your home desktop was doing anyway.
So with that, why wouldn’t everyone use this type of construct? Well, the ESXi software is limited to the drivers that are included with the install. Unfortunately, this means that VMWare was targeting large companies and included drivers for high-end servers only. Which is why I am writing about my latest experiment… a home use ESXi Controller.
To accomplish this task, I ran into three critical problems. Throughout the rest of this writing, I’ll explain how I got through those obstacles and guide you on how you can accomplish this too.
The Three Main Problems:
1. Get the USB (3.0) stick to boot
2. Install a version of ESXi that included my network drivers
3. Create a NAS at home to house the virtuals
– WHAT YOU’LL NEED –
- A computer with RAM and a Hyperthreading processor
- ESXi software from VMWare
- vSphere Client from VMWare (downloaded after the installs)
- A PowerShell environment to create your ESXi version …standard with Windows 7
- vSphere Power CLI (Command Line Interface) …this will prompt you to install 2 other packages
- The ESXi-Customizer-PS script
- FreeNAS software
- Asus H97M-Plus Motherboard
- Intel i5 4-core processor (4 virtuals)
- 16 GB Viper RAM (2x8GB)
- DVD ROM for install (you can also install via USB)
- Some extra burnable DVDs
- Mini ATX case with power supply
- Mac Pro with Fusion
- this is how I set up my FreeNAS
- a stand alone computer will also work
- a USB stick (can be 2.0 or 3.0) to house the ESXi installation
– THE PROCESS –
Step 1 – Configure your new computer’s BIOS
- Plug in your USB stick and boot up
- Disable UEFI / Enable Legacy USB
- List your new USB as HDD
- Set Boot Priority: 1-DVD 2-USB 3-Anything Else
Step 2 – Create an ISO with Net-e1000e drivers
- Boot up Windows 7 (or something with PowerShell)
- Install vSphere Power CLI
- Right click and select ‘Run as administrator’
- Allow it to download/install required packages
- Create a ‘Scripts’ directory
- I used C:\scripts
- Create your ESXi-Customizer-PS script
- It’s as simple as copy/paste
- I right-clicked within the C:\scripts directory and added a new text document
- Copy/paste the text from the ESXi-Customizer-PS script link
- Make sure the extension on your script file is .ps1 and not .txt
- Open PowerShell
- Start -> All Programs -> Accessories -> Windows PowerShell
- Enable scripts on PowerShell
- Type: Set-ExecutionPolicy unrestricted
- Select ‘Y’ to apply
- Now run your ESXi-Customizer-PS script
- Navigate to your script directory (cd C:\scripts)
- Make sure you use the option to add net-e1000e as described in the command below
- Type the command: ./ESXi-Customizer-PS-v2.3.ps1 -vft -load net-e1000e
- The new .iso file will be located in your scripts directory
Step 3 – Burn your new .iso to a DVD
- I used the Disk Utility within OSX. Within Windows you can use use this link.
- For Disk Utility, simply drag the new .iso into the list on the left and click ‘Burn’
- For Windows, you can double-click the .iso and follow the prompts
Step 4 – Install ESXi on your new computer
- Boot from DVD
- When you see the first boot up screen:
- Hit Shift-O to bring up a prompt
- Add a space to the existing prompt and type ‘formatwithmbr’
- Hit Enter
- Follow the prompts
- Select your USB drive as the install media
- It will reboot when it’s done
Step 5 – Create a FreeNAS virtual (or you can use a spare computer)
- If using Fusion, create a new virtual using the downloaded .iso
- Under settings for the new virtual, select ‘Add Device’
- Select: Settings -> Add Device -> New Hard Disk
- Make the disk large enough to house multiple virtuals (ex: 160GB)
- Boot up the new FreeNAS virtual and follow the prompts for install
Step 6 – Create your NAS drive
- From a browser on your desktop, navigate to the IP address indicated on the FreeNAS install
- Log in with the credentials used during the install
- Click on ‘Storage’ in the top tool bar
- Click on ‘ZFS Volume Manager’ to create a new disk
- Label your disk accordingly
- Adjust the size of the volume accordingly
- Click ‘Add Volume’
Step 7 – Install vSphere Client
- On your Windows virtual, open a browser and navigate to the ip address of your ESXi installation
- You will see a ‘Getting Started’ splash page (as seen below)
- Scroll down till you see ‘Download vSphere Clinet’
- Click the link and download the vSphere Client installer
- Right click on the .exe and select ‘Run as aadministrator’
- Follow the prompts
- After the installation, you’ll see a log-on prompt
- Fill in the credentials used for the ESXi installation
- Use this interface to manage your virtuals
- Use the FreeNAS volume as your storage
– PROBLEMS ENCOUNTERED –
There were several road blocks that I ran into during the course of this experiment. The steps described above outline what was done to complete the install after getting through the hurtles. So I’ll briefly describe some of the things I ran into, in case you have the same issues.
First and foremost, my new computer would not boot to the USB stick. The problem was the UEFI settings in the BIOS. In addition, after I got it to boot from the USB stick and installed the ESXi software, future boots did not work. The reason for this was the formatting that occurred during the install. ESXi installs a GRUB, and for some reason, this PC only likes MBR formatted sticks. Hence, the extra command before the install (formatwithmbr).
Also, I was originally going to install ESXi version 5.1, which I already had on a DVD. When it was unable to recognize my network card, I added a PCI-E network card to the computer that was accepted by the installation. It was a generic card, so some generic drivers must have been included in older versions of the ESXi software. When I made the decision to go with the latest and greatest version 5.5, that driver support went away. I attempted to create a new .iso from a GUI customizer, but that failed due to a bug in the software. That’s when I moved on to the scripted strategy.
Lastly, I tried different ways to create a ‘datastore’ used to house the virtuals. Since my USB stick worked, I figured the drivers were good enough to recognize an attached USB 3.0 hard drive. I was wrong. ESXi doesn’t have that capability as of yet. As I mentioned earlier in the post, it’s an enterprise level software so they’re not planning on big businesses plugging in little hard drives to secure their data. I also attempted to use my Apple Time Capsule, but didn’t waste too much time on that solution. A password is required to connect and I didn’t see any prompts for the ESXi data stores, and gave up on that option rather quickly. I might have been able to make it work after a while, but creating a virtual FreeNAS was the quicker answer. In theory, it will perform faster than the Time Capsule anyway due to the attached storage on the Time Capsule being USB 2.0 which is not a good idea.
– FINAL THOUGHTS –
If you love to learn, as I do, this is the perfect project for you. You will touch the physical layers of the computer, the BIOS, .iso creations, virtual computing, and so many other things. Don’t be afraid to screw it up and start over either. Sometimes, that’s the best way to learn. On this project, it’s as easy as resetting the BIOS, burning another DVD, and starting from scratch. The USB stick will be formatted every time you install ESXi, so you don’t have to worry about that part. When I was done, I had four different versions of the ESXi install DVD. But you know what I say … WHAT IF AND WHY NOT?!?
Always remember… WHAT IF AND WHY NOT?!?