What's the point of running a virtual instance?
Solution 1:
The major advantages are:
0) if most of the 20 servers are idle most of the time, they will have no problem co-existing on five actual hardware servers, and you save the cost of 15 hardware servers.
1) if the servers need to be available all the time, you can use the "live migration" features of VM systems to migrate the virtual servers from one hardware server to another. That way, if you need to take down servers to upgrade the OS kernel, or install more RAM, or whatever, you can simply migrate the virtual servers from machine to machine as you do the work; you can take down all five servers and bring them up without any interruption in service on the virtual servers.
2) Security. If each service you offer (email, web, printing, database, etc) lives in its own virtual machine, then it's harder for an attacker to take them all down at once. If an attacker manages to get root on a server that is running a bunch of stuff, he can mess with all the stuff; if he manages to get root on a virtual server that contains only the web server, he can only mess with the web server.
3) If you have a virtual server that suddenly becomes very very busy, you can live migrate it to a more powerful hardware server. Virtual servers let you better trade off your faster hardware and your cheaper hardware.
4) If you have software that is very sensitive to OS setup, or otherwise difficult to install, you can get it installed in a virtual machine image, and then keep running that same image even as the world evolves around you. You can upgrade the OS, upgrade the hardware, keep on upgrading stuff, but the virtual machine stays the same. I suspect this is more of an advantage for people running old desktop software (especially really old games) on desktop VM systems.
Just do a Google search for "advantages of virtualization" and you will quickly find several long articles discussing it.
Solution 2:
There's multiple reasons to do this.
- Flexibility for the future. If you start off with each type of server as a virtual instance, later when you need to scale up one of the types it's trivial to peel it off onto something else. If you start with all services running on one regular server it can be difficult to separate one thing. Which service is it that needed that one special tweak again?
- Conflicts. Some software doesn't play well with other software. Anything that needs a special kernel tweak, for instance.
- Having each VM/system have a single job can help reduce complexity.
- Depending on your setup, redundancy can be one. If you have 5 physical systems running 20 VMs/instances that can actually fit on 4, you might be able to migrate the VMs all off of one system, then shut that one down to perform maintenance. Do that round-robin and you might not have downtime, or downtime that's measured in milliseconds. Or if your 20 virtual instances are providing 5 different services so that everything is redundant, your services aren't affected (or are only affected for milliseconds) if a physical server goes down.
There's plenty of other reasons to virtualize, but those are the ones I could think of off the top of my head.
Solution 3:
Why would you do this?
I agree with most of the other responses. But I believe the biggest reason asides from the technical is purely financial. It's cheaper to virtually run machines both from a purchasing standpoint and costs over time (maintenance, electricity, parts, etc.). If you do the math, you're essentially eliminating a lot of hardware while still maintaining a reliable level of uptime/redundancy depending on all the factors at play. Why pay for more hardware when less will work equally as well? And in this economy... you'd hope the IT dept. was smart enough to move towards virtualization.
What advantages does this have?
Asides from the cost, it's more flexible than a 1:1 host/OS ratio. If you have 5 non-virtualized servers and one goes down or needs repair/maintenance that server is not providing service. This can be critical to a business that requires high uptime. If 2-3 virtualized servers need repair/maintenance, you can do so without the downtime by moving virtual machine guests (the OSes themselves) onto another host without any downtime. Try doing that with a non-virtualized server.
Take your example: "we have 5 servers, with 20 virtual xen instances". Assume that each server has 4 virtual instances (guests). Well, if two of the servers go down for maintenance or an emergency, virtualization can automatically move those guests over without intervention to hosts that are not failing. Thus shifting 8 guests onto 3 other servers. Disaster is avoided. Changes and fixes can be made without interruption in service. Less hardware costs. Users are completely unaware of anything happening at all. Sysadmins smiling as headaches were averted.
Is it so you get the redundancy of multiple servers from only one box or what?
Not "one* box. You need at least two hosts or more. If you do everything in one box, you've eliminated a key feature in virtualization: live migration/failover. If you were a business owner, would you rather spend more money on hardware and still have to worry about possible uptime issues? Or would you rather buy a virtualized solution, spend less money on hardware (and overall costs) while having the benefit of live migration should an emergency/disaster arise?