Rolling Your Own NAS with FreeNAS: Part Three

Part one of this series was devoted to a high level discussion of network storage. I talked about the types of options available, some of their pros/cons, and I outlined some of the things I wanted in a storage solution for myself. In the end, the whole article turned out to be one long-winded argument for a roll-your-own NAS solution.

Part two of the series was devoted to hardware. I actually built a FreeNAS device for myself. And I listed all of the components I selected for use in my own machine and touched upon some of the reasons I chose them.

And now we’ve made it to part three, the final installment of the series. Here we’re finally going to dig in to the meat and potatoes of this project – FreeNAS itself. I’m going to tell you where to get it, how to install it, and what you need to do to make it work. This is where things start to get fun.

FreeNAS First Steps

The obvious first step here is obtaining FreeNAS. As the name suggests, FreeNAS is free. You just need to download and install it. If you visit www.freenas.org, you’ll see download links on the right-hand side of the page. There are a number of options available to you, including 64-bit versions, 32-bit versions, upgrades, plugins, etc. For new installs, you can safely ignore everything other than the 64-bit or 32-bit downloads.

The choice of 64-bit vs. 32-bit really comes down to hardware compatibility. If you intend to use over 4 GB of RAM and all of your hardware has 64-bit driver support under FreeBSD, you’ll want to download the 64-bit version of FreeNAS. Otherwise, you’ll want to opt for the 32-bit version. Note, however, that if you do use the 32-bit version, the OS won’t be able to use more than 4 GB of RAM. This isn’t a FreeNAS limitation. It’s a 32-bit OS limitation. Other operating systems suffer from it too.

Once you’ve decided on the bit-ness of your OS, you’ll want to decide on how to install/run FreeNAS. The main page of the FreeNAS website only lists download links for ISOs. But there’s another option – the compressed disk image.

An ISO image is just a CD-ROM image, which in this case just so happens to be bootable. If you intend to install FreeNAS to a hard drive, this is what you’ll want to use. Just use your favorite CD burning software to burn it as an image and not a file. After you burn the CD and boot from it, you’ll be walked through the FreeNAS installation process. The process is fairly straightforward. It really just amounts to selecting which drive or partition you want to install the software to.

The IMG file, which is what I opted for, is a disk image of the operating system that you essentially “blast” onto a drive. It’s built for users who want to run the OS from a USB stick or a CF device. But why would you want to do such a thing? I did it to make my RAID configuration simpler.

If you want to use a software RAID, then you must install FreeNAS into a non-RAIDed drive. This means you’ll need separate storage for both your OS and RAID. Think about that for a minute. If you want to use FreeNAS’s RAID support, FreeNAS needs to be able to start up. But it can’t start up if it’s on a RAIDed drive. It’s the classic chicken vs. egg problem.

The flipside of that is if you choose to use a hardware RAID, you can install the OS wherever you want. But you’ll sacrifice available public storage since the OS will be included as part of the RAID. It’s a tradeoff.

