The two Linux machines I use at home for testing purposes have outgrown their useful life – they take more power than they’re worth to run, replacement components are only available as refurbished items, and the amount of space occupied in my room is disproportionate to their use. What follows is an initial attempt to configure a basic Debian file server.
I decided to go with a standardized server rack so that I could locate my (future) switches, servers and other components in one place – namely a closet. I’ve ordered a 13U table top/wall relay rack from Primespec, a local supplier of cables and other electronic equipment. Once I take delivery of the rack, I’ll follow up with my impressions.
Originally, I was going to migrate an existing Pentium D computer into a standardized 1U server case. After research, moving current equipment into anything smaller than a 2U case is an exercise in cost increases – since you have to locate processor heatsinks, rackmount-compatible power supplies, and motherboard backplates that work in the environment.
Since my usual supplier NXSource didn’t have anything in stock that fit my needs, I went to Newegg.ca and purchased an Asus RS100-X5/PI2 barebone server. The server comes with a reasonably spacious 1U case with capacity for two 3.5″ hard drives and one slimline DVD drive, P5GC-MR motherboard, 1U heatsink for 65W processors, and a 180W 1U power supply. It does not include sliding rails or the half-height DVD drive – both features I didn’t immediately need.
In my case, I already had a 1TB Western Digital SATA hard drive, so I just needed some RAM and a processor. I bundled a Core 2 Duo E7500 (2.93GHz with VT for better virtualization performance) for another $31, which is cheaper than even the chintziest Socket 775 Celeron.
The board also supports dual-core Xeon 3000-series chips, but the Core 2 was too reasonable to pass up. Some of the specifications for this motherboard indicate that it only supports 2GB RAM, but I’m running 4GB DDR2 (2x2GB sticks) without a problem. The board also does not have an Intel RAID controller, so you’ll need to use a software RAID solution for this capability.
My operating system options for this server were:
- Windows Server 2008: Decided against another Windows machine as this particular system will be headless and not directly connected to a monitor. I also don’t have any more Server 2008 R2 licenses, and would have to use the older 2008 version of the OS.
- Windows Home Server: Since the server chassis only has two drive bays, much of the drive pooling and data mirroring features would be lost for this particular machine. I also lacked an available license for this OS, and the next version of Home Server should be out sometime this year.
- Linux: Debian stable was the right choice for this server’s particular purposes. It’s well-tested, robust and should handle my webserver, database and file serving requirements. It can also act as an AFP server for my MacBook Pro, which subjectively seems to perform much better than SMB sharing for networked iTunes libraries. With Linux, I can also set up the system as a router, proxy server, Squid cache, or SVN server with ease. Finally, the awesome VirtualBox package has a terminal-only interface, so I can run an XP virtual machine for our accounting system.
Since I opted not to purchase a slim DVD drive, I used UNetbootin to transfer the Debian stable 64-bit netinstaller to a USB stick. (This version even works on a 128MB stick.) The server automatically boots to USB or an installed DVD drive.
Debian installed quickly and I accepted most of the defaults, choosing LVM for the partitioning setup in the event I want to add another drive to the server. One of the main issues I encountered was hard drive position assignment – a combination of the BIOS, USB stick and UNetbootin preparation assigned the USB stick device identifier /dev/sda and the hard drive as /dev/sdb. This causes issues with the default GRUB installation and fstab file.
Fixing Installation Problems
To avoid the above pitfalls, follow these instructions:
- Select “No” when the Debian installer asks to install GRUB to the master boot record. Instead, specify /dev/sdb.
- Use the “Go Back” option in the Debian installer just before it wants to reboot, and start a shell. In /target/boot/grub, use nano to edit menu.lst. Under the “## End Default Options” section, change both instances of root (hd1,0) to root (hd0,0).
- While still in the shell, use nano to edit /target/etc/fstab. Change the line for the /boot partition from /dev/sdb1 to /dev/sda1.
- Exit the shell and choose the “Finish installation” option to reboot the server.
I’ll be following the guides on the Linode Library and Slicehost Articles sites to further configure the server. Other than that, suggestions for awesome console applications like irssi are always welcome!