Building a tiny low-power Linux NAS

With various digital devices in the house and a need to manage how various content (photos, videos etc.) is stored, backed up and also shared (ideally externally), I’ve been wanting to get a NAS for a while.
Having ruled out leaving a normal workstation PC running (as my old desktop workstation based on a dual-core Intel Core2 6600 consumes around 100W idle, 120W under load – wastes far too much power), originally I planned to buy an off-the-shelf NAS. Recommendations from friends and colleagues included QNAP and Synology (e.g. DS213). However, I realised I’d like to have the flexibility to be able to use the NAS as I liked, running for example a webserver with applications such as Zen Photo, rsync with remote storage, use for a OneWire network etc. Whilst the Synology NAS line comes pretty close in terms of flexibility with the ability to install external apps and have access to the underlying OS, if you start hacking too much then there isn’t much advantage over running a standard OS, so I wondered whether it would instead be possible to build a decent generic x86 server which is a close match in terms of size and power usage.

Base requirements were:

  • As physically small as possible, ideally shoebox size or less
  • As low power as possible as it will be on 24×7.
  • Must be able to take at least 2 disks, for RAID1. 2.5″ disks preferred for power utilisation reasons.
  • Enough power to handle storage serving, run a webserver and misc. services (e.g. ownCloud) and also do some occasional heavier tasks like video transcoding
  • Must be very quiet

Researching the parts

Some of the solutions I considered:

  • An off-the-shelf mini server, e.g. a HP ProLiant Microserver, recommended by a colleague. More or less a full-featured server, with the niceties that follow. However, a little large and potentially quite high on power consumption – specs say 72-80W loaded with 4 disks.
  • A Raspberry Pi with USB disks. Potentially a nice solution, especially with an idle power consumption of around 3W, but a bit clumsy with a couple of USB disks hanging off it and maybe a bit underpowered when it comes to running multiple services, transcoding etc.
  • Some kind of mini-ITX server

I settled on researching the mini-ITX option. There are a huge array of chassis/motherboards on the market; some key vendors in Europe seem to be LinITX (UK), mini-itx.com (UK) and mini-itx.se (Sweden).

As a newcomer to the mini ITX world, some key points I learnt whilst researching:

  • Some motherboards accept DC power via a normal ATX connector (typically from a normal built-in PSU – either standard ATX size in larger cases, or SFX in smaller cases), whilst others actually offer a simple round one-pin connector for use with an external PSU
  • Cases vary a lot regarding inclusion of power supplies, and if you choose a motherboard with a “DC” (round, external) power connector then you don’t need a case with space for a PSU.
  • In addition to “standard” motherboards with socket-based CPUs, motherboards with soldered-on Intel Atom or AMD Fusion CPUs are available.
  • Although newer Atom CPUs support 64-bit OSes, some motherboard vendors disable this for no clearly discernible reason. Intel motherboards avoid this problem.
  • Most Atom motherboards have at most 2 SATA connectors, which rules out building machines with e.g. an OS disk plus two data disks

The Intel Atom low-power CPUs seemed like a good compromise between power consumption and processing might. The most efficient are the latest generation Centerton S12xx CPUs, however at the time of writing the only motherboard I could find available was the Supermicro S9XBAA-F. However, the Atom Cedarview N2600/N2800 CPUs also have very low power usage and I came across the Intel DN2800MT motherboard which seemed like a good solution as it can also run fanless. The close second for cases that have a built-in PSU was the Intel D2700DC.

After looking at various chassis including almost buying a CFI A2060, I came across the M350 Universal Mini-ITX Enclosure which is about as physically small as a case can be whilst having room for an ITX motherboard and two 2.5″ disks. It’s also designed for fanless operation, although has spaces for fans. This seemed perfect so I ordered one from mini-itx.se together with a 60W external “brick”-type power supply.
Final main component list:

  • M350 chassis
  • Extra disk frame for M350 chassis
  • Kingston 2GB memory SODIMM
  • Intel DN2800MT motherboard
  • 12V 60W stabilised power supply
  • 2 x Seagate SpinPoint M8/ST1000LM024 1TB 2.5″ disks

Building the server

M350 ITX server chassis without motherboard

M350 ITX server chassis without motherboard

