I/O performance of self-built low-power Linux home NAS

August 29th, 2014

So, my article about building a low power Linux home NAS got quite a lot of attention, and several commenters wanted information about the performance.

I/O performance was something that I was curious about it when I built it, especially if using encrypted disks (LUKS) with such a low-power machine, so I did some very basic tests and the results are below. All tests are done with a large (3.5GB) file/data, intentionally larger than the memory. They involve writing to an ext4 filesystem (default configuration with RHEL6) sitting over a RAID0 MD array. Disks are 2 x Seagate SpinPoint M8/ST1000LM024 1TB 2.5″.

I’ve got to emphasise that these are quick and dirty initial results to give an idea; I’ve not analysed them deeply and there might be methodological flaws (e.g. I didn’t force caching off)

Sequential read/write (dd)

Non-encrypted Encrypted (LUKS)
Block size (bytes) Read (MB/s) Write (MB/s) Read (MB/s) Write (MB/s)
4096 43.9 21.7 1.4 11.1
8192 52.7 38.2 20.3 15.3
65536 51.6 45.0 26.5 21.1
131072 51.1 45.5 27.1 22.0

Linux NAS media sharing with DLNA: ReadyMedia/minidlna

October 23rd, 2013

As part of my low power mini Linux NAS project, I wanted to be able to share photos and videos simply to other devices on the local network, specifically a TV (it’s nice to be able to browse photos there).

Requirements:

  • Runs as a service on a Linux server (no GUI)
  • Simple to configure (so I can forget about it)
  • Works with a Samsung Smart TV

I can live without transcoding and fancy stuff, so after looking at Servio (full-featured, nice – tested it on Windows too) and ushare (looks good but less maintained currently),  I came to the conclusion that ReadyMedia (formerly minidlna) looked like the simplest and best solution. (It’s incidentally developed by Netgear for their ReadyNAS products)

Installing ReadyMedia/minidlna on RHEL6

Unfortunately, (due to some of the media libraries it depends on not being available in RHEL/EPEL, presumably due to patent or licensing issues), ReadyShare is not available in the “usual” repositories such as EPEL. However, I found a package over on the li.nux.ro site which I’m not familiar with. The version wasn’t current, and a couple of things needed fixing (including the init file), so I updated the package and rebuilt – the built packages are below:

Configuring ReadyMedia/minidlna

Configuring ReadyMedia is extremely simple – it suffices in the first instance to just define where your media are located with one or more media_dir directives:

media_dir=P,/path/to/Pictures
media_dir=A,/path/to/Music

I also set friendly_name (to specify a name that will be shown up on other devices) and shrank notify_interval (to try to pick up newly-added files faster).

Then, start the service (service minidlna start) and browse from another device on the network that supports DLNA (e.g. TV). Works!