Too Many Games: Building a Home NAS

Enough is never enough.

I'm the digital equivalent of a hoarder. Not in terms of the mess, as I do try to keep everything organized, but in terms of sheer quantity of media. If I've got the space for it, I refuse to delete it. I've kept backups of all my disk-based games, even the ones I haven't played in 15+ years. I've ripped (or am in the process of ripping) my blu-ray library, both for ease of access and categorization. I've kept entire runs of television shows, hundreds and hundreds of gigabytes of music, and at one point I had something like fifty fucking gigabytes of just wallpaper. Who the hell needs fifty gigabytes of wallpaper?

Well, I did. At least until I decided to prune my overripe collection of digital artifacts in order to meet the physical limitations of my hard drive. I'd determine what was necessary, what I used on a semi-regular basis, and toss the rest out. Windows doesn't play nice when your hard drive is scraping up against the limit, and I've long ago maxed my laptop's meagre storage capacity, so every now and then I'd repeat the purge, only to acquire more media and restart the cycle. Each and every time, the core collection of "essential" media (as essential as you can get when you are talking about things like movies, music, and games, of course) would grow a bit, and each purge would free up less and less space.

Well, I've finally hit the breaking point. I'm unwilling to cut things down any farther. I've hit an impasse.

Not good.
Not good.

So, what to do?

  1. Man up and cut the media down again. Not going to happen; that's the shortest term of all short term solutions, and I'd rather avoid repeating this dilemma for a good while.
  2. Slap another hard drive in there. Very doable; for $100 or so I could double or even triple the space I have. But there's some downsides; no redundancy (if a hard drive fails, it takes all the data with it), you're adding another drive letter (and will keep adding drive letters if you need more space), and it isn't truly a long term solution.
  3. Go a bit crazy.

Now, before I explain what I mean by Option Three, I'm going to have to get a bit...technical.

RAIDing For Fun And Profit

When you start to talk about large amounts of hard drive space, you inevitably start looking at multiple disks. Even the largest hard drives tap out at four terabytes of space, and while that would serve most sane people for a good while, I just owned up to having fifty gigabytes of wallpaper. I think we know where I fall on the sane/crazy scatter plot. Anyway, you cannot look into multiple hard drives without hearing about RAID. RAID stands for Redundant Array of Independent Disks, and it's a way to expand the capacity of your system by pooling drives together in order to increase redundancy, performance, and space in a sort of balancing act depending on exactly what kind of RAID you choose:

  1. RAID 0 is pure performance. All of your data is spread across all the drives in the array, meaning cranked up throughput, but also a big downside: if ANY hard drive fails, you lose ALL your data. Yep, doesn't matter if three out of four HDDs are fine, if number four decides to eat it, then all of your data goes bye-bye. Needless to say, not the solution I'm looking for.
  2. RAID 1 is purely about safeguarding your data. It's usually used with just two drives, where the first mirrors the second and will stop you from losing any data in the event of a single hard drive failure. Needless to say, there are no performance benefits, and you lose the capacity of an entire drive (so if you install two 3TB drives, you only have access to 3TB, not 6TB, as one whole drive is just a mirror). As it provides no space increase over a single drive, it doesn't fit what I need.
  3. RAID 10 usually uses four drives, and combines RAID 0 and 1. Your data is split across two hard drives and the remaining two are used as a mirror, so you get the protection of RAID 1 and the speed of RAID 0. Still, you lose out on half of your capacity, and that's a big deal when you start talking 4+ drives.
  4. RAID 5 uses up one drive's worth of space to calculate parity data, meaning that you can survive the failure of any one hard drive. As long as you replace that drive before another dies, your system will integrate that new drive into the array and you'll be back to full strength again.
  5. RAID 6 is the same as RAID 5, but uses two drive's worth of space for parity data, and therefore can take two hard drive failures before you lose any data.

There are other RAID levels, but those are the most common. Now, RAID usually requires a dedicated piece of hardware known as a RAID controller in order to handle the above; most motherboards support some RAID levels, but I wouldn't trust them to deliver the performance nor the safety of a dedicated RAID card. However, we have other options, and that requires us getting VERY technical.

ZFS: Zebras For Science!

Got your attention, didn't I?

ZFS actually stands for Zettabyte File System, which why I didn't use that as the paragraph head. Not nearly as exciting. I'm going to leave out a LOT of the details, partly because I find them boring, and partly because I don't quite understand all of them myself. The key points, however, can be laid out without much trouble:

  1. ZFS includes a lot of the high level benefits that RAID does, and does them all in software.
  2. It lets you pool multiple drives under one drive letter.
  3. You will never hit the limit on how much data you can access; it would take enough energy to boil every ocean on Earth to fill up this file system.
  4. It allows for expandability under the same letter (Run out of space? Add in a few more disks under the same pool.)
  5. When configured for it, you can survive hard drive failures in the same way that certain RAID configurations can.

