Friday 9 August 2019

MediaServer 8.2

It’s been over 5 years since I built MediaServer8, an unRaid based system that looks after not only storage duties, but also hosts my main workstation, manages whole-house audio systems, whole house LiveTV and PVR, home automation and a bunch of other stuff through dockers, VMs and plugins.

The AMD FX8320 based system has been rock solid in all of that time. Indeed, the only problem I’ve ever had occurred in the past week when my dual 1TB spinners assigned to a cache pool started showing millions of unrecoverable BTRFS errors. Fortunately, I rescued my appdata and domains folders in time. My docker image was not so lucky :-(

A few months ago, the itch emerged and, try as I might, I found it difficult to resist the urge to scratch. There was nothing wrong with the system per se, but with ‘only’ 8 cores and 32GB RAM, it was a bit restrictive in the number of VMs I could run simultaneously, and no real scope for growth. I had a particular hankering to virtualise the dual boot Hackintosh the family use daily, as well as a few other utility systems. Threadripper was calling. Here’s how I answered....

I tend to buy hardware a little behind the curve. I don’t like to pay bleeding edge prices, and I like to have systems based on proven tech. With all the bugs worked out.

I’d identified ThreadRipper as the best platform for my next system for some time. I’d been taken with the reliability and flexibility of the FX8320, and the all-important core count seemed to offer best value for money. With Gen3 TR on the horizon, the time seemed ripe to look at what was available.

still plenty of room to grow
As it turns out, there’s actually not a lot of choice. The X399 platform seemed ubiquitous, and very samey. 5 PCI slots, 3x M.2 slots, 128GB RAM capacity etc. I intended to reuse some existing components, I was mainly after a MB, CPU and RAM. Even at that, decent systems were coming in a little beyond my budget and I’d resigned myself to a 1950X or 2920X CPU, with a view towards updating to a 2950X or even 2990WX in a year when the 3xxx series had bedded in and second gen prices dropped.

However, I’d spotted a used combo comprising a TaiChi X399 MB, 2950X CPU and watercooler on an online site. The price was a little steep, but I figured there might be a deal to be done. I went ahead and specced up a new system with similar MB, 2920X CPU and air cooler. I went ahead and offered that system price to the seller who was happy to deal. That, and a bit of Amazon shopping later, I was ready to build.

system I/O, with GPU & USB for 2x OSX/Win10 Workstations clearly labeled to avoid future mistakes!

Once assembled, I popped in my unRaid stick and booted, but didn’t get very far. On loading bz-root, the system errored with an ‘insufficient memory’ complaint. Reading up, I started down a road of memory holes and syslinux mem parameters, to no avail. Ultimately, I created a vanilla unRaid demo key, and that booted perfectly. It finally dawned on me that, even though I’d turned off all extended capabilities and simplified my configuration file before shutting down my old server, I was running a customised unRaid - the DVB build that includes TV tuner drivers. Once I replaced my BZ files on my unRaid key with those from the fresh download, all was well and the system booted into unRaid. (There must be something up with that DVB built that doesn’t like something in my new system, but I had too much other stuff to do without trying to figure that out - a task for another day).

Before committing to this build, I’d had a look through the unRaid forums for similar systems, and found some posts with good information on set up, configuration and gotchas. One of my key concerns was support for my LSI 9211-8i Controller. I’d flashed this to IT mode and it worked perfectly well in my current system. However, there were reports of it and similar cards failing in the TaiChi, with the solution being to switch to a different motherboard. Oh oh!

My very first water cooler
As it turned out, it did present problems. On boot, the card would show in the unRaid hardware list, but wasn’t exposing any connected drives. It took a good bit of bios configuration and slot swapping before I finally acknowledged that I had the problem. As a last resort, I plumbed for a BIOS update. I was on v3.2, with the latest being v3.5. I was very reluctant to do this as there’s been a spate recently of VM passthrough breaking for people who’ve applied the newest  bios updates, released in preparation for new Ryzen CPUs. However, I had a degree of confidence as the particular bios for this board was dated February, so I figured I’d be OK. The update was straightforward and, on reboot, voila, all my drives appeared and I could restart my array - all hail unRaid for just working, even when the system innards are completely replaced.

I’d opted to replace the cache pool with a 240GB NVME M.2 card, so my first task was to copy all the docker, system and domains directories back there. Then, since I had to delete/replace my docker.img file, I had to re-install all my dockers. This turned out to be very easy as all my previous dockers were remembered and picked up their configurations automagically.

From there, it was just a case of adding other hardware one at a time to ensure everything was detected.

One of my perennial challenges with MediaServer8 is the lack of expansion. In one iteration of the original system, I was running 5x discrete VMs, all with dedicated GPU passthrough. Needless to say, this didn’t leave much room for any other devices in PCIe slots.  And I have other devices. I have a bunch of cards that I rely on for various tasks;
  • 2x M-Audio Delta PCI cards that drive whole house audio
  • 1x Digital Connection PCIe TV tuner with multiple daughtercards
  • 2x USB 3.0 PCIe cards compatible with OSX VMs
  • 1x LSI 9211-8i PCIe SAS Controller
Along with a couple of double-width GPUs, those 5x PCIe slots start looking very  restrictive. Plus where do I put PCI cards on this motherboard?

The extra PCI / PCIe slots for audio cards  and DVB tuners

A few years ago, I’d purchased a StarTech expansion chassis. This converts a single PCIe slot into 2x PCIe and 2x PCI slots. My Core X9 case has space for 2x PSUs, but as I’m only using one, I found I was able to disassemble the expansion chassis and squeeze its innards into the PSU bay. Not super pretty, but highly functional. Now, my PCI audio cards and TV tuners sit neatly in the case awaiting passthrough to VMs or dockers.

To further the devices available, I added a couple of M.2 to PCIe adapters to the empty M.2 slots. To one of these, I added the host daughter-card for the expansion chassis. To the other, one of my OSX compatible USB cards.

System has been up and running for a week or so now with no major problems, I’m in the process of migrating the family workstation to a VM, using the HDMI/Ethernet extender to route it to the distant living room.

I’m very happy with this system and think it will be the foundation of my home services for several years to come.

Here’s the full parts list (some inherited from the previous build):

Monster case to put it all inside. Mines the Black version that doesn't seem to be available any more. It's also a bit frustrating that accessories like extra HD cages or mounting brackets are really hard to find, and mostly out of stock.
All the X399 Motherboards start to look very similar after a while. This has WiFi, which I likely won't use, and a pair of Intel NICs so I'll get to try out bonding.
16 Cores. 32 Threads. Plenty of power for me to expand my VM count. Consolidation, baby!
First foray into water cooling. Only because it was the cooler I acquired with the mb/cpu bundle I purchased. Will see how it goes.
64GB to get started. I'll add another 64GB in the near future. I went for 2666MHz as budget is tight. Interestingly, the TaiChi motherboard boosted this to 3000 off the bat, though I'll probably run it at stock.
This came from my previous build. Likely a little under powered for MediaServer8.2, but working for now. I've had it connected to a power meter for the past week, and the system peaks at ~300W during boot, and hovers at ~150W during normal use. Not too shabby with a pair of GPUs and 6x mechanical drives.
This is the primary GPU in the system, and is passed through to my main OSX workstation.
Secondary GPU, used for the second OSX VM which migrated from a physical Hackintosh. It's very compatible with Hackintosh and no point in throwing it out.
The expansion system that I cannibalised to add 2x PCie and 2x PCI slots to MediaServer8.
These convert M.2 slots to PCIe to add some extra non-storage expansion opportunities. I had to remove the PCI brackets from the cards, but they work well.
To be used as unRaid Cache drive, mainly for storing domains/docker/system shares.
Found the NVMe to be running a little toasty, so added this to help regulate temps.
4x SSD Cage to fit in the 5.25" bays at the front of the case.
These PCIe USB 3.0 cards work really well with OSX so I pass them through to my VMs for Keyboard & Mouse.
Using these to expose the USB cards in the M'2 adapters to the outside of the case.
You can never have enough airflow.
You can never have enough screws!
I needed these to allow cables attach to the MB USB 3.0 headers which sit underneath a double-with GPU in the bottom slot. USB 3.0 header cables are stubborn items!

I just added all that up and it comes out well over £2K (£2,250 approx). And that's without storage!! Now, in fairness, I didn't pay retail for a lot of that, having picked up MB, CPU & Cooler used, and a lot of the other items I've had for a while etc. But still, a sobering exercise.

Here's the unRaid dashboard;

plenty of cores, could do with more RAM.....

And for those interested in how they IOMMU Groups break down on this MB, they are mighty fine, and very conducive to discrete passthrough;

1 comment:

JCook said...

This is great! Looking to do a similar upgrade to my unraid server in the near future!