Wednesday, August 26, 2009

Evolution of a Home Server System

My concept of a home server system has evolved over time.

I got in to a home network early on, long before I had broadband internet or even a modem connection shared via a proxy server. The purpose was sharing files and printers, playing the occasional networked game. The network was peer to peer.

I originally decided that I needed a server right after I lost a hard disk on my home computer system containing irreplaceable information, and decided right then that one fatal hard disk crash was too many, and I needed to be fault-tolerant in the future. My initial implementation of a server was with the oldest, slowest system that I had, a 486 with 20 meg of ram, to which I attached a SCSI disk farm featuring three 6 gig hard drives made into a RAID-5 array. Windows NT Server 4.0 was my choice of operating system, influenced in no small way by similar systems I was working with professionally. This served me well for quite some time, until the point where I outgrew spreadsheets as a repository for data and moved into databases.

I had dabbled in Microsoft Access for a time, but all of a sudden my databases proliferated and multiplied. My choice of a file server with ample (at the time) storage capacity but minimal computing power became quickly overwhelmed, frequently maxed out, and especially at a time when I began encouraging the whole family to take advantage of fault-tolerant storage. So it became necessary create a new server system.

I built my next one from scratch also, a barebones system with state-of-the-art CPU and disks, along with Windows Server 2000. This one fared better at first, however my databases continued to expand.

At this time I began dabbling with Linux, Slackware to be specific. I had purchased Slackware 2.2 a number of years ago, only to set it aside when I could not get X-Windows to work correctly. I have had rather extensive experience with X-Windows, DEC Windows to be specific, and always thought it would be fun to dabble with at home. So now, having been laid off and plenty of time on my hands, I decided to dabble with it again, having about the same amount of luck. I decided an upgrade was in order, and purchased the latest Slackware, 10.2. Bundled with this was MySQL, which I quickly discovered and began to dabble in this as well. It took time, but eventually all my Access databases were ported into MySQL, and I began to explore Apache and PHP as well.

My web server was hosted on a laptop, an old Thinkpad initially, and it did quite well at first. I also ran MySQL on this laptop, this being my Slackware playground. I generated a number of testimonials as to the small footprint a LAMP stack could work within, even as I overwhelmed it eventually. My main MySQL server moved over to the Windows Server system, but even that eventually became overwhelmed as I tested the limits of the system, first with test scenarios and then hosting my ever-growing databases.

A new server system was in order, especially as another desktop computer had crashed, this time with a fried motherboard. My existing server was gutted to make into the new desktop, and I once again bought new hardware. This time I did not even use a barebones platform but completely from scratch this time. I upgraded to Slackware 12.0, used Samba to share the data to the Windows desktops, and put in a Core2 Quad CPU that runs most apps like greased lightning. I consolidated my LAMP stack on this system, and it is working very well. One of my slower pages, a PDF rendering of one of my novels that took three-plus minutes to load via the laptop Apache server, now loads in ten seconds or so. With some of my tables having over a million rows, this computing power is serving me well.

So you can see how my concept of a server has changed over time, from computing power being irrelevant to essential.