The downsides? First, it loves as much RAM as it can get, on the order of 1GB of RAM per TB of HDD. Also, you won't be running this under Windows, as it has no support for it. That means you're either working with a virtual machine in your main rig (too messy for my tastes), or you're using a separate box build just to house the drives and run whatever OS you choose. That leads straight into the next component of this build: a NAS.

Getting NASty

While doing the research for this build, I figured it would be best if this new machine could serve up the files to all my various devices across a network since it would be the new central repository for all media. That meant building a NAS, or Network Attached Storage. Now, the difference between a NAS and a server is basically nil, with a few exceptions:

  1. NASes are usually designed to be run headless, i.e. no monitor. My particular NAS will be totally web administrated, so that means no keyboard or mouse once everything is up and running, either.
  2. NASes usually have smaller or stripped down operating systems, which means less features but less maintenance. They also can fit right on a flash drive!
  3. NASes are usually meant to do a small variety of tasks with low power usage, while servers are much more robust and usually consume more power.

So, I decided I wanted a box that I can move between my house and my apartment fairly easily, with no GPU or monitor necessary, and I wanted it to be able to act as a media center to my various devices. That influenced the part listing quite a bit, and after some extensive research, here's what I came up with:

The Build

Case: Fractal Design Node 304: $100. The Node was such a pain in the ass to get my hands on, you have no idea. I've been waiting since June for this thing to come it, and it goes out of stock as soon as I order it. I finally was able to procure one and it should be arriving on Saturday. Now, why the Node? For one, it's tiny. 10" x 8" x 15". Not all that much larger than a shoebox, really. This'll be a big help when moving it from location to location. And despite its size, it can fit six 3.5" (desktop sized) hard drives at once. Plus, with no external 5.25" bays for something like a useless CD/DVD drive, it also looks quite good. I knew from the moment it was announced that it would be the case for this build, and I stuck it out. Here's hoping I was right.

Motherboard: ASUS P8H77-I : $100. A mini-ITX case means a mini-ITX motherboard, and there are VERY few that have six SATA ports. This one fits the bill and came in at a very reasonable price point.

CPU: i3 3220: $130. Overkill of the highest order, really. This is equivalent to a processor you'd find in most NAS solutions that companies sell for two or three grand, not a little home box like what I'm building. So, why all the muscle? For one, expandability. I want to be able to toss three times the amount of drives I have in here and make sure the bottleneck doesn't fall back on the CPU. Next, power. It's an Ivy Bridge CPU so the TDP is way down thanks to the 22nm process. Finally, price vs performance. The "reasonable" choice of processor would cost around $70, and frankly $60 is so little when compared to the cost of the drives I'm putting in, I decided not to sweat the details and go for the extra oomph.

RAM: 16GB Corsair XMS3: $50. I got these on sale, and they're perfect fits. They're low profile which is great for the small case and the amount I bought wwill not go to waste, either now or later. ZFS loves as much ram as it can get.

PSU: Rosewill Capstone Modular 450W: $65. Newegg's house brand which is made by other reputable manufacturers for them, the Capstone 450W is compact, rated 80 PLUS Gold for top notch efficiency, and modular so I only need to include the cables that I....need. Plus, it's gotten some stellar, this reads like an ad. I should get a commission.

All told before hard drives: $445. When you look at comparable, pre-built NAS boxes from big names like QNAP or Synology, you are getting a four drive (vs my six), single core Atom CPU rated below 2Ghz (instead of my 3Ghz+ dual core i3), with barely 1GB of RAM (vs my 16, granted for ZFS). Honestly, it was a no brainer to do this myself.

Now, the drives:

6x Toshiba DT01ACA300 3TB: $870 ($139 per drive). So, there's the expense of it all. Brand new 3TB drives from Toshiba (who bought up what remained of Hitachi's 3.5" drive business after WD was forced to give it up) which are using Hitachi's factories and techniques meaning the reliability and RAID performance should be the same. One of the nicer things about these drives is the fact that they only have one platter per TB, meaning they should run cooler and with less power vs other models.

I'm going to be running six of these in a RAID-Z2 configuration (the ZFS software equivalent of RAID-6), which means I should wind up with (drum roll please) 12TB of usable space. In a system the size of a big shoebox. Oh yes.

I'm going to need a LOT more porn.

Building the build!

Uhhhh, haven't done this yet. Some of the parts as still in transit. Still, if anyone is interested, I'd be happy to post some pictures and a build log of my slapping the whole thing together and crying as 3/6 of the drives turn out to be DOA. Oh yeah, I've already mentally prepared for failure.

If anyone has any questions about why I chose what I did, any NAS/ZFS questions in general (or a desire for me to go more indepth, as much as I can), or has tips/pictures of their own NASes/home servers, feel free to post `im!

EDIT: I'd also love to shove this over to the PC forum instead of just general, if any mod can facilitate that.