Having not built an ITX server before, I was a bit unsure how easy it would be given the small space. However, since the motherboard has embedded CPU and heatsink, a lot of the normal messing around with the CPU/heatsink/thermal paste/CPU fan was skipped. Installing the motherboard was as simple as clicking in the backplate (2 supplied with the board: half height and normal; normal fits the M350), sliding in the motherboard and screwing it down.
The drives screw to detachable frames which sit across the top of the chassis (one included; I bought an extra since I wanted two drives).
A single screw secures the chassis lid, which slides off. Neat.

Challenges/tips:

  • The clearance between the connectors on the hard disks and the metal frame that the disk is screwed into is basically zero. So there’s no chance of using the supplied power lead with the motherboard, which is a single power lead with a SATA power at one end (to connect to the motherboard), and then two SATA connectors plus a Molex connector inline; the wires coming out of the top of the connector have nowhere to go. Even the right angle connector at the end has too much bulk. So, I bought a SATA power Y-splitter and attached it to the end of the included power cable, which works, although it means I have a lot of power cabling crammed in the case – I ideally need a SATA power Y-splitter which plugs directly into the board rather than into the cable.
  • There is very little space for cabling, so use as short SATA data cables as possible (I used a couple of 20 cm types). Again, they need to have straight rather than right-angle ends.
M350 mini ITX chassis (from rear) with DN2800MT motherboard installed

Chassis from rear with motherboard installed

Annoyances

  • The chassis did not come supplied with any screws for the drives (even though I bought an extra disk frame). I don’t know whether this is just a mistake since every chassis I’ve bought before has come with plenty of screws/spacers etc.
  • The chassis has a power light and a power button, but no disk activity light which is a weird and irritating omission. Just 1 tiny LED would do!

Firing it up

Turning on the server, everything seemed fine with the only noise being the two disks – a quick check in the BIOS showed that the disks were recognised and I also checked the CPU temperatures for a while to ensure they weren’t going sky high.
I installed Red Hat Enterprise Linux 6 from a simple boot image on a USB stick, installing the rest over the network via HTTP. All the hardware was detected without problems, and I configured Linux software RAID on the two disks
Having booted into the OS, my first stop was to ensure it didn’t overheat, so I installed lm_sensors. Running sensors-detect correctly found the sensors to detect CPU core and DIMM temperature. A replacement lm_sensors DN2800MT config file from the upstream lm_sensors site improved the display of sensor outputs slightly.
Sitting idle, the CPUs held steady at just over 40°C.
I then ran a load loop to keep all 4 cores busy for a while whilst monitoring the temperature. Even after running at full load for an hour or so, the core temperatures didn’t exceed 67°C which is fine, and pretty good without any fans!
Whilst doing this I also had the server plugged into an electricity monitor and was extremely happy with the results. Runs at 12-13W idle, and with full load only 14-15W. 12-13W for a full featured x86 server with two disks is amazing and exceeded my expectations!

Next step is to set up the software side…

[UPDATE: See Linux NAS media sharing with DLNA: ReadyMedia/minidlna for some information about sharing media with DLNA]

[UPDATE: See I/O performance of self-built low-power Linux home NAS for some performance information]

