Welcome to the TeraStor

For years I’ve been slotting 2-terabyte drives into a droboPro to store my media collection and backups. While it worked well, the droboPro never entirely fit the bill:

  • I could never get Ethernet to work reliably, and tended to leave it connected via USB.
  • The drobo is a “dumb storage device” and couldn’t run apps.
  • It took up a lot of desk space.
  • The drobo’s fans tended to run loud, especially with seven drives installed.

As I pondered filling the last of the droboPro’s slots with another drive, I was also considering other options; in the end, I made the plunge and built a full custom NAS system. Doing so was an excellent challenge and learning process… so I decided to write about it here.

What’s a NAS?

Network Attached Storage is usually a purpose-built computer operating as a home server: in this case, a server used to store and share media files. A NAS typically runs “headless”, i.e. without a monitor, keyboard, or other peripherals, running on your network 24/7.

MotherboardC2750D4I motherboard, shown at an angle

While there are an increasing number of all-in-one pre-built NAS solutions available, I decided to build mine from scratch. This is not for the faint of heart: you should have some familiarity with computer assembly and the command line before attempting a NAS build.

Brian Moses’ 2015 DIY NAS was a big inspiration for the build. I used a ASRock C2750D4I motherboard rather than Brian’s C2550D4I due to the C2750D4I being the same size with double the number of cores (useful for transpiling video and running background apps). I chose FreeNAS as the server, as the Debian OS was comfortable and familiar.

The AsRock mini-ITX board packs a lot of features into a diminutive package:

  • 12 SATA ports (4 × SATA2, 8 × SATA3)
  • Dual Onboard Intel Gigabit Ethernet with teaming
  • Max 64GB RAM

My only issue with the board was the fact that it was limited to just three USB ports (two at the rear + 1 header on the board), and that they were USB 2, not 3. This made the FreeNAS installation slightly tricky (see below), but I could always add a USB 3 card via the single PCI-E slot if I needed to.

Storage

Three hard drives, shown overlapping

I wanted to start big in storage to contain the files from the drobo and leave the new device alone for as long as possible. I invested in three Western Digital 6TB Caviar Red drives, designed specifically for NAS applications; the 2 ~ 4TB drives out of the droboPro would be used for physical offsite backup.

FreeNAS can be installed and run from CD or USB. Not needing an optical drive I would use only once, I opted for the latter. That meant buying a small, dedicated USB stick to store and load the OS (I used a SanDisk Cruzer 16GB low-profile USB stick)

RAM

FreeNAS needs 8GB of RAM to operate, with 12GB total usually recommended for plugins or “jails” (FreeNAS apps). 12GB of RAM provides coverage for up to 32TB of raw storage; as hard drive pool size increases, so too does the need for RAM. A very rough rule of thumb for FreeNAS recommends adding 1GB of RAM for every terabyte of added storage.

This was complicated by my discovery that ASRock boards are somewhat particular when it comes to RAM. Looking at the Qualified Vendor list for the board, I found that Memphis Memory made 16GB DDR3L ECC SODIMMs that were recommended; I bought two, leaving two slots free on the board, which should provide me with enough RAM for 64TB of storage.

CaseAluminium case, shown at an angle

For the case I went with Silverstone’s tiny DS308, which offers room for up to 12 drives, eight of them hot-swappable 3.5″ devices, and sits neatly on my desk.

Power

Since the NAS is usually running 24/7, the build needed a cool, efficient power supply. I settled on a Silverstone 80-plus certfied Gold 450W ST45SF-G.

Quirks

I’ll go into more detail about how I set up the NAS in the next article; for now, I thought I’d mention some oddities to the setup, just in case others follow this build:

  • The AsRock board takes a surprisingly long time to POST: about 30 seconds. Be patient.
  • The board also assumes the first time it is run that it is doing so remotely: it won’t start without a cable being plugged into its IPMI port. (After the machine is configured, you can detach the cable from there and move it to one of the standard Ethernet ports).
  • Deciding to install FreeNAS from USB presented a quandary: both rear USB ports were occupied by the final USB storage for the OS and a keyboard. I had to purchase a USB header for the second USB stick, attach it directly to the board, and tell the machine to boot from that in order to install.

It’s been two months with the build now, and I couldn’t be happier: media streams to every computer in the house, seamlessly. There are some improvements to make, however… I’ll leave the details of those, together with more information about FreeNAS and Plex, for the next article.