Back when I was a student I used to run a home server to provide various services for my housemates and I, the 'server' was an old desktop I had spare at the time and sat in a cupboard running 24x7x365, well that was the plan anyway... Everything ran fine for 4 or 5 months before it started to behave very strangely indeed, I spent many hours diagnosing some pretty weird and often unreproducible issues and in doing so learnt that normal desktop hardware is not intended for 24x7x365 usage, particularly cheap power supplies and hard disks of which I went through several of each during this short period.
When it was time to pay the electricity bill we also discovered that standard desktop PC's consume an astonishing amount of electricity and therefore cost lots to run 24x7x365, this wasn't a very welcome surprise for a bunch of skint students!
Eventually I grew bored of replacing el cheapo disks and budget power supplies and retired the home server, I moved a few of the services (eddgrant.com etc) over to a linux VPS. The VPS was fine for modest resources, but for the price I was able to pay was very constrained both in terms of disk space (~ 5GB), RAM (~316MB!) and firewall configuration (default ports only unless I doubled my monthly spend). So whilst the VPS was able to run eddgrant.com it wasn't able to take on a lot of duties that the old server took care of (backups, file serving etc).
After a while I started looking around for some suitable hardware to build a new home server on, I have somewhat of a fascination (err... obsession?) with electrical efficiency and saving the amount of electricity used at home so I wanted to build something which fitted the following requirements:
- Extremely low power consumption: <= 10 watts under load (or as close as possible).
- Robust enough for 24x7x364 operation.
- Near silent operation.
- Capable of taking on routing and modem duties i.e. replace my modem/ router to further reduce electrical usage at home.
There seem to be quite a few devices in the low power arena, each with it's own pros and cons. Certain things that one would take for granted with a desktop/ server grade machine, such as having a wealth of expansion slots or input/ output controllers becomes less common with lower power devices, the result being that you really need to plan carefully in order to be sure that the device can provide the required interfaces for the task at hand. Having said that I was impressed that there are several really capable low power devices which provide a reasonable range of connectivity/ expansion.
I looked at the following devices:
Soekris NET5501, CompuLab fit-PC2(i), Netgear ReadyNAS
The NET5501, is based on a single core 500 MHz AMD Geode CPU and comes with up to 512MB RAM. It has 4 10/100 Mbit ethernet ports and a SATA 1.0 controller. It is incredibly power efficient drawing about 7 watts under load. It is intended for industrial application and so is built robustly, it also has 1 x PCI and 1 x MiniPCI slot so could take on routing and modem duties with the appropriate card. The presence of the PCI slots makes this device incredibly flexible in terms of it's configuration. However one frustrating thing about the NET5501 is the small amount of RAM, being limited to 512MB, is really a deal breaker for me. Also there is a distinct lack of any documentation for the 5501 which concerns me (the only available documentation refers to the 5501's predecessor, the NET4801).
fit-PC2(i) is based on a single core 2GHz Intel Atom Z550 CPU and comes with 2GM RAM. It has 2 10/100/1000 Mbit ethernet port and a SATA controller and an internal 9.5mm SATA bay for an onboard HDD. It draws 8 watts under full load (excluding HDD) and, whilst not quite as robust as the soekris is built sturdily for continual use. The fit-PC2(i) also has a build in SD card slot and onboard sound and graphics which, while not required for a headless server hugely simplifies initial O/S installation. It also has onboard 802.11n WLAN and 4 USB 2.0 ports for further expandability.
Re-evaluating my priorities.
I initially prioritised having a device which could replace my router/modem, the most likely candidate for this would be to obtain a PCI ADSL modem card and a MiniPCI wireless access point card. From the devices I found available the only one which had the available expansion for this was the Soekris, costing up the options looked prohibitively expensive, furthermore, moving routing/ modem to a single box would also create a single point of failure in terms of internet access from home, which could be an almighty pain if the box went down unexpectedly. With this in mind I decided to remove this requirement and leave my existing router in place for the time being.
In order to be able to run several services on the device I was concerned that I was going to need a reasonable amount of RAM (reasonable being >= 1GB in my estimation). The Soekris does not allow increasing of RAM from it's 512MB stock, unless you want to get handy with a soldering iron, this was a limitation too far for me so the Soekris was eliminated from the runnings. It appears to be possible to increase the RAM in the ReadyNas but I felt that the power consumption of the device was too high for me to be willing to run it 24x7x365 which essentially ruled it out. This leaves us looking at the FIT PC, it comes loaded with 2GB of RAM, draws an absolutely tiny amount of electricity and has reasonably good explansion options, albeit based more around USB devices than PCI/ MiniPCI. It is also the only device which has onboard graphics which makes installation and initial configuration dead easy compared to the “fun and games setting baud rates with a serial cable” required to get a Soekris up and running. The only area that the FIT PC doesn't do so well is when compared to the native RAID and multiple disk capability of the NetGear, however having multiple disks creates an issue of power consumption so this is something I'm wiling to work around, perhaps with some more creative/ robust backup strategies. So that was it, decision made, time to order a fit-PC2(i).
The FIT PC arrived in no time, I've named it PICO after it's PICO-ITX architecture and the fact that it's absolutely tiny!
This is PICO:
So what am I going to do with it?
Well, I want to squeeze every last CPU cycle out of it, so I plan to run as many services as feasably possible whilst ensuring that each of the services provides an adequate response/ user experience. My initial ideas being:
Jenkins Server for my personal projects
Master backup server
LDAP Schema master
Music/ Video fileshare
eddgrant.com svn repo
MythTv master backend running MythWeb
Puppet master server
ssh/ sftp server and point of entry to home network
I think that's a reasonable list to start off with. I think it could be quite an interesting project to see how it copes with the running of each of the above so will probably blog further entries as I get each bit setup.