For years now I've been running 2 PCs at home on 24/7 server duties. A HP Microserver running Windows 10 for Storage Spaces + some simple Windows applications. Plus an old Intel dual core system running Ubuntu 16.04 LTS for Pi-hole, Plex, TVHeadend and ZFS. Both were getting too slow and needed replacing.
After upgrading my Desktop in the summer I now had an bunch of spare parts.
- Intel i5-4690k
- Gigabyte GA-Z97X-Gaming 3
- Samsung Green 8GB DDR3 1600Mhz
- Bunch of HDDs in various sizes
In terms of my requirements I wanted
- Something quick and easy to setup
- Easy remote management
- Docker - Wanted to isolate applications so updates didn't break other software I was running.
- VM Host - Needed a Windows 10 VM for some applications and wanted a testing ground for different Linux distributions
- Easily expandable Parity protect storage Array - to replace Windows Storage Spaces
- Plex Media Server
- Pi-hole
- TVHeadend
I had looked around at several options like using Ubuntu 18.04 LTS, Proxmox, FreeNas. Ultimately it came down to a couple of Tech tubers I follow (Battle(non)sense etc), talking about how unRAID had successfully met their home server needs.
Installation & Setup
unRAID is so easy to setup. It runs off a USB Flash drive leaving your SSDs/HDDs for storage. Just download the installer, point it at your USB Flash drive and a few minutes later you have a fully working unRAID install. Just put that in your unRAID machine and power on. Then open http://tower in your browser on another PC and boom, you're up and running
Storage
First off you have to select how you setup your disks. You can use unRAID with just 1 Disk which by default will be formatted in XFS. However you will want to set it up depending on your needs.
I have 2x WD 320GB 7200rpm drives in a Cache pool using btrfs. There are many benefits for using a Cache pool. I wanted it for better performance of my Virtual Machines and the checksumming feature of btrfs for some important files. Ideally you'd want to use an SSD/NVMe drive if you are doing anything disk intensive.
I then have 2x WD 4TB Red drives in my Array with 1 as Parity and 1 as a data disk. You can easily expand the Array so long as the largest drive is the Parity drive. It is recommended you have a faster drive (e.g WD Black) as the Parity drive if you are running a large Array. I've seen examples of people with 20+ drives! Write speed is a concern with unRAID. Often see that as a complaint. I did try an Array of 1 Parity and 2 data disks and yes I could see the speeds drop. For just reading/ writing data to unRAID you could use the reconstruct (turbo) write feature. However that doesn't address the poor performance especially if you start running VMs on the Array like I tried. You need a Cache or Cache pool if you are planning to use unRAID for anything other then storage.
unRAID has a "Mover" function which is great for shuffling around your data between the Cache and Array. You can set rules for your shares and early each morning Mover runs. For example I have a TV Recordings share where TV is recorded too while the program is on and then once complete, during the night Mover will put that recording onto the Array for me and free the space on the Cache Pool.
The Mover function behaves like other Tiered storage solution (e.g AMD StoreMI) but with much more control. Keeping all those infrequently accessed large media files and backup archives off the fast low capacity drive(s) and stored on the slow high capacity drive(s) that can then be spun down when not in use.
Virtual Machines (VMs) + Docker
Setting up virtual machines is really easy. There are templates for most Operating Systems. Its just a case of choosing the options you want and hitting Create. You can access each VM by your web browser within moments. VM Performance is great and hardware pass-through works too. Something that was essential for me. You have to edit a few unRAID settings to tell unRAID what hardware to pass-through. But then it simply works. I tried passing through a HDD and USB controller to a Windows 10 VM as a test. Windows saw each device natively and I could hot-plug USB devices without issues. You could use the VM as your main Windows PC for Office, Gaming or whatever you like. If you wanted to reduce your number of PCs.
Hardware pass-through depends a lot on your hardware and the BIOS. I had a quirk were I could only pass-through all my USB ports on one XHCI USB 2.0/3.0 controller. Which obviously was no good as I had unRAID in 1 USB port. Or I could split my USB ports onto 2 EHCI USB 2.0 controllers and pass-through 1 to the VM. Lost USB 3.0 speed but it was the only way it would work.
Docker is easy too. Mainly thanks to the Community Application plugin that you can add to unRAID. Every Docker container you can imagine is available with a few clicks. Just search for it on Community Applications, hit download, enter a few settings and wait for the Docker image to download and install. Official Dockers from Pi-hole, Plex are running in minutes.
Was really impressed with how easy it was. Getting Docker running on Ubuntu was a fairly simply process too but it takes 10x as long.
Price
I got the Basic Version of unRAID that allows for up to 6 storage devices (excluding the unRAID USB Flashdrive) for $59. Its proved very good value for money by saving a lot of time setting up something similar on Ubuntu 18.04 LTS. Also save money by being able to use an inexpensive USB Flashdrive as the OS drive. And the Array being expandable while only needing 2 drives for parity protection compared to a minimum of 3 is other solutions.
The best value from unRAID though comes from the community. Access to the community gives you a resources were it seems for every problem you may ever have, somebody has already posted the solution. There are some really good guides (I highly recommend Spaceinvader One ).
Overall I'm delighted how things turned out.
Link: https://lime-technology.com/ - Oh seems they released a new website - https://unraid.net/