Putting together a cheap Linux raid NFS/Samba server is a great way to centralize files & backups from everyone at home or the office. For many users a NAS is a great way to go because they come pre-configured and do just the one job. However the biggest drawback I see to those devices is the price, not to mention the lack of expansion potential. When it comes to a NFS/Samba file sever any old dual core PC will work fine and you don’t even need much RAM.
The Preliminary Stuff – Finding/Picking the Parts:
This build was made entirely from used parts I had on hand aside from the 6x 3TB Hitachi hard disk drives. To start I need to decide the rough specifications of the machine. In this case I wanted at least a Core 2 Duo, preferably one with a passmark cpumark score of about 2000. I was hoping to use an Intel E8400 or E8500 Core 2 Duo CPU. I decided that 4GB of RAM was certainly sufficient and I picked the case, power supply & extra fan based on aesthetics. However it didn’t hurt that the case had enough room, the power supply was decent and had enough power and even the fan was pleasantly quiet for a non-motherboard controlled molex type connection.
As for the motherboard, the main requirement was that it have 6 onboard SATA ports. This is important as I wanted to run a 6 disk raid. In the past I have built 8 drive raid arrays with twin PCI or PCIe controller cards. Though I do not recommend that as a preferred practice. Sure it works but the possibility for an entire controller to fallout is possible, thereby destroying the RAID array. So, if at all possible I try to stick with a raid that can be run on one host controller. I will admit I am a fan of Intel boards, they certainly do seem very reliable. That being said, it is no surprise that I found the DQ965GF as a perfect fit for my project. This board has 6 SATA ports and though it doesn’t support the E8400 or E8500 it does support many other similar CPUs. I also selected a SIIG PCIe SATA controller card to control the boot drive.
Most of the decisions regarding parts on this machine were a small dilemma. I don’t want to waste tech that would be better suited elsewhere. On the other hand, I have lots of decent machines, shouldn’t my main file sever be nice? Since this is one of my machines that will probably fill a significant roll for a few years I figured I should make it look cool as well as function well. So I picked a Core 2 Quad Q6600 for the main CPU along with 4 matched Crucial 1GB DDR2 667MHz memory modules.
Rosewill Challenger Case
Intel D945xx Motherboard
Intel Q6600 Core 2 Quad CPU
4x Micron 1GB DDR2 667MHz RAM
1x Hitachi 250GB SATA HDD
6x Hitachi 3TB SATA HDD
1x SIIG SATA Raid Controller (for added SATA ports only)
2x 3.5″ to 5.25″ Drive Bay Adapters
Extra Blue LED 120MM Case Fan
Raidmax RX 530SS – 530 Watt Modular Power Supply
Thermal Paste, Screws, Zip Ties etc…
To begin assembly I installed the CPU and the RAM while the motherboard was still out of the case. I had cleaned the CPU cooler and fan earlier in the day. Fortunately this case had a similar Intel motherboard installed with the same standoff pattern so I was able to simply install this one into the case without changing the standoffs. I did not find the I/O shield for this board, but really I don’t care.
Next I started adding the disk drives. I had originally planned to add 4 of the 3TB drives in the lower 3.5″ drive bays, and use two 5.25″ to 3.5″ drive bay converters to install the last two 3TB drives in the top bays. I installed the 250GB boot drive in the bottom 3.5″ drive bay.
After some test fitting and thought I decided it would be best to spread the hard drives out a bit more if possible. I moved the 250GB boot disk into the lower external 3.5″ drive bay. I then went and found a third 3.5″ to 5.25″ drive bay adapter and then rearranged the internal 3.5″ drive bays so there was an empty slot between the drives. The machine now has a nice amount of open air between all of the disk drives.
After installing the disk drives I needed to install the 120mm fan to keep the upper drives cool. This was pretty simple, I just zip tied it to the adapter rails of the uppermost hard disk drive. Luckily the 5.25″ to 3.5″ adapter rails provided enough depth clearance for the fan to fit between the case bezel and end of the adapters. In addition, because it is only connected at the top, the fan can swing up to allow removal of the lower drives. Certainly this may not be the prescribed methodology for installing a second fan, but it has served me well in the past.
In the image above I tried to route the front panel cables along the side of the case bezel. I removed the audio connector wire, as well as the eSATA connector since I find it doubtful I will use either. I have a few of two types of cable management “loops” with self adhesive bottoms that I use for situations like this. I’m not really sure why the case manufacturer didn’t route the cables this way. When new these cases just have the cables run through the 5.25″ drive bays but there is a convenient cable management hole next to the external 3.5″ drive bays.
The Raidmax 530SS power supply was used in a previous project and was in need of some cleaning. I should have done a before and after though I am sure you can imagine. The cleaning worked very well, the blades on the fan look great and the dust inside was easily blown/brushed out.
With the power supply clean my next step was to get it installed. It is often a project to get the cables routed just to my liking. Ideally I’d like this rig to have nice looking well routed cables. Things don’t always work out but in this case the cable routing worked alright – at least for the power cables. Once installed I tested the machine to make sure the fans weren’t too loud and to check out the dual blue front fan.
As you might notice, I installed the SATA controller card for the primary disk drive as well. I also needed to rearrange the drives in the 5.25″ bays. One of the adapters needed to be too far back to clear the fan. However because it was too far back it was pressing up against the ATX power connector pretty hard. In this lower position the drive is pretty close to a capacitor, I must have another drive adapter around here somewhere. One thing I would like to do is to paint the drive adapter shown in the middle 5.25″ bay. I only used that adapter because I don’t think I have any other of the gold anodized type. It is nice because the drive placement matches the other adapter set I have but since I decided to move the third drive to the upper drive bays mid build I grabbed something quick I knew would work.
The final step was to install the SATA data cables. I like to do the drives in order with the SATA ports. For example, make the bottom drive connected to port SATA0, and move up in order so that the top drive is port SATA5. That way if you do get a failed drive, say /dev/sdd, you can be pretty sure that is the drive connected to port SATA3. I have noticed some boards or systems don’t always match the port names listed on the board to the port number in BIOS or maybe rather the OS does not report them in the same way, I don’t know for sure.
With the SATA cables installed the machine looks a bit overrun with cabling. I probably should have used shorter cables, but these were a known good set, and they were all bundled together. I may go back and rework the data cables on this machine at some point, though it seems doubtful really.
Finishing things up:
It was late when I finished doing the hardware build. I didn’t have it connected to a monitor or keyboard or anything but everything seemed to sound fine. The following morning I attached the keyboard, monitor and mouse as well as a DVD drive so I could get the OS installed. I had one issue, the recycled SATA controller card appeared faulty. It would find the devices attached but would take forever, and had problems no matter which devices were connected. As it happens, sometimes things are in the trash for a reason… Fortunately I had a Startech card that I used to replace the SIIG card and my problem was solved. Another small problem was the DVD drive I picked out didn’t want to boot. I’m not sure why, but I swapped it out for another and I was on to install the OS.
I installed my standard operating system openSUSE on this machine. I used the latest 42.1 release and installed the minimal command line only version. Before the final boot to the installer I unplugged the power from all the 3TB SATA drives. I’m always fearful that the boot loader will get installed on a drive other than the disk I want to install the OS on. For the partition setup, I “short stroked” the hard drive using a partition of just 6GB for /. The openSUSE installation used just 1.3GB. System RAM usage is at just 101MB without buffers/cache. It takes the system 12 seconds to go from grub to the login prompt.
Overall I’m quite happy with the system. The performance seems adequate and all of the newly acquired drives appear fine – smartctl shows them all to pass. The case fans look awesome and the final price was just $318 ($278 for the 3TB drives, $20 for the power supply & $20 for the case – everything else I had on hand).
(Note: the featured image and the image shown directly above were taken before I installed the SATA cables.)
5 Days Later:
After a few days of testing I have found the machine and components fully competent. The used hard drives all appear to be working well and the SMART data says they are all good. The CPU motherboard and RAM are all apparently fine as well. The system appears stable and has not crashed. The server is able to fully saturate a gigabit network with 120/125 MB/s file transfer speeds. I simply copied files from the server to a terminal to test the speed. I did need to make two concurrent file copies as none of my receiving hard drives can write data at that speed. Surprisingly a 500GB traditional disk was able to write at 95MB/s while a OCZ TRION 120GB SSD was only able to write about 70MB/s (same system/bus).
A friend of mine who read this article commented to me that most people might not have those other parts lying about. Certainly that is true, the additional cost of purchasing the same parts on eBay that I had would be:
$30 – Intel DQ965GF Motherboard
$20 – Startech 2 Port SATA Controller
$15 – Intel Q6600 Core 2 Quad
$12 – 4x 1GB Crucial RAM
$10 – Hitachi 250GB HDD
$6 – 120MM LED Fan
$6 – 6x SATA Cables
This would add another $99 to the build for a grand total of $417. Which is still less than many of those little NAS boxes – without any disks! But let’s keep in mind that these are the prices on eBay, and also, that I only used those specific parts because I had them already. The setup I have built is a little overkill. While doing multiple concurrent backups as well as copying data from the server to a terminal I never saw the CPU usage go over 25%. I believe the slowest of the Core 2 Duo chips is about a third as powerful as the Q6600 so any C2D system should work well. Readers out there can easily purchase an old Core 2 Duo for next to nothing on craigslist, if not even acquire an old one from friends or family who have retired them. Purchasing a prebuilt system or CPU/MB/RAM combo can be even cheaper than buying things separately. Old Dells, Compaq and HPs can be had starting at $45-$50 (shipped) with Core 2 Duo CPUs and 4GB RAM on eBay. This type of machine would be perfect to gut and reuse – and the old case (including the plastic parts) can be dropped off at your local metal recycling yard.
In the end I am still happy with the system. The only negative is that is is a little loud. It has 6 fans inside, which may be a few too many. Maybe I’ll add some fans that are controlled via the motherboard – unfortunately there are only two headers on the motherboard for case fans. Still a great machine and a bargain to boot!