Sunday 20 February 2011

Why I (mostly) use the Debian Linux distribution when a Linux box is needed

I have found reason to question why I use the Debian most of the time when the solution I am working dictates the use of the Linux OS. The answer is usually a question of footprint, or size of the installation.

When I first installed Linux for something justifiable I hi-jacked a desktop PC that was used by someone who had recently left the company.

The machine started off as a internet gateway/firewall using a 33.6Kps modem. It began evolving into a lumbering beast as I added a SMTP and POP3 mail server. Internal only DNS server, swiftly followed by a DHCP server. Then I added an internet proxy (Squid). Samba went on when I needed somewhere "out of the way" to put software network installation files. Added cron jobs to generate emails and net send messages to remind staff to perform tasks. Apache to serve a company wide home page that contained company relevant links (it would too much of a stretch to call this an intranet). I started writing bash scripts to report internet usage. Used PHP on the "intranet" page to provide daily updates on the progress of the companies software development and testing (the actual mechanics of this have been long forgotten, but I definitely used PHP).

In essence the thing became unmanageable. I realised this was the case the first time I came to upgrading the thing. The reasons for were twofold. Firstly there was simply too many services on the one machine for downtime not to become an issue. Secondly I hadn't documented any of of what I had done.

This was in the days before virtualisation and being a small company it was difficult enough to get my hands on the machine in the first place, it was very unlikely that management would fork out for further machines when I had been previously been able to make do with one.
So for the next few years I stumbled along taking the pain when it become appropriate or necessary to upgrade the OS on this box, but in the main the machine just ran and ran.

I saw virtualisation come along in the form of VMWare Workstation for NT (I used the beta, then bought a licence when it was released). Then came GSX server, then ESX server. What a great invention, a sandbox OS running on top of your desktop OS, if it crashes, you can just restart the application that was running the sandbox, what a great opportunity for software testers.

Then I noticed an open source project called called Xen. After some research I was able to get it running multiple virtual machines on a single box, with some of the functionality of of ESX. All of these VMs ran Debian and I was amazed at the small footprints of these installations.
This allowed me to dedicate VMs to particular tasks and not affect the other VMs when one of them needed upgrading. Now this may sound like old hat, but at the time this flexibility was amazing, not to mention the fact that the users got so used to systems with high up-times and very little noticeable scheduled downtime. I was also able to use good old bash scripts to create and snapshot VMs for upgrade testing.

I had kept an eye on XenSource which was the commercial side of the open source Xen hypervisor, but it seemed to cost too much to justify for our companies usage.

I dabbled with VMWare Server 1 & 2 when they came out as they were effectively a free version of GSX. I wrote some custom bash scripts to create LVM partitions for VMs which worked out well because we had to add local hard disks to the box as requirements grew.

Citrix brought XenSource and shortly after released a free version of XenServer (instead of being limited to small numbers of VMs).

XenServer was almost enough for me, but there was one thing missing, the ability to move a VM from one physical host to another, with the next version of Xenserver that is what we got.

So I asked management for a SAN and some new servers, this was refused due to funding elsewhere. So I sat and thought about what I could do on a shoes string and came up with re-purposing some old Desktop PCs that the development team had just had replaced. Buying in a cheap iSCSI disk array I was able to create a Xen cluster of 5 machines that more than covered all our ageing ESX, XEN and VMWare Server VMs. While moving these VMs to this new environment I was able to appreciate the effort involved in transferring large VM images around. Some of these VMs were Windows boxes and necessitated large images, others were CentOS installs bloated with large amounts of un-needed packages. The Debian VMs were small and although I ended up rebuilding the machines instead of moving them I settled on 2 templates for the Debian boxes, one with 2GB storage and one with 8GB storage. Most of my Debian VMs are 2GB and I have since gotten rid of all other flavours of Linux in preference of Debian.