The Server

After much searching and a consultation with /r/homelab, I’ve settled on a server solution that I believe meets all of the server requirements laid out in my initial entry. With my requirements and budget, all signs seemed to be pointing to the Lenovo ThinkServer TS-140.

The TS-140 is Lenovo’s entry-level server targeted at small businesses. It can often be be found with an Intel Core i3 processor for less than $250. It can also be configured with an Intel E3 Xeon processor, which makes it completely capable of operating as a vSphere host. Though it only has 4 memory slots, it can be configured with up to 32GB of RAM, and can use ECC memory which will be useful for my purposes. It’s also on the VMware supported hardware list for ESXi 6. It’s also whisper quiet when it’s on.

On the downside, it only has 5 SATA ports and officially only supports 4 drives at a time. Lenovo also made the decision to run SATA power through the motherboard rather than directly from the power supply itself. This seems iffy for connecting multiple drives when the box is under load. Fortunately, there’s an easy solution for this problem which I’ll get to in a bit.

After looking through the configurable options for the TS140 and sleeping on it for a couple of nights, I decided to attempt to locate a used model for sale. The only configurable feature that mattered to me was the processor, as I’ll be adding/replacing everything else to suit my needs. I already knew I wanted a Xeon instead of an i3, but current and previous generations of the TS140 have been configurable with one of three different Xeon E3 processor options: an E3-122x v3, an E3-124x v3, or an E3-127x v3. (The specific model from each of the three categories depends on when the TS140 was originally purchased.) While each of the three has four cores, the main difference between the three is clock speed. However, the E3-124x and E3-127x models also have 8 threads compared to the 4 of the E3-122x models. This is important since I intend to use this hardware for virtualization.

So, with that in mind, I was on the hunt for a used TS140 with some version of the Xeon E3-124x v3 or E3-127x v3. Ideally, I wanted to find this hardware for less than $500. As I started poking around on eBay and Craigslist it became immediately clear that most of these are purchased with the low-end specs. There were i3’s and Xeon E3-122x’s a plenty.

Eventually I was able to find a reputable eBay seller with a TS140 containing a 3.4GHz Xeon E3-1245 v3 for less than $435. Within a week I had what looked to me like new condition hardware in my hands. Props to eBay seller esisoinc for the clean hardware. I’d definitely buy from them again.

ThinkServer 140
This is a Lenovo ThinkServer TS140. There are many like it, but this one is mine.

With my TS140 in hand, I started thinking through exactly how I wanted to configure it. I already knew that I’d add 32GB of ECC memory and an Intel quad-port 1Gbps NIC. The real challenge will be the drive configuration. Ideally, I’d like to configure two solid-state drives in a RAID-1 array for hosting virtual machines, with four WesternDigital Red drives in a RAID-10 array for bulk data storage. As I mentioned earlier, the TS140 sends power for SATA devices through the motherboard, which doesn’t leave me feeling great about trying to attach six drives to it. Additionally, the motherboard only supports “fake RAID” via BIOS for Windows operating systems. Finally, the biggest problem is that it only has five onboard SATA ports.

Uh oh. Five does not equal six.
Uh oh. Five does not equal six.

Fortunately the fixes for these problems are easy. Since the TS140 uses a standard ATX power supply, I plan to swap out the factory PSU with something that can power the SATA drives directly. It will require a Lenovo motherboard power adapter because Lenovo uses a silly proprietary connector, but that’s a $5 purchase at Amazon.

To solve the I/O issue, I plan to purchase a PCI-E RAID card to connect the drives. This will most likely be either an IBM M1015 or an LSI 9260-8i card. Using either of those will give me the option of flashing the card to “IT mode” for use as an HBA instead of a RAID card, should I choose to deploy something like FreeNAS so that I can reap the benefits of ZFS for file storage. Note that if I do decide to go that route, I’ll likely need a second PCI-E RAID card to support the RAID-1 array for the SSDs I intend to keep VMs stored on.

Finally, there’s the issue of the TS140 only officially having four drive bays. It turns out that this isn’t exactly true. I suspect that Lenovo only lists the four bays that can accommodate 3.25-inch hard drives because after the optical drive is connected there are only 4 SATA ports left over. As it turns out, there are two 5.25-inch drive bays (including the optical drive bay), two 3.25-inch drive bays and a 2.5-inch bay that could easily accommodate two stacked 2.5-inch SSDs. Here’s a picture to make those locations more clear.

The TS140 interior with drive bays labeled.

Two of the WD Red drives for my RAID-10 array will be installed in the lower 3.25-inch bays. I’ll install one of the SSDs for the RAID-1 array in the 2.5-inch bay. My intent is to remove the optical drive from the top 5.25-inch bay (because I have no use for it) and install one WD Red drive there. Lastly, the fourth WD Red will be installed in the 5.25-inch bay below the optical bay in an OWC Multi-Mount bracket, which will allow the second SSD for the RAID-1 array to piggyback on top of the 3.25-inch drive.

I believe this configuration should allow for all six drives to be mounted with plenty of power and the necessary I/O ports. Since the best-laid plans rarely pan out, I’m not going to assume I’ve covered all my bases here. I expect surprises. I’ll update going forward as I purchase and install the hardware and configure the server. At some point I’ll also attempt to detail the plans for reconfiguring our home network, which really another project entirely.