Playing around with virtualization

I finally got my new work machine. There was some problems in getting it to work, and I was away from the office for couple of weeks. But this week I’ve got to play with it.

The machine

  • AMD Phenom II X6 1090T
  • Asus M4A785TD-V EVO
  • 16 GB of RAM
  • And 1 TB hard drive

Virtual project environments

I don’t want to pollute the host system with different compilers and other project related stuff. Virtual machines provide a clean and easy to deploy system for all developers in the office. One of us builds the environment and then distributes to others.

This machine is kind of hub for everything, that’s why it has so much memory. I can run several virtual machines in parallel without thinking if the machine can handle it. I have already tested it with four guests. They were using Qt Creator to build projects and it didn’t even sweat. Good stuff.

The idea is to build similar machine to our server cabinet to run these same virtual environments in a CI configuration. Then the same environment is used in the CI and in the developers desk in all the projects. It eases running the tests and makes sure that the developers are free to concentrate on the actual work.

Virtualization host

The host system is Ubuntu server edition with KDE packages. I’ve now played around with the Ubuntu server edition for couple of weeks and it seems better for my taste than the desktop edition. I don’t know yet why, but it has this vibe.

In the end I seddled for KVM and libvirt as those provide all the tools I need for now. And I don’t have any complaints.

At first I was thinking of using VirtualBox, but it wasn’t the best choice for me. It has all the fancy graphical UIs and stuff and I’m not that big fan of those features.

Guests

But I’m big fan of virtualization in the server environment. It makes everything so easy to handle. I don’t have to have physical access to the machine on a regular basis as I have full console acceess thru the host system. Also it helps that the same image can be run in my desktop machine, server in the office, and then in the server in a datacenter in some secure location.

In the office I now have several virtual servers running. Each only having one specific purpose. There is CI master, and several slaves for different environments. Terminal server, and mercurial/git hosting, and of course fileserver all running in separate virtual servers. And then additional to those we have occasionally running some project and testing environments.

One cool idea I have is to run stress test and network simulation with multiple virtual machines simulating the network setup.