Server Virtualization - Concepts
By pallab on Oct 13, 2008
Over the past couple of years, I have been visiting customers ranging
from enterprise to small and mid size web-tier companies and any
customer in between except Telco customers in an attempt to understand
how Virtualization can help them. I find several use cases and some
Why Deploy Virtualization?
- It can be deployed in a way to meet employee desktop requirement, thereby reducing the administrative overhead
of managing lot of single systems
CPUs have become faster with more cores per socket; many application are unable to take advantage of all the cores on these powerful chips. So customers want to run multiple applications on these systems without affecting specialized and some times conflicting configuration requirements needed for each application.
- Data centers with lot of client facing servers are consuming too much power distorting the power-throughput ratio significantly. Hence customers want to collapse these servers in to few large systems
- It should be able to run old applications on newer hardware
term Virtualization span several technologies that the industry has
offered so far. At a very basic level, I would classify Virtualization
Technology as a way to share the resources of a single server system across multiple users. The users can be human beings and or application software. The resources are generally the components that make up a computer viz.
CPU, Memory, IO and Display/Input devices. Hence at a very basic level,
the Virtualization technology must actively participate in
share-management of these resources.
I should make a distinction here between Partitioning a large system (for eg. Domains of a Sun Fire 6900) into Domains, where none of the above resources are shared (also sometime referred to as Hard Partitioning), and, Server Virtualization (the term Domain is also used in this context) where at least some or all of the resources are shared with active share-management in place. The term Domain encompasses the above set of resources with some settings viz. OS, patches, tunables, software - that can be different from another Domain and yet co-exist in the same Physical system.
While Virtualization is just one way of doing Server Consolidation, the availability of so many Virtualization Technologies with so many options have created some mis-conceptions and confusions.
- Can I really re-deploy my application on a new domain without affecting the end-user experience. The short answer is no, unless it was also possible to do so in a non-Virtualized environment.
- I can create lot of domains in a single system creating a situation where CPU and Memory can be over-subscribed. What about performance?
- Can I move my Guest from one Virtualization technology to another? The answer depends on several factors
- The Instruction Set supported by the Source system and target system should be same, unless the Virtualization technology on the target system can emulate Source System Instruction Set.
- If the Guest Operating system is un-aware that it is running in a virtualized environment, then it should be possible to do such migrations.
- I can setup or move domains around and bring up my application in no time. Some times that is true; it will depend on how complex the IO environment is.
- I can use the same Disk device or Boot Image to
boot all my domains. Sharing a Boot Image is not possible in
Virtualization. Sharing a Physical Disk is possible with some caveats.