28 Responses to “Building a tiny low-power Linux NAS”

  1. Åke Svan says:

    Good post Tim. This what I should have done, but I am pretty happy with my Synology and probably wouldn’t in the end tinker much with my NAS. For more of a power user, such as you, it sounds excellent though. How much did the component s cost you? I look forward to reading the software side of it …

    • Tim Jackson says:

      Thanks for the feedback! The components cost:

      2 x disks: SEK1200
      Chassis: SEK570
      Memory: SEK130
      PSU: SEK220
      Motherboard & extra SATA cable: SEK850

      So, around SEK3000, which is in the same range as the cost of a good off-the-shelf NAS with two disks.

  2. Arslan Farooq says:

    Hi Tim

    Thank you for this post! Loved it, and this is the system I need.

    However I cannot find the DN2800MT motherboard anywhere now… it is as if it’s disappeared. Online where it’s available the price is too high 🙁

    • Tim Jackson says:

      Can’t comment on your region, but here in Sweden they appear to currently still be readily available and at reasonable prices compared to the market/other boards – they’re towards the pricier end of the ITX motherboard range, but you have to factor in that the processor is included.

      • Scott Harvey says:

        You can find the DN2800MTE/MTM/MTA boards ate various suppliers. The MTE/MTM/MTA boards are the extended life release to replace the MT boards that Intel no longer produces (to my understanding at least). I have seen the extended boards on mini-itx and at Logic Supply. Also the Mini-box site is the producers of the M350 chassis (to my understanding) and they have a variety of extra components if you should choose to go with that chassis.

        Great post, I have been looking into building out a NAS and a separate Media Server for the last few months. I am looking forward to reading which NAS software you chose.

  3. Arslan Farooq says:

    Found it here and ordered it: http://www.quill.com/catalog/browse/Sku.aspx?SKU=324124&cm_mmc=CSE_PRG_324124&acc=1

    If you look at Amazon prices they are either quite high, or they are unavailable:
    http://goo.gl/0lIh1p
    http://goo.gl/b8zaBg
    http://goo.gl/9Ow6ak
    http://goo.gl/GJNcg1

    Online support guy from this site http://www.logicsupply.com/products/dn2800mte said:
    ———————
    James
    As you may already know there has been a supply and demand issue with many Intel Boards recently and although we do have some currently available they are at a higher cost than the base price stated. Currently you could purchase a board at the price of $239.00 per board, this is to cover the additional cost we incurred getting these for our project clients.
    If you are in no hurry you may want to wait a few weeks and by then we will have received our shipment from Intel and the pricing for those will be as advertised.
    ———————

    So anyway, I’m glad I ordered it… very excited and waiting for it now 🙂

  4. Billy says:

    Hi Tim,

    I came across your website as I’m looking at building a similar system.

    Base requirements are similar to yours with an extra added at the end:

    As physically small as possible, ideally shoebox size or less
    As low power as possible as it will be on 24×7.
    Must be able to take at least 2 disks, for RAID1. 2.5″ disks preferred for power utilisation reasons.
    Enough power to handle storage serving, run a webserver and misc. services (e.g. ownCloud)
    Must be very quiet
    ***MUST be able to easily stream two 1080p movies simultaneously***

    Now I was wondering if your sustem can already do this this?

    • Tim Jackson says:

      Stream the movies to a screen or over the network?
      Do you know the bandwidth required to stream a 1080p film offhand?

      • mafro says:

        I just happened across this and thought I’d chip in 🙂

        Full 1080p can get above 2000 kb/s in some rips, so you need to have your server connected on a gigabit LAN. I can’t see why anyone would be decoding two HD movies simultaneously, so I assume that Billy just wants to serve them over the network.

        I have a AT5IONT-I, which does just fine decoding a single HD movie for the TV.

        • Tim Jackson says:

          2000kb/s or 2000kB/s?
          I will post detailed performance tests another time, but in my setup I am getting 40-50MB/s sequential read from the disks (ext4, mirrored with mdraid), so even allowing for inefficiencies in real-life reading with two files simultaneously, that should be comfortably enough to push a couple of films.
          Either way it doesn’t need a Gigabit connection (2000kB/s = 16Mb/s * 2 = 32Mb/s so should be ok with 100Mb/s networking), although the DN2800MT has a Gigabit card.

  5. electricity bill says:

    Hey there. Good job. Im thinking about building my own NAS too.
    Now that you covered the hardware part pretty well what about the software? What did you install on your mini itx server to make it deserve being called a NAS? And what about idle mode or standby? Power consumption? Working flawlessly? Options to schedule good night sleeps?

    • Tim Jackson says:

      So I’ve not got round to posting properly about it, but essentially I’ve:

      – installed Samba to share to different devices in various combinations
      – installed ReadyMedia/minidna to share media via DLNA: https://www.timj.co.uk/2013/10/linux-nas-media-sharing-with-dlna-readymedia-minidlna/

      I’ve not done anything about idle mode or standby as it’s already low power consumption (see above). I would like to spin the disks down, but at least a “hdparm -y” doesn’t work with this controller/disks.
      “Good night sleep”? Well, it’s almost silent thanks to zero fans.

  6. max says:

    Hi there,

    Do you have any insight why most of these lower powered mini itx boards only have 2 sata ports? I was looking to use a bigger enclosure with more disks. Is there any reason not to just use a PCIe sata card to achieve what i want?

    Thanks

    • Tim Jackson says:

      I noticed the same thing (because initially I was thinking of building a larger machine with space for extra drives), and I can only guess. My conclusions were:

      • There are some boards with more than 2 SATA connectors, but they are not generally Atom ones. Look for boards with removable processors like Intel Z77-based boards which take e.g. Intel Core i5/i7, or AMD Fusion. Check the AnandTech article with a few other ITX boards. Alternatively, go for micro-ATX which is only a bit bigger and there is lots of choice.
      • The very low-power Atom boards are intended for limited use cases e.g. thin clients, embedded/stateless machines of various kinds where a couple of SATA ports is enough

      I don’t see why you can’t put in a PCIe card, although if you use a case like I did it would have to be half-height.with a riser.

  7. Beck says:

    Hi,
    did You measure the power consumption of Your System?
    I’m interested in the information of the Current under the Condition of 12 V Voltage.
    Arnold Beck

  8. Timmy says:

    Heya!

    I just read through the article and comments and it’s peaked my interest. I’m in the market for a new media environment at home so I’m considering the possibilities. My previous setup consisted of a WD MyBook World 1TB NAS that streamed media through a PS3 on our TV. Now the NAS has died I need a new combination of storage, stream & play. This time I want to avoid the PS3 (almost no file support) so your system seems very appealing as it’s a storage device + media player that can be directly connected to the TV (right?).

    Would you advise it for a tech-savvy person like me? I’ve built 2 custom PC’s, a full ATX gaming rig and a FlexATX family PC (both of them did not explode… for now). I have little experience with Linux apart from the web interface the NAS had and the occasional Ubuntu/Jolicloud dualboot I had in the past, could that be a problem?

    I’ve considered just buying a Synology NAS + Roku (or similar) setup, which would be easy but quite expensive and more power consuming compared to your all-in-one awesome alternative.

    • Tim Jackson says:

      You could connect this to the TV, but the particular hardware I’m using is not particularly optimised for playing videos etc. (although it would probably work). I use it just as a NAS, not connected to any screen. I actually use a Raspberry Pi situated by the amplifier for playing music from the NAS; that’s the topic for another article!
      With your background knowledge, you’d definitely succeed with a self-built NAS – go for it! I’ve taken a relatively “low level” approach, but you’d perhaps want to look at some more “pre-packaged” solutions in the first instance, such as MythTV, XBMC (OpenELEC is a nice distribution of this).
      Assembling the hardware is the easiest PC I’ve ever built, since the motherboard is all-in-one.
      Good luck!

  9. rusty says:

    you may have overlooked the http://www.fit-pc.com/web/products/fit-pc2/
    (7 W idle)

    • Tim Jackson says:

      Interesting, thanks! However these only seem to support one internal disk; I wanted at least two for RAID. But nonetheless appear to be nice little units.

  10. chris says:

    Tim, Great article. Answers a lot of my suspicions about building a very low power Atom based NAS. However, sorry to lump you in the boat with many others who have obviously enjoyed sharing the build process, but I would very much like to know how it actually performs, throughput rates for uploads, downloads. Please don’t tease.

  11. Kevin Vdb says:

    http://www.pcengines.ch/apu.htm i have there old model running past 4 years with netbsd just fine

    another interested board http://www.minnowboard.org/meet-minnowboard-max/

    These days there quite some interested arm boards avaible as well

    Cubietruck has sata
    wandboard has sata
    ODROID-XU3 Lite has dual usb3
    nvidia jetson k1 board + sata + usb3
    radxa rock 2 will have sata to
    cubieboard 4 & pcduino 8 released soon will have octa core + usb3

    hard to choice between x86 or ARM these days 😡

  12. GNUton says:

    I’m looking for a DIY too almost like yours. ARM based boards are currently pretty unusable for building a serious NAS.
    Atom and ARM low power mini ITX boards are quite cheap now and you can buy an used one for about 40 euros.

    Just one note about the power supply. have you used a PicoPSU to connect the power brick to the mother board? Did I missed that?
    Currently I have a 500W PSU from an old PC which I do not use and I was thinking to use that… but without load it uses 7.6W / 0.356 PF. With a load of 20-40 W tthe PF is in the range 80-90%.. quite good… but I guess that PF is gonna be quite bad below 20W of load…! 🙁

    • Tim Jackson says:

      The motherboard I chose has an external-facing DC input (possibly a normal one too, can’t remember), so I used an external 12V/60W PSU, bought along with the case.

  13. Lars K says:

    Isn’t that Ålesund and Godøya?