What is the perfect setup for a small Linux virtual server?
Solution 1:
Honestly, I don't see what benefit you would get using any virtualization technology.
- You are still using one server, there is no reduction in hardware use.
- As you have only this one server, the possible benefit of being able to migrate virtual machines (maybe even while running) doesn't apply.
- The amount of work necessary to keep the virt. servers running actually increases, as you have to do the base administration for the hypervisor plus every image, while not having enough machines to gain much by automating common tasks. Also, you will have the supervisor as an additional layer that requires your attention.
- Meanwhile, the benefit of having web and mail services on different machines is quite small with such a small userbase, and you will still need the same amount of care to keep them safe and sound, even when logically separeted.
In my opinion, virtualization is a cool technique which doesn't fit everywhere, and going virtual just because everyone does isn't a good idea (again, in my opinion).
Solution 2:
Since you are running the same OS, Linux, on both the host and the guest VMs, I suggest that you choose from User Mode Linux, or OpenVZ.
UML began life as a modified Linux kernel that could be booted up as a user mode process. It has been widely used in hosting companies, and by people who need to emulate large numbers of VMs on a single server. OpenVZ comes from a more enterprise background and is more modeled on Solaris containerisation. The idea is that you can partition your system and install software in a container that does not effect the rest of the system. To remove the software, simply delete the container.
Have a look at the two websites before you decide. I think that OpenVZ seems to be a better fit for you, but a lot depends on your future plans, i.e. it is best to choose the one that you might be able to use for work in the future.
Both UML and OpenVZ are quite different from XEN and KVM. In a nutshell, XEN and KVM are full-blown virtualisation hypervisors that allow running any operating system supported on x86 hardware, but UML and OpenVZ are an extension of the concept of a chroot jail, that allows the isolation of different Linux processes. If you plan to stick with Linux only, then it's best to avoid the complexities of XEN and KVM.
So OpenVZ and UML extend the functionality of a Linux system, but XEN or KVM let you turn it into a non-Linux system that runs MS-Windows, FreeBSD, OpenSolaris and others.
If you want to run XEN, then you should run a distro that fully supports it such as OpenSUSE 11.