Recently, I discovered unRAID. unRAID is this amazing platform that allows for users to run a NAS with virtualization and dockers. It has a functional and beautiful web interface that makes managing your server as easy as possible. Building this setup was a bit of a task, but it was all worth it in the end. This made leaving the world of ESXi an amazing experience. I can’t guarantee that the results I had will yield the same for you or near them, but hopefully my overview can provide a bit of insight as to why I’m so impressed with this setup and what I plan to do with it in the future.
Motherboard: ASRock 970 Extreme3 R2.0
CPU: AMD FX-8320E Eight-Core
Memory: 2 x 8GB + 2 x 4GB
Storage: 2 x 4TB WD Red’s + 2 x 2TB Seagate Barracuda + 1 x 120GB Samsung 840 EVO SSD + 1 x 250GB Crucial BX100 SSD
Flash Drive for OS: Cruzer Fit 8GB (Cheap, small, and it works great)
Video Card(s): AMD HD5450 (Primary for unRAID + VMs) + AMD HD7850 (Gaming VM)
Case: NZXT H440 Black Windowless
So you’re probably wondering, why in the world did I move to unRAID and consolidate all my needs into one box? The answer is efficiency. We all know that the majority of gaming machines (for your average gamer) are under utilized a good portion of the time. This lead to the thought of taking my server which consisted of just a few virtual instances, my desktop which for the most part is just used for casual gaming, and moving them into one box. I was wasting power and not maximizing the hardware on both of the machines to their true potential.
The layout was pretty straightforward, I utilized one of the 4TB WD Red’s as the parity drive for the array and then the other as disk 1. For disk 2 and 3, I used the 2 Seagate Barracuda’s. For cache, I utilized the 120GB Samsung 840 EVO SSD. I plan on adding a secondary cache to prevent the loss of data from a day of caching. For my Windows VM, I used the 250GB Crucial BX100 SSD. For the Windows VM, it was outside of the array. The way I accomplished mounting this and keeping the QEMU KVM image on it was through the use of the plugin known as Unassigned Devices. Unassigned devices allows you to mount USB Flash Drives, internal hard drives, and external hard drives outside of your unRAID array. Using it was so painless that it almost felt like I wasn’t doing something right. The tool even allows you to mount other drives as Samba shares so you can pull data and move it around as necessary.
I/O was at least DOUBLE what I thought it was going to be. While the cache is probably to thank for this, I think the results were definitely satisfactory considering the setup. All of these drives are running btrfs rather than the default of XFS since I’ve heard great things about btrfs.
Read (Array): 120MB/s
Write (Array): 141MB/s
For Dockers, I’m only utilizing Transmission and Plex Media Server for now. Both seem to run flawlessly, although I originally ran into a networking issue with Plex Media Server which made it act like it was a client. This was quickly fixed by cycling it from host -> bridge -> host. Having never used Docker before, I was really surprised with the performance and ease of use/installation.
Windows VM (I can play games):
That’s right, I can play all of my games on my VM! I utilized IOMMU and AMD-Vi to create a VM and passthrough my AMD HD7850. Along with this, I also passed through 6 of my 8-cores (yes, I know my processor isn’t crazy powerful). I also had success in passing through some of my USB devices (I plan on passing a whole set of USB ports through soon) and I even got my onboard audio to work properly the first time. Like any QEMU KVM install, I did have to pass in Virtio drivers which really wasn’t difficult, especially if you’ve done it before. I haven’t done any benchmark tests yet, but I might some day.
There are a few improvements I have in mind to improve the performance and future proof this for a bit of time.
- Get that second 120GB purchased and installed.
- Move to the newest generation of Intel hardware (I.E. 6th Gen I7).
- Upgrade the AMD HD7850 with something newer and much more powerful (I can still play most games in ultra, so not a major priority).
- Replace the Seagate drive’s with WD Red’s.
- Setup the APC UPS daemon to shutdown upon power loss. Just waiting for the USB A-to-B cable and a chance to test run it.
- Finalize notification settings to ensure prompt notice of if/when a drive fails or if the server is going down due to power loss.
I can proudly state I don’t regret this decision. Coming from ESXi, I can say that this is a much more friendly and sustainable setup. Maintaining ESXi was a pain and having to maintain each of the VM’s I had was also not fun. Not having a Web UI was frustrating as well as it made it difficult to manage from my phone and other devices. Docker has simplified my maintenance and reduced the headache I had when I was doing upgrades and my previous NAS setup.