What is Virtualization?
Virtualization is the process of making one thing look like another. For our purposes we are referring to the ability of a computer to be split into multiple parts where the parts are (relatively) indistinguishable from the whole.In our case we are interested in running multiple Linux environments on a single computer.
Some virtualization products will allow running Linux and other operating systems simultaneously (Sun’s Solaris, Microsoft’s Windows, etc.)—our focus is Linux so we will generally ignore these options.
The Arguments for Virtualization
Increased Utilization
Today’s computer systems—multi-core CPUs, gigabit network, many gigabytes of memory, large disk subsystems—have more than enough power to run many programs simultaneously and reliably.
Large businesses however are accustomed to having dedicated environments for each application, this approach increases security and simplifies planning as there is reduced (or no) resource contention. Due to this one application per server deployment model, the majority of systems are grossly underutilized. CPU utilization below 10% is normal.
By virtualizing the physical hardware so that many “servers” can run simultaneously on the same physical machine we can drive utilization much higher, to 50% or more.
With each virtual machine still only utilizing it’s 10% of CPU a single physical system should easily support 5-10 virtual servers without any performance issue for users of these machines – assuming the virtual machine solution in use offers sufficiently low overhead.
While we more effectively utilize our servers by virtualizing them we also retain most of the security benefits that dedicated environments provide and we can (given sufficient planning) also provide resource guarantees.
Rapid Deployment
Deploying a virtual machine should take very little effort. The effort of assembling a server, racking it, powering it up and initial testing is required once per physical server and not all for virtual servers. With the physical machine and virtualization software in place deploying a new virtual server should take a few minutes at most, seconds in some cases.
Keep in mind that you are likely to have more “servers” in the virtual world than you would in the physical deployment model simply because the barriers to creating a virtual server are much lower than for deploying a new physical server. If you haven’t automated your server deployment, management and maintenance yet, be sure you do it before (or during) the move to a virtual environment.
Software Savings
A lot of enterprise software is licensed per physical CPU or per physical machine. Many software vendors maintain this model even when virtualization is used. As an example, if you run 10 copies of Redhat Enterprise Linux on a single physical machine you would only pay one license to Redhat.
Hardware Savings
Run 10 servers, buy 1. Quite simple.
Space, Power and Real Estate Savings
Run 10 servers, power 1 server, provide air conditioning for 1 server and provide space for 1 server.
Improved Maintenance Capabilities
Some virtual server solutions enable the movement of a virtual server between physical machines while the server is still operating.
Live migration capabilities can enable administrators to migrate a virtual server from one physical host to another, even between data centers, as users continue to use services. The ability to move virtual servers uninterupted can reduce or eliminate the need for maintenance windows.
In my opinion this aspect of virtualization is the least mentioned but the most beneficial.
