Building a reliable NAS – Part 1
So I had been mulling over this idea for a while: building a NAS. “Why would I build one, if I could build a reliable one?” I thought soon after. And that’s how this post series was born.
A new beginning
As every journey begins there is usually a reason behind that. To tell the truth I already had a homelab that I also used as a NAS at my home, however since when I discovered the silent data corruption issue and have it bit me on some of my photos I decided it was time to build a reliable NAS. The purpose behind this new reliable NAS was to defeat silent data corruption and to have a system where to backup everything on.
To better plan what would become my next NAS I jotted down for a while what I wanted from this new server:
- It must have enough space to store everything (both from me and from my family).
- This is easily achieved by using RAID technology.
- It must be platform-friendly: usable on Windows, Linux and Android/iOS (Mac is a plus).
- This depends entirely on the solution and we will talk about it in the next section.
- It must leave enough room for a little grow in the years.
- Have at least the possibility to grow without buying additional stuff.
- It must be able to stream some media and do some transcoding.
- It is primarily a file server, but having the possibility to stream media (in the LAN) is neat.
- It must be as cheap as possible (without compromising the other points).
- Most importantly it must avoid without doubt data loss and data corruption (especially silent data corruption).
Alongside with requirements I came up with three solutions:
- A Pre-built NAS: one of those specialized boxes that serve as NAS (e.g. Synology boxes). Given enough bays it would surely fit my space and growth need. However platform compatibility and transcoding would depend on each solution and they wouldn’t probably be cheap. Also silent data corruption would be an issue.
- Pre-built server: a server (preferably tower) assembled by known brands (like Dell or HP). The space and grow will probably be satisfied without problem since at least 4 bays are commonly available in most cases. Transcoding would depend on the CPU. While I could avoid data corruption by using FreeNAS with ECC memory. Cheap options are also available.
- Custom-built server: a custom built server that would fit all the requirements including: powerful CPU for transcoding, ECC memory to avoid data corruption, large case for space and growth. Platform-friendliness and depends entirely on the operating system, just like the pre-built option. It won’t probably be cheap.
I immediately discarded the first option since it wouldn’t fit the data corruption requirement. Then I tried to assemble an ideal computer that would support everything, but I found myself out of luck. A motherboard with ECC support itself could cost more than 200$! In the end the cheapest build I could come up with would cost me about 800$ or more (without disks!). That’s when I looked at the cheap solutions offered by known brands.
|Lenovo ThinkServer TS140||HP ProLiant MicoServer Gen8||HP ProLiant ML10v2|
|CPU||Intel Pentium G3240||Intel Celeron G1610T||Intel Pentium G3240|
|Memory||1x4GB ECC UDIMM||1x4GB ECC UDIMM||1x4GB ECC UDIMM|
|Form factor||Mid-tower (4U)||Ultra Micro Tower||Mid-tower (4U)|
|Extra||Featureful||Compact and exposed drive bays|
I really wanted to pick the HP Microserver, however the processor, socket and the maximum memory/storage held me back. Maybe the next generation of HP Microserver will have at least the LGA1150 socket.
In the end I bought a Lenovo ThinkServer TS140 which should arrive next week, stay tuned for the Part 2 of this post series! Also if you’ve got suggestions on how I could’ve done an what operating system I should use let me know in the comments here or on Reddit : )
Image thanks to Martin Abegglen.