Tuesday, May 4, 2010

On Virtualization

Back then, datacenters has been filled with racks and racks of servers serving different functions. Most datacenters today are still setup in such a way that for different services such as mail, web, file storage are kept in separate physical boxes.

The problem with this scenario is, primarily, the infrastructure cost. If you're a small company tight on budget, its a pretty big investment to follow this setup. Imagine buying a mail server, a web server, file server, app server, test development server, redundancies.. The list goes on. Also, it is a headache to maintain.. What if you need more RAM in your app server and your web server is underutilizing its resources? Are you going to pull down the server and transfer memory modules from one physical server to another?

Power consumption is also a problem. Servers, by nature are power hogs. They suck up huge amounts of electricity and maintaining a 1 rack data center would be a big pain in the wallet.

The good thing about technology today is the popularity of virtualization. In a nutshell, virtualization is putting all those servers in one box. Spawning a server wouldnt take 5 minutes, installing operating systems wouldnt require you to get up from your seat and stand in front of the console.

Ever since I started taking care of server class machines, the first thing I tried is to install a virtual machine manager. Ive picked VMware ESXi, its a free but limited version with its big brother called VMWare ESX. I currently use a Dell PowerEdge server with several Windows and Linux machines. There are other virtualization managers out in the market, Microsoft has its Hyper-V and theres the other free alternative called XEN. I opted for ESXi because of its simplicity in setting up and managing. Sadly, there is no web based option to manage your servers and the client is only Windows based. A good bargain nonetheless since it provides pretty ample features which could help you manage multiple servers in one box.

ESX is a bare metal installation. This means that ESX is the only thing installed in your server.

Image courtesy of vmware.com

Bare metal installation removes the need for a host OS, a host OS is supposedly the one acting as the mother of all the virtual OSes or called guest OSes. An example of a host-guest type of virtualization is running Windows on top of your Mac OS using Parallels or VMWare Fusion. The problem with this scenario is the resource allocation to the guest OS is sometimes secondary. Priority still goes to the host OS which drives all the guest OSes.

A bare metal hypervisor (the virtualization manager) removes all this biases. The VMWare ESXi hypervisor could be installed from a CD and takes up so little space. Once the ESXi has been installed and booted, all you can see in your machine is some instructions and a link on where you could get the client. Thats about it. No fancy graphics, no unnecessary applications hogging the resources.

Once you obtain the client, you will be greeted with a login page in which you will need to input your server IP or host address and login credentials.

After you login, you will see a nicely laid out control center where you do all your magic. Information about your servers are listed on a tree on the left and particulars are on the huge window on the right. Some of the controls are above and a quick event log is located at the bottom.

For starters, if you havent setup any servers yet, spawning new virtual servers is like a walk in the park. Theres a wizard to help you with that or you could always select custom to fine tune your virtual OS.

Then you can pop out a console view of the console which is what you are supposed to see when you're in front of the computer. You can even set BIOS settings from the console window if you like.

The most appealing feature of ESX/i I liked was the ability to monitor the health and performance of your servers. From CPU, to memory, to network even down to the hardware status. You could monitor if one of your power supplies are not getting power.. Its like a glorified control center for all of your servers.

The advantage of a virtualized setup lies in its ability to easily create virtual servers. Lets say you need a quick test server to infect with ugly viruses to evaluate a certain anti-virus application.. Or you need a repository server for a 2 month project.. Or if you need to test a new operating system.. The list goes on.

The most useful feature of a virtualized environment is the ability to create snapshots. Snapshots, well based from the word, is like a picture of your current OS. Imagine accidentally messing up a servers configuration and you've pretty much misconfigured everything to such a huge mess. One would normally reinstall and reconfigure, but if you take a snapshot, you could always revert back to that snapshot if things go wrong.

Virtualization is a blessing to all those people working in the datacenters. Not to mention how much power and you would save by running just 1 box instead of 5.