To obtain the compressed disk image, you’ll need to visit the FreeNAS SourceForge site (http://sourceforge.net/projects/freenas/) and browse through their files until you find what you want. The compressed image files have the extension “img.gz”. When I built my machine, the latest version of FreeNAS was 8.0.4 P1, so the file I downloaded was FreeNAS-8.0.4-RELEASE-p1-x86.img.xz.

After you download the IMG file, you’ll need to write it to a USB key or a CF device. The recommended way to do this is by using a tool called Win32DiskImager (https://launchpad.net/win32-image-writer). The user interface for this application is fairly straightforward. But one word of caution: be mindful of the drive you’re selecting for writing. I’ve read a few stories of folks accidentally writing images to their PC boot drive and totally ruining their day. Double and triple check your target drive before hitting that “Write” button.

Booting It Up

The first time you boot FreeNAS the following boot menu will appear on your screen, but only briefly. If you wait a few seconds, FreeNAS will start booting up in its normal default mode.

After the boot menu has its chance to vie for your attention, all sorts of stuff will start flowing down the screen. This is normal. But you may have to sit through this for a few minutes in order for FreeNAS to completely boot. A lot of stuff is happening here – hardware detection, system configuration, the starting of services, etc. Assuming no errors occur during the boot process, you’ll eventually be presented with a screen that looks like the following.

There are a couple of things worth noting in this screenshot. The first is that from here you have some basic control over network configuration, you can obtain a root shell if needed, and you can also reboot or shutdown the machine. However, you’ll notice that there’s no mechanism here for configuring RAID arrays, advanced network settings, services, user accounts, etc. Well, as it turns out, this isn’t the primary interface for managing your FreeNAS server. We’ll get to that in a moment, however.

Just above the “Enter an option…” line, you’ll notice a URL. If FreeNAS was able to acquire an IP address using DHCP, then this URL points to the FreeNAS machine. This URL allows you to access the FreeNAS device from a web browser on another machine. What you’ll see in your browser is what I like to think of as the “business-end” of FreeNAS. This is where the real configuration happens.

Note that because of differences in network configuration, your URL will most certainly be different than the one shown above.

FreeNAS Configuration

When you first point your web browser to your FreeNAS machine, you’ll see something that looks like the following.

Down the left hand side of the page are categories of options. The main area to the right displays the settings for the currently selected configuration options. And near the top is a toolbar-like interface for quick access to commonly used option pages as well as things like “Help” or “Alerts”.

Notice the state of the “Alerts” button. When all is well with your system, this button is green. But if something bad happens, or if something needs your attention, the button will turn red as shown in the screen shot. In this instance if we click on this button, we learn that no admin password has been set for the machine. Whoops! We can remedy this by clicking on the “Account” button, selecting the “Change Password” tab, and setting a password for the admin user. Once you do this, the button should turn green.

From here, I’m only going to cover the configurations applicable to my own FreeNAS project. FreeNAS has a lot of excellent documentation and there have been entire books written on the platform. So instead of going down the proverbial rabbit hole, I’m going to show you what my setup looks like. Don’t let my approach be the last word. Read the FreeNAS documentation. If you have a needs different from my own, that’s where you’ll learn how to make FreeNAS cater to them.

Network

Once you change the admin password, the next thing you’ll want to do is visit your network settings. By default, FreeNAS uses DHCP to acquire an IP address, DNS info, gateway info, etc. And since you probably don’t want the IP address of your server changing all the time, you need to set it to something more stable.

Beneath the “Network” category on the left, you’ll see a subcategory entitled “Interfaces”. A fresh install will have no interfaces listed here. This might seem odd because FreeNAS obviously knows there’s a network interface. After all, you’re connected to the machine over HTTP from another machine. But, alas, you’re going to need to explicitly add the network interface here in order to configure it.

Just as a side note, most DHCP servers (consumer grade routers fall into this category) have the ability to designate a particular IP address for a particular MAC address and/or mark an IP address as being unassignable to machines using DHCP. You’d be wise to add your FreeBSD machine’s IP address to the list so the DHCP server doesn’t try to assign it to another machine. Otherwise, you might start noticing weird network behavior.

Storage

If you expand the “Storage” category and the “Volumes” subcategory beneath that, you’ll see a number of options for managing your storage. Since this is a fresh install of FreeNAS, there won’t be any volumes listed. So we’ll need to create a new one. Click on “Create Volume” and a popup will appear that gives us a number of options for creating a storage volume.

The pop up allows us to name the volume, select which hard disks are participating, pick a file system type, and, if you’ve selected multiple hard disks, what type of RAID to use. The storage name can be anything.

In our example system, I’ve given our volume the uninspired name, “storage”. I have two hard disks that are 53.7 GB each. I selected them both and opted for a mirror configuration, which is equivalent to RAID1. I also selected UFS as the file system.

A word about file systems. UFS (Unix File System) is the default file system on FreeNAS. It’s a slower performer than ZFS. But it works well on machines with limited resources. ZFS is a high performance file system, but it requires a lot of resources to use. The FreeNAS documentation describes the pros and cons of using one vs. the other. But the gist of it is if you’re not using a 64-bit machine and you’ve not much RAM to work with, forget about using ZFS.

Once you click on OK, the volume will be created and you’ll see it appear under the “Volumes” category. This doesn’t automatically make it available to other computers, though. We’ve got a little bit more work to do. Specifically, we need to enable and configure the appropriate network file system service.

For my purposes, I need the storage to be available to an assortment of devices – Windows, OSX, Ubuntu, and Android devices. This means using a network file protocol all of them can understand. And with Windows machines in the mix, the choice is simple – CIFS (formerly SMB). CIFS is the Windows share protocol. And it still being a Microsoft world, most other operating systems offer CIFS support. OSX supports CIFS out of the box, just about all Linux distros know how to mount a CIFS share, and Android devices can connect to CIFS shares with the appropriate app (e.g. ES File Explorer). So CIFS it is.

CIFS isn’t on by default. So it’ll need to be configured and enabled. Beneath the “Services” category you’ll see the “CIFS” subcategory. Clicking on that will open the CIFS configuration dialog.

There are a lot of options, most of which you can ignore for the time being. The primary ones of interest for my purposes were “Authentication Model”, “NetBIOS Name”, “Workgroup”, “Allow Guest Access”.

“Authentication Model” allows you specify how you want clients to authenticate against the CIFS service. Selecting “Local User” forces the client to provide a username and password which corresponds to a user account on the FreeNAS device. By selecting “Anonymous”, you’re telling FreeNAS not to force users to provide credentials. Because I want all machines in our home to access the server without having to provide credentials, I set “Authentication Model” to “Anonymous”.

“NetBIOS Name” is how your FreeNAS device will appear to Windows machines on your local network. It’s also the name you can use as shorthand when trying to access your FreeNAS device. So instead of having to type in something like “\\192.168.0.50\storage” on a Windows machine, you can use something a bit more user-friendly like “\\freenas\storage”.

“Workgroup” should match whatever Workgroup your Windows machines belong to. If this isn’t set correctly, you won’t be able to browse to your FreeNAS device from a Windows computer.

“Allow Guest Access” allows whatever user ID you’ve associated with “guest” access to use the storage without having to authenticate.

Once CIFS is configured, the service needs to be turned on. To turn it on, all you need to do is click on the “Control Services” subcategory under the “Services” category. In “Control Services”, you’ll see a list of all of the services supports by FreeNAS. They’re all off by default. Clicking the appropriate on/off button will turn the CIFS service on.

Next, the storage actually needs to be exposed as a CIFS Share. If you expand the “Sharing” category, you’ll see a number of subcategories including one for “CIFS Shares”. Expanding “CIFS Shares” exposes an option for adding a new CIFS share. Add a new share, give it a name, and point it to your volume. Most of the default values will be inherited from the CIFS configuration. Be sure to enable “Allow Guest Access”.

At this point, client machines should be able to access the share and read from it. But you’ll quickly notice that you can’t create or modify files. This is because the permissions aren’t set correctly and changing them is the final thing we need to do. Click on “Change Permissions” beneath your volume listing. From here, you can simply enable Read/Write/Execute on for everybody.

Click “OK” and restart CIFS just to be safe. Client machines should now have free reign of the storage space. Woohoo!

UPS

There’s one more service that I wanted to get working before I felt the device was complete – the UPS service.

FreeNAS has the ability to communicate with an assortment of power supplies over USB. It uses NUTS (Network UPS Tools) to do this. By configuring the UPS service, we tell FreeNAS what to do in the event of a power outage or low battery. If the power goes out, your FreeNAS device is able to power down itself in a clean and orderly way, giving your file system a fighting chance against corruption.

In my environment, which suffers from frequent, but brief power outages, I need FreeNAS to wait 10 seconds after a power outage occurs before deciding whether or not to shutdown. Power usually comes back on within a few seconds. But in the event it doesn’t after 10 seconds, I want the device to shutdown cleanly. It’ll be up to me to power it back on.

Open the UPS service configuration and choose the appropriate driver. If your UPS is listed, select it. If it’s not, all is not lost. Most of the drivers listed are generic and will work with multiple devices. It’ll just take some experimentation. Many of the choices listed are in fact the same driver. Don’t be surprised if you select one, save it, and come back later only to discover that a different option is selected. No harm done. FreeNAS doesn’t store your UPS selection, only your driver selection. So when you reenter the configuration page, FreeNAS autoselects the first device that uses the driver you had previously selected.

“Port” selection can be tricky. If you’ve only got one option to choose from, great. But if you’ve got more than one, you’ll need to figure out which port your UPS is on. The easiest way to do this, and the way suggested by the documentation, is to take a look at your console messages. To do this, click on the “System” category, click on the “Settings” subcategory, click on the “Advanced” tab, and turn on “Show console messages in the footer”. When this is enabled, you’ll see a terminal-like box appear at the bottom of the browser window. By unplugging and plugging in the UPS’s USB cable, you should see “/dev/ugenX.X” related messages appear in that window. If you see them, the port listed is the port you want to use for your UPS configuration.

For shutdown mode, you have two options – “UPS reaches low battery” and “UPS goes on battery”. They are what they sound like. If “UPS reaches low battery” is selected, your FreeNAS device will begin shutting down when the battery gets low. If “UPS goes on battery” is selected, FreeNAS will begin shutting down whenever power is lost. I selected “UPS goes on battery”.

The shutdown timer is specified in seconds and tells FreeNAS how much time should elapse between the shutdown condition being satisfied and the actual shutdown of FreeNAS. If the condition becomes unsatisfied during the time interval, FreeNAS was abort the shutdown. In my project, for example, I’ve set the shutdown timer to 10 seconds and the shutdown mode to “UPS goes on battery.” If the power goes out, FreeNAS will wait 10 seconds before shutting down. If the power comes back on before then, FreeNAS will abort the shutdown and continue on as if nothing ever happened.

IMPORTANT: One thing I’d like to point out is that the version of FreeNAS I installed has a bug that prevents the UPS service from working correctly. And the bug appears to have stayed around for at least 3 subsequent releases. You should test your configuration by simulating a power outage before trusting it to work correctly.

There exists a patch to the OS to fix the problem. But patching isn’t always straightforward. The problem in my particular version of FreeNAS was that the “uucp” user wasn’t a member of the “operator” group. And FreeNAS has a little database that “uucp” needs to read from, but can’t because it’s only accessible to root and the operator group.

/data/freenas-v1.db

You can do one of two things – make “uucp” a member of the “operator” group through the web configuration tool (for some reason, doing it through the shell doesn’t allow the changes to survive a reboot) or chmod the database, which is what I did. It’s not pretty and it’s wrought with security implications. But it is what it is.

chmod 666 /data/freenas-v1.db

End of the Road

And that’s it! If everything went ok, you should be able to access the FreeNAS storage like any other Windows share. If the Workgroup was set correctly in your CIFS configuration, you’ll be able to see the FreeNAS device from Windows machines just by browsing your network. Accessing the storage from other devices might require a bit more work. On OSX, I often have to use Finder->Connect To Server and specify the server using smb://ipaddress/storagename. On Ubuntu, I mount the storage as needed.

It might seem anticlimactic in the end. After all, we’re just talking about the ability to read and write files. In truth, a FreeNAS device is a dedicated file server capable of providing a multitude of services for you. There are a lot of possibilities. For instance, we’ve already discussed using a FreeNAS device as a dedicated backup server. I’ve also toyed with the idea of using it as a repository for video/images captured using IP security cameras. Basically, wherever you need shared or always-on storage, FreeNAS is a very capable solution.

BONUS: Automated Backups

My primary motivation for building a FreeNAS device was for performing automated backups. I’m going to leave you with a short how-to on how I made this work for our Windows PCs.

The first thing I did was to create a folder on FreeNAS for backups to be placed in. Being the creative type, I called it “backups”. Next I went to each Windows machine and configured them like so.

  • I first installed a copy of RoboCopy and made sure its location was in the PATH environment variable. RoboCopy is a neat little command line utility that’s been bundled as part of the Windows Resource Kit since NT 4.0. It has a lot of neat features, the most important for me being its ability to perform folder mirroring. You can download the Windows Resource Kit free from Microsoft.
  • I then created a one-line batch file that invoked RoboCopy.
    robocopy c:\User\Shane \\192.168.56.101\backups\Shanes_PC /MIR /R:3

    What this does is mirror my Windows account folder on the local machine to a folder on the FreeNAS device called “backups\Shanes_PC”. Note that the destination folder is different for each machine that’s performing backups.

    The /MIR option says “mirror”. If a file is created or changed locally, it’s copied to the FreeNAS device. If a file is deleted locally, the file is deleted from the FreeNAS device. That last point is important to note. If you accidentally deleted a file 3 days ago and this script executes daily, that file is gone.

    The /R:3 option means “retry 3 times”. If the FreeNAS device is unavailable, I don’t want the script to keep trying forever.

  • I then configured the batch file to execute every time the user log’s off. You can do this by using the Group Policy Editor snap-in. Click Start->Run and type “gpedit.msc” and hit enter. Beneath “User Configuration->Windows Settings”, you’ll see an item labeled “Scripts (Logon/Logoff)”. Click on that and add the batch file path to the “Logoff” option.

    You might be tempted to instead to use Window’s “Shutdown” script configuration option. I too started down this road. The problem is the network connections are closed before these scripts execute and you won’t actually be able to connect to your FreeNAS device.

That’s all there is to it. Whenever I logoff or shutdown, the batch file gets executed, and everything in my account folder gets synced to the FreeNAS machine. This includes “My Documents”, “My Music”, “My Pictures”, the desktop, etc.

Anyway, I hope this gives you some ideas on how you might create your own automated backup solution. For more information, visit FreeNAS.org. Good luck!

Rolling Your Own NAS with FreeNAS: Part Two

In my last post, I described my motivation for building a home brewed NAS. I talked about why I opted against some of the more commercial alternatives. And I briefly mentioned a few of the perks of having a FreeNAS solution for your home or office.

In part two, I’d like to discuss my hardware choices and touch on some of the things that might influence your own FreeNAS project.

The Case

The case was the very first place I started on this project. It might seem like an unexciting beginning. But the choice of case has the potential to widen or limit the selection of hardware available to you when building your machine.

For my server, I wanted something small, something almost toaster-sized. The server would be living in my office, a room severely constrained in terms of space. So I needed something that I’d be able to tuck out of the way. And I also wanted something with room for at least two hard drives that I’d use in a RAID configuration.

Below is a picture of the case I settled on. It’s the PC-Q11B from Lian Li. It’s a Mini-ITX tower with room for a motherboard, power supply, two hard drives, and little else. It’s bigger than my toaster, but not by much. It’s sleek and everything about it is cleverly designed.

It’s worth noting that if you decide to purchase this case, it accepts a full ATX style power supply and not a Mini-ITX style.

The Motherboard and CPU

Next on my shopping list was the motherboard and CPU. This was a little tricky. Picking components for a Windows PC is easy since every PC hardware manufacturer has Windows drivers. But FreeNAS is a FreeBSD based OS. So it requires a little bit of homework to find a motherboard/CPU combo that’s fully supported by FreeBSD.

The two things I was most nervous about was the USB and network interface support. I had planned on running FreeBSD from USB stick (more on this in part 3). And, of course, if the network interface built into the motherboard wasn’t supported, the server would be of no use. So I spent a couple of days scouring the various forums, mailing list archives, and hardware compatibility lists.

In the end, I purchased a BOXDQ45EK LGA 775 motherboard from Intel along with a Pentium E2160 processor. And to be perfectly honest, this purchase was a shot in the dark. I didn’t really know if what I was getting would work well at all. But with Intel components, I figured the odds were in my favor. And as it turns out, they work pretty well.

  

In addition to the processer and motherboard, I picked up a Fanner-420 heatsink/fan made by MassCool.

Memory

FreeNAS doesn’t need a lot of memory. You could get by easily with 512MB of RAM. But RAM is dirt cheap. So I purchased 1GB of Crucial sticks.

Power Supply

I goofed on the power supply. Both the case and the motherboard I wanted to use were Mini-ITX. So I naturally reasoned that I needed a Mini-ITX power supply. I initially bought a 220W Mini-ITX power supply from FSP Group. It was only after I began assembling everything that I realized I had made a mistake. The Lian Li case doesn’t support Mini-ITX form factor power supplies, only ATX.

The FSP got shipped back to NewEgg and I picked up a 400W Rosewill RD400-2-DB instead.

Hard Drives

The primary goal of this project was to provide a centralized location for shared media like photos, home video, etc., as well as to provide a location where the other machines could stash backups. Based on our history, I estimated that we’d probably use less than 1 TB of storage over the next few years. So I opted for Western Digital’s Caviar Green WD10EZRX 1TB drives. I purchased two of them that I would end up using in a simple RAID configuration. WD’s Green drives aren’t going to win any races. But they’re low power. And for a device that’s always on but barely used, powers savings is important.

Extras

While it’s not directly part of the server, I should mention I also picked up a CyberPower CP1000AVRLCD UPS. We live in an area with frequent power outages and brownouts. It’s important that the server is protected and that it’s able to shut itself down cleanly when a power outage occurs. As it happens, FreeNAS has built in support for UPS devices. It’s a great feature that I’ll have more to say about in part 3.

Total Cost

The total cost for all of the hardware was as follows:

Case $99.99
Motherboard $54.99
CPU $33.99
Heatsink $11.99
Memory $23.99
Hard Drives $191.98
Power Supply $34.99
Thermal Grease $4.49
4 GB USB Stick (for OS) $4.99
UPS $122.99
Grand Total $584.39

All in all, it wasn’t that expensive. A comparable off-the-shelf solution would have cost me a bit more.

Conclusion

We’ve been running this little server for almost 2 months now. And I’ve been very happy with the hardware. I suspect there’s a bit more tweaking I can do to bring down the power consumption. But all in all, this device performs well and does what it was meant to do.

I should mention one thing that I find to be a minor annoyance. Both the server case and the UPS have ridiculously bright blue LED lit power buttons, which you can see below. These devices sit next to each other behind my office door. At night, the whole room casts a blue glow that can be detected in many parts of the house. If you decide to use either of these components, you’ll probably want to keep them out of rooms that need to be dark (e.g., bedrooms, rooms used for watching movies, etc.). Otherwise, your eyes will feel like they’re trying to crawl out of your skull.

In part three…Installing the Software.

Rolling Your Own NAS with FreeNAS: Part One

Once upon a time, managing data in my house was a no-brainer. I had two computers and a couple of external hard drives. I knew where everything was. If I needed to move or copy files from one computer to another, I’d simply create a Windows share. Backups were a manual process, but not so onerous that they didn’t get done. And because I lived alone, I didn’t have to think about things like sharing data with other people.

Then the girlfriend moved in. And with the girlfriend came all of her digital devices. Suddenly photos and videos needed to be shared, documents needed to be accessed from a slew of different devices, and backups became more of a chore. Overnight, my little office, which used to be a digital island of sorts, became assimilated into a larger ecosystem of devices and content. And my tiny, simple network became a lot more complicated.

Something had to be done. And I was fairly certain a significant part of the solution involved dedicated network storage. Thus began my quest for finding the ultimate “one size fits all” data hub for my home network. I examined a number of different solutions including cloud storage, off-the-shelf NAS devices, and network routers with USB ports for external storage. Heck, I even entertained the idea of dual-purposing my own PC for this task (crazy talk, I know).

None of the commercial options really appealed to me. Each had their own drawbacks. And the more I learned about them, the more disappointed I felt.

My must-haves were:

  • The device should be small.
  • Power efficiency. If the device isn’t in use, it must consume as little power as possible.
  • There must be no software to install on client machines.
  • Support for RAID is a must. This also means that internal drives must be easy to access and replace.
  • Client machines should be able to access the device using plain ole vanilla Windows shares.
  • If the power goes out, the device should be able to shutdown cleanly. I live in a somewhat rural area prone to power outages and brownouts.

My like-to-haves were:

  • FTP support.
  • User account support.
  • The ability to remotely administer the device (shell access).

Eventually, I decided that building a custom NAS was the only way I was going to be satisfied. Instinctually, I began thinking about building a simple Linux machine. And that’s the path I actually started down. I wasn’t sure which distro to use. And there would no doubt be a fair amount of configuration, testing, heartburn, and headaches. So I began searching for folks who had rolled their own Linux-based NAS with the hope of finding a few war stories, helpful pointers, and perhaps even hardware suggestions.

It wasn’t long before I came across this wonderful thing called FreeNAS. It was a ready-made platform for folks like me trying to roll their own NAS. It had everything on my wishlist and seemed extremely easy to get up and running.

FreeNAS runs on top of FreeBSD in fact. Not Linux. I have to confess that I’d never used FreeBSD before undertaking this project. And I was a little nervous about the idea. Moving from a Linux distro you’re comfortable with to some other *nix platform can be scary – files are in different places, daemons are managed differently, package management makes no sense, and the arguments to your favorite command line tools behave oddly. My needs going into this project were fairly modest and now I would be tasked with learning an entirely new OS. It seemed a bit much. And I wasn’t entirely sure I was ready to invest a whole lot of time into this project. But as it often happens to geeks and do-it-yourselfers, I was seduced by the sexiness of something new and shiny. And so it began.

Before I go into the details of my FreeNAS project, I would like to briefly discuss some of the options I mentioned previously and the reasons why I chose not to use them.

Cloud Storage

Cloud storage is all the rage at the moment. Services like Carbonite, Google Drive, and Amazon Cloud Drive allow you to store data online and access that data anytime and from anywhere, so long as you have Internet access that is. Some services market themselves as backup solutions, while others sell themselves as more generalized storage solutions. Some services even tout their wares (pun intended) as a means to share files with others. Whatever your online storage needs and budget, there’s undoubtedly a company out there that can help you.

Cloud storage wasn’t a solution for us for two reasons:

Cloud storage simply isn’t practical for big files. Transferring anything over a few hundred megabytes across the interwebs is time-consuming and potentially very expensive. Sharing things like raw DV video or project files from a recording session (did I mention I’m a musician?) isn’t really appropriate for these products. Not to mention, I’m fairly sure if I started transferring terabytes of data back and forth every month, my ISP would start sending me hate mail and would mostly certainly cut me off.

The consumer also needs to be concerned with security when it comes to these services. How much do you trust your storage provider? Are you uploading sensitive data? How silly would you feel if your tax return suddenly became public domain? And what if your storage provider went out of business tomorrow?

Off the Shelf NAS

There are a lot of great consumer NAS products on the market. And they vary widely in terms of features and price.

At the low end (under $250) are products with extremely limited sets of features. They tend to lack RAID support, require client software to be installed on your PC, and they often don’t integrate well with UPS devices. Some even require an account with the manufacturer’s online service to take advantage of features.

As the price point increases, the feature sets are richer and the products begin targeting more professional users. I did manage to find a couple of devices that would have worked well for me. But they were way outside of my budget. I popped over to NewEgg and created a rough estimate of the kind of hardware I thought I’d need. My estimate for a device with similar capabilities and capacity came in at a fraction of the cost as some of these higher end devices.

Routers With USB Ports

Many modern routers come equipped with a nice little USB port on the back. This allows you to plug a mass-storage device (e.g., external hard drive) into the router and make the drive available to the rest of your network. You may or may not have to install software on your PC to use it. It depends on the router and the mass-storage device.

This is simply brilliant. I love the simplicity of the idea. And I run into plenty of situations where something like this would be handy. For me, however, it wasn’t a real solution. Or at least it wasn’t a solution for this particular problem. Apart from the actual storage, these devices lack just about every other feature on my wishlist.

Enter FreeNAS

FreeNAS is a special distribution of FreeBSD that is preconfigured to function solely as network attached storage. All you need to do is provide the hardware, install the software, and configure it appropriately. It supports RAID, UPS integration, all of the popular network file system protocols, FTP, SSH, email notifications, user access control, SMART monitoring, and rsync, and the proverbial kitchen sink. It also provides a really nice web interface for remote configuration. And did I mention it’s free?

In the next two articles, I’ll show you what hardware I chose and the process I used to configure FreeNAS for my home network. You’ll learn how I set everything up and devised an automatic backup solution.

Stay tuned! In the meantime, visit FreeNAS.org!