A List of Reasons to Virtualize
The benefits of virtualization are many, so following we have created a list of reasons for and benefits of virtualization:
• Virtual machines can be used to consolidate the workloads of several under-utilized servers to fewer machines, perhaps a single machine (this is server consolidation). Related benefits of server consolidation are savings on hardware, environmental costs, management, and administration of the server infrastructure.
• Running legacy applications works well with virtual machines. A legacy application might simply not run on newer hardware and/or operating systems. Even if it does, if may under-utilize the server, so it makes sense to consolidate several applications. This may prove to be difficult without virtualization because applications are not usually written to co-exist within a single execution environment.
• Virtual machines can be used to provide secure, isolated compartments for running untrusted applications. You could even create such an execution environment dynamically as you download something from the Internet and run it. Virtualization is an important concept in building secure computing platforms.
• Virtual machines can be used to create operating systems, or execution environments with resource limits, and given the right schedulers, resource guarantees. Partitioning usually goes hand-in-hand with quality of service in the creation of QoS-enabled operating systems.
• Virtual machines can provide the illusion of hardware, or hardware configuration that you do not have (such as SCSI devices, multiple processors, etc.). Virtualization can also be used to simulate networks of independent computers.
• Virtual machines can be used to run multiple operating systems simultaneously: different versions, or even entirely different systems. Some such systems may be hard or impossible to run on newer real hardware.
• Virtual machines allow for powerful debugging and performance monitoring. You can put such tools in the virtual machine monitor, for example. Operating systems can be debugged without losing productivity, or setting up more complicated debugging scenarios.
• Virtual machines can isolate what they run, so they provide fault and error containment. You can inject faults proactively into software to study its subsequent behavior.
• Virtual machines make software easier to migrate, thus aiding application and system mobility.
• You can treat application suites as appliances by "packaging" and running each in a virtual machine.
• Virtual machines are great tools for research and academic experiments. Since they provide isolation, they are safer to work with. They encapsulate the entire state of a running system: you can save the state, examine it, modify it, reload it, and so on.
• Virtualization can enable existing operating systems to run on shared memory multiprocessors.
• Virtual machines can be used to create arbitrary test scenarios, and can lead to some very imaginative, effective quality assurance.
• Virtualization can be used to retrofit new features in existing operating systems without "too much" work.
• Virtualization can make tasks such as system migration, data backup and recovery easier and more manageable.
• Virtualization can be an effective means of providing binary compatibility.