This started with a spare CPU and a dead motherboard. Had an Intel Core i3 6100 lying around with 16 gigs of memory sticks. Was leaning towards an AMD Hackintosh but Youtube convinced me unRAID is my next curiousity target. So I build a PC (again).
The parts list listed a standard Intel CPU fan but I hated the noise. I had a generic brand CPU water cooler I installed onto the CPU.
This was my first time building a Mini ITC board. First impression: it’s tiny, really. It only has 4 SATA ports and 1 NVMe slot on the backside of the motherboard. I’m limited to 5 storage devices which eventually will be:
- Parity Drive: 1x SATA SSD
- Cache Drive: 1x NVMe
- Storage Array: 3x SATA SSD
Storage Drives
The issue that Youtubers talk about unRAID is exactly its name. The drives are not configured as RAID, it’s essentially a JBOD. But I’m still new at this, I might be wrong. Another note is I’m using SSD’s because I don’t like the noise of spinning hard drives. Most people will use spinning hard drives for their larger capacities.
Parity Drive
With unRAID you can have as much as 2 parity drives. This means you can loose up to 2 drives simultaneously and you won’t loose data. You build the data on the replacements with 0’s and 1’s from the parity drives.
The parity drive acts like an index of all the 0’s and 1’s on your array. Just like database indexes, writes will be slower than reads. Each time new data is written, the parity drive indexes them. Hence the need for the next drive type.
Cache Drive
To mitigate slow writes, unRAID defer writes using this Cache Drive. All new data are written to this cache drive before eventually being written to its destination. A perfect illusion of speed mechanism.
Storage Array
There is only 1 rule. The maximum size of any storage drive must not exceed the size of the parity drive. This means if you have a 1 TB parity drive, you can only use 1 TB storage drives or lower. unRAID supports mixing different sized storage drives as long as it’s not larger than the parity drive.
Another gotcha is unRAID by default only spreads the data to 1 storage drive. When you create a share, you need to manually configure it to spread to more than 1 drive.
One of the things that I wanna do for this unRAID box is set it up as router for my home network. So I bought an Intel 4 Port Gigabit card to do this. This Intel card offloads all network related processing off of the CPU.
When I booted up the box, I was pleasantly surprised unRAID by default bonded both the Intel card and the onboard Ethernet into 1 interface. This bonded interface comes with fault tolerance and 5x 1000 Mbps.
I went a little bit overboard with the network setup so I can be sure Plex would be streaming comfortably. Although I haven’t really tested it, was mainly toying with all the features unRAID offers.
To my surprise, this generic watercooler kept my CPU at 50 Degrees Celsius at 100% load. I won’t know yet about its longevity but I’m glad it turns out great.
Yeah if you look at the ethernet interfaces, eth3
is showing up 10 Mbps. I don’t haven’t got around to troubleshooting it. I crimped the cables myself but I have to admit, the cables I used are recycled cables.
Also at the moment, I’m only using 1 SSD, this is in test drive mode. Apparently 1 SSD is enough to get started unlike what the forums is telling noobs.
Plex Media Server
The single most defining reason why I’m motivated is Plex. Plex is worth the money spent for it. I always liked the idea of your media following you around wherever you go. With Plex I can watch my medias while on the train or waiting for a meeting. So many possibilities.
I’m a Plex Pass subscriber, with this I can enjoy hardware (GPU) accelerated transcoding. But, to set it up is not as straightforward. Did I tell you that unRAID supports Docker out of the box? The screenshot of my dashboard shows Plex and the other 2 apps running as docker apps.
Now there are some few things that need to happen when you want to use hardware acceleration: Intel Quick Sync must be supported by the CPU. Read more here. My CPU is an Intel Core i3 6100 and it supports Quick Sync. I’m gonna be offloading the transcoding to its iGPU.
My research told me the best GPU to do transcoding is Nvidia P2000.
I added a setting called HW Accel DRI Card
for Docker to forward
the host’s /dev/dri
to the container. Another thing you should do is to add some entries to unRAID’s go
file.
$ modprobe i915 && chmod -R 777 /dev/dri
$ vim /boot/config/go
# Add these lines
modprobe i915
chmod -R 777 /dev/dri
If everything is ok, when you go to Plex’s Activity > Dashboard
, you will see that hw
status confirming that video transcoding is offloaded to the GPU. You’d see that CPU usage is significantly lower.
Next steps would be to run out unRAID’s trial period and buying a proper license. It’s definitely worth my money. Some projects I have in mind to do with the box:
- Set up VPN Gateway
- Set up DNS-over-HTTPS
- Delegate routing from my FO modem to the unRAID box
- Add more drives and configure unRAID properly
Using an Intel Core i3 processor (the lowest spec of its generation) is pretty easy on the power usage. Max power usage is projected at 111 Watts. It won’t compete with a Raspberry Pi for power but it’s quite low profile to my liking.