It has been quite a while since I last wrote about my quest on building a NAS (network attached storage) box. The last article generated quite the interest among fellow enthusiasts, and I have had many people sending in suggestions and questions.
So here I am again – writing about my second NAS build that will address most if not all the issues that were brought up.
Requirements
The purpose of this build is both a NAS and a HTPC. I sat the box right next to my receiver and TV, I want to be able to record live TV, play 1080P HD movies and store my large photo/music collection.
- RAID engine capable of real time drive upgrade/swap, like the Drobo
- OS capable of running a media center frontend with live TV support.
- Efficient hardware that is both powerful and eco-friendly.
- Finished product must be quiet and easily serviceable.
- Finished product must be cheaper than the most basic Drobo.
The software
Demise of FreeNAS/ZFS
If you read my previous post, you would know that I implemented a real-time RAID-Z system powered by ZFS. In fact it is still the primary RAID engine used in the latest build of FreeNAS release 8. However, ZFS and the latest implementation of it in FreeNAS is an extremely resource intensive piece. The recommended RAM jumped to 8GB or 1GB per TB of storage. If you have less than 4GB of RAM, many of the caching features cannot even be turned on! This hinders performance greatly. As inexpensive as RAM may be, this is still an impractical requirement for many users. The truth is, ZFS is an incredibly complex system and it supports many features that the average user or even enterprise user will never need. Furthermore, as my research has led me to realize – ZFS is actually LESS flexible in terms of storage expansion. The old freeNAS base has been forked into another project called NAS4Free.
I knew I needed to look elsewhere for a RAID engine that is easy to use and flexible if I am to compete with the mighty Drobo. Out comes – flexRAID. Please note that I am not in any way affiliated with flexRAID and since I have been following the product they have released their 2.0 version under a commercial license. I purchased it a license for $40 which I thought was worth the money, but I will discuss free alternatives.
To those we built a system based on freeNAS, due to the difference in system architecture there is no way to simply upgrade while perserving data. I am ditching ZFS and freeNAS altogether in this build. However, the freeNAS community is still strong and very much alive. Please feel confident to keep using it.
flexRAID & RAID?™
The one thing that caught my eye at first is the implementation of Snapshot RAID vs. traditional real-time RAID. Usually RAID systems write to parity whenever something is changed on the drive. This parity update is an expensive process because it is complex and it needed to happen with every write attempt to disk. The idea behind “snapshot RAID” is to think of parity update as a backup procedure for the array. We run the backup procedure only at specific intervals, and it should only include critical data. Meta data that are changed frequently and can be regenerated should not be included. This concept of creating a schedule snapshot parity is not new, but until the release of the RAID? engine in flexRAID we have struggled to implement it without spending the big bucks.
RAID? works on the basis of DRU and PPU, where DRU (data risk unit) contains user data and PPU (parity protection unit) contains only parity data for the array. Thus concluding that the PPU must be at least the same size as the largest DRU. This is a requirement for all RAID levels and it is true for the Drobo. This is why you can only swap out the smallest drive for upgrade each time, because the largest one is used for parity.
The number of parity drives you have will determine the tolerance of your array.
1PPU = one disk failure, 2 PPUs = 2 disk failures, etc…
This is neat because if you have a Drobo and you want two disk tolerance… you need to get the more expensive Drobo. All of these configurations can be done inside flexRAID!
Furthermore, RAID? can support any number of PPUs! There is no more conversion from RAID 4 to RAID 6, you can add more drives at any time.
Free Snapshot RAID engines
By now you might think I am a salesman for flexRAID, but that’s far from the truth. I have done a lot of research on free alternatives that offer similar Snapshot RAID support. The most promising I have found was an open-source project called SnapRAID, and they have posted a rather detailed comparison of non-standard RAID engines today: http://snapraid.sourceforge.net/compare.html
My final decision stood with flexRAID for its easy-to-use GUI and maturity of its RAID engines.

Windows 8 Professional
The OS
I have thought about this one for a while after choosing flexRAID. I had the choice between Ubuntu or Windows based OS. After many months and trials, I have decided on using Windows 8. Here are my reasons:
- You can get Windows 8 for $14.99 by upgrading from a previous version.
- Windows Media Center still has the best live TV support of any media center frontend. And for a limited time, it is free!
- Windows has best support for TV tuners. This is the most convincing argument I have come to realize.
- Hoping to one day use xbox Kinect to control my media center and it is promising.
