
Mike via talk wrote:
I second the vote for qemu-kvm. It seems to be the swiss army knife. The only thing I've wanted to do with it that I haven't been able to is to boot 1994 Yggdrasil Linux.
The other thing it doesn't do is give you a bunch of virtual machines with collectively more memory than the server has installed. I've had to deal with a box where people had given away 110% of the RAM chips to their various QEMU instances and the server was crawling around on the floor in a very slow and hesitant way. Someone mentioned options: yes, QEMU has a lot of them, and having a script that sets the standard ones and lets you specify just what's different between each one and the next can make starting them a lot easier. QEMU's native commandline can easily start onto a third line on an 80-column screen. Also, do please use kernel bridging and not the userspace virtual switch. If you're running a bunch of heterogenous operating systems, though, QEMU gets you there. I've even seen people use it for Windows. If everything is this-decade Linux then LXC may be an option. It isolates each VM's processes and root filesystem and network interfaces while still sharing memory, CPUs, and (optionally, if VMs are in the same filesystem) disk space. I've run three generations of Debian all under the kernel that came with the latest. If you're also wanting to run eg Fedora then there's a good chance of it just working, or if not you may have to compare kernel configs and build a host kernel that makes everyone happy. LXC lets you run collectively a far bigger party; users have access to all the CPUs and RAM when they have a large compute job, not just the tiny ration the QEMU config sets aside for them. So far I haven't had to configure resource limits on LXC; YMMV. -- Anthony de Boer