For two unrelated projects I am looking into server virtualization. Both are for production systems and are not developer or consumer focused. Most of the conversations I’ve had about VMs so far have been in the context of software development and software testing, but I know there are many people out there that have successfully virtualized their production server environment. In talking about this with the people I’d be working on these projects with, here is a list of pros and cons we came up with based on what we’ve heard or read here and there — none of us are VM experts.
Pros
- Can setup so that data is on one drive and OS/apps are on another, with each virtual drive being a separate VHD (virtual Hard Disk) file. With that, we can easily backup the data drive separate from the OS/app drive, and in the event of a major problem, we can restore one without the other. This can also be done with physical hardware, but we do not have access to the physical hardware.
- Can create multiple virtual servers. For example, we can put e-mail on its own server, SQL Server on its own, and web on its own. We can then run all three VMs on a single physical machine. If we tax the limits of the physical machine, moving one of the virtual machines to another physical is a simple file copy (for the most part).
- Backups and restores of entire servers or disks are file copies.
- If we have two physical servers we can schedule regular backs from one to the other and in the event of one physical server going bad, we can turn on all the VMs on a single physical server while repairing/replacing the first physical server. Things would run more slowly, but at least they would be up.
- We can test in other environments, such as Linux/Apache/Mono in a virtual server without having to have new hardware.
- A problem with one virtual server will not affect the other servers.
- Adding more servers is easy. Make a copy of one and change a few settings.
Cons
- Takes up more disk space as there are multiple copies of OS and some apps — installed for each VM.
- I would guess that running all three VMs (from the example above) on a single real machine would be less performant that running the three services directly on the real server.
- Multiple licenses to OS/apps are needed. Multiple licenses = more $$$.
Questions
So based on what I have here so far, I have a few questions for my readers.
- What pros and cons have I missed? What pros and cons have I listed, but are incorrect, or have significant caveats?
- Can anyone provide any real world advice, info or data that would help us determine if, how and what we should virtualize?
- Are there some services that should not be virtualized? POP3 e-mail? Exchange Server? SQL Server? IIS? If so, why and under what conditions? Is it OK sometimes, but not in certain cases?
- How much does the load on one VM affect the host? What about the other VMs?
- What about the host server? Minimum hardware specs? Recommended hardware specs? How do I calculate what I need? Do I simply add the specs of the VMs to calculate the specs of the host?
- Microsoft Virtual Server? VMWare Server?
If you have anything to add, please leave a comment here or contact me here or reply on Twitter. I know there is a ton of info out there, but since this is not my area of expertise, I’d prefer to hear from someone I know who knows — even if what they share is simply their approval/disapproval of another source of information.
Thanks.