Virtualization Advantages & Disadvantages

172
vote

Virtualization seems to be the buzz word all in IT are using these days. It can mean a bunch of different things depending on who you talk to. Refer to Wikipedia for many of the latest definitions. For our discussion let's define it as a technique for hiding the physical characteristics of computing resources in a way in which other systems, applications, or end users interact with those resources. For example, prior to virtualization techniques an administrator would install an operating system (OS) on one physical server and users would interact with that server through only that single OS. Now with virtualization we can install many different OS's on that same server. When a user accesses any one of those OS's he/she thinks they are on their own server, when in fact they may be sharing a server that is running many different OS's on it.

Technically how this happens is through the use of hypervisor technology. A hypervisor is a virtualization platform that lets users run multiple operating systems on one host computer simultaneously. There are two types of hypervisors; type 1 and 2.

Type 1 (also called native or bare-metal virtualization)
The Type 1 hypervisor consists of software that runs directly on hardware similar to how a modern OS runs. VMware ESX is a type 1 hypervisor. ESX is basically a modified Linux OS that runs directly on the hardware.

Type 2 (also called hosted virtualization) hypervisor.
This is software that runs _within_ an operating system. For example you may already have a Windows or Linux OS installed on your server or desktop. This is called the host OS. You can then use a type 2 hypervisor like VMware Workstation, Fusion, Microsoft Virtual Server, among others to run on top of this host OS as a guest OS.

Virtualization has some obvious advantages that make it an almost no-brainer for most IT organizations in terms of justifying a virtualization project.

They include:
1) Better resource utilization. Now you don't have to buy a separate piece of capital every time you have a request for a new server. You simply create a new VM for them and as far as the user sees it looks and feels just like a physical asset to them. In most cases they don't even notice it is a VM they are actually working on.

2) Speed of deployment for new servers. To deploy a VM from an existing template take about 3 minutes (that includes configuring name, IP, and other specifics for the server). Compare this with having to issue a PO, rack the server, make sure there is enough power/cooling, attach a console and the other steps required for building a physical box. It can take anywhere from 1week to 4weeks (depending on how quick you can get the server shipped to you.

3) Save on power and cooling costs. Don't need to run as many physical assets anymore.

4) Load balancing. If a VM is using too many of the physical resources it can be migrated (in real-time with VMotion) to another physical asset.

5) Upgrading hardware without scheduling downtime. If you have enough hosts within your cluster you can migrate all the VMs off one host and spread them to other available hosts. Once all VMs are off the host you can take it offline, upgrade, bring it up, migrate back the VMs, and repeat. This way none of your VMs experience any downtime!

6) Setting and tearing down test environments quickly. Especially handy when you want to test a new app or script. You can deploy a VM in 3 minutes, test what you have to test and blow it away again.

7) Ability to take snap shots of existing states. Since a VM is really just a set of files you can take snap shots and revert the VM to previous states within seconds.

8) Ability to set disks to non-persistent states. This is useful for things like training environment. After training is done you don't want to keep the changes made to VMs for the next class. If that is the case set disk to non-persistent and reboot the system. Any changes made to a non-persistent disk will be gone.

I could list some more but I'm getting tired of writing :)

Some disadvantages:
1) Need to be careful of server sprawl. Since deploying servers is so easy in a Virtual environment you may get carried away with the amount of servers you actually deploy.

2) Some applications may still require a dedicate physical resources. There are case where really memory, CPU, or i/o hungry applications are best on their own physical asset. You have to remember that all VMs are sharing the same pool of resources.

3) Watch out for licensing fees. Make sure the license model works well for what you're trying to do. In most cases its a no-brainer, but do your own due diligence.

4) You'll need to have good tools to manage large number of servers. With virtualization it is easy to start creating many servers. Each one needs to be administered the same way they were in the physical world. Make sure your methods/tools can scale to address server expansion.

5) Backups. When you have lot of VMs on one physical server you may run into challenges assoicated with backing up all the VMs one this one server. Make sure you have enough bandwidth coming out of your backplane to address backup performance. VMware also has a tool called consolidated backup (CB) that addresses some of these issue. The earlier versions of CB had some issues/bugs but I believe the more current versions have corrected the problems and it's worth a look for large environments.

Bottom line look at your application profiles. Most applications are excellent candidates for running in virtual environment. There are some that may not be depending on the characteristics of that app. A good analysis of your current environment and application stacks will help you determine which are the best candidates. These include apps that have low i/o and cpu needs. Large databases may not be the best candidates for VMs. Again it depends. Do your due diligence.

In conclusion, virtual environments will become pretty much standard practice in all data centers. The cost advantages, efficiencies, and productivity gains are just so hard to debate.

Skooliki
--
http://www.outervillage.com

_____________________

If you enjoyed this posting please subscribe to our RSS feed or submit it to your favorite social networks.

None
A comma-separated list of terms describing this content. Example: funny, bungee jumping, "Company, Inc.".

You forgot a good reason for VM usage...

Jim March's picture
46
points

It's called "I have either Linux or MacOSX and need to run one or more mission-critical Windows desktop apps, plus I can use Ubuntu as THE ultimate free kick-butt Windows software firewall from hell..."

:)

This is driving VM on the desktop like you wouldn't believe.

Virtualization benefits for desktop

skooliki's picture
52
points

Excellent point. I totally forgot to include the benefits for desktop OS's. It is true that virtualization has fundamentally changed the way we work with OS's at the desktop level especially for developers. No need to have 3 PCs under your desk anymore to test/install various applications. Need to test a 3-tiered application? Can easily be down with one machine now. Also excellent for sales engineers who want to demo these types of applications to clients.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • Youtube and google video links are automatically converted into embedded videos.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
9 + 2 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.
website statistics