content/blog/2022-11-27-server-build.org

e8577d98faff1bed72ba6f2d204b8b44c6827c23
cleberg.net/content/blog/2022-11-27-server-build.org rendered · source · history · blame · raw

148 lines · 6574 bytes

  1#+date:        <2022-11-27 Sun 00:00:00>
  2#+title:       Assembling a High-Performance Rack-Mounted Server from PC Components
  3#+description: Detailed instructions on selecting components, assembling, and configuring a rack-mounted server suitable for advanced computing tasks in a professional or laboratory setting.
  4#+slug:        server-build
  5#+filetags:    :server:hardware:build:
  6
  7* The Dilemma
  8
  9For years, I have been using desktops and a Raspberry Pi as the backbone
 10of my homelab. I have always wanted to move toward a single dedicated
 11server that could handle all of my tasks, but was often put off by the
 12complexity of the choices (and financial roadblocks at some times).
 13
 14However, after purchasing a small server rack this past year, I have
 15been researching to see what kind of rack-mounted server I could buy. I
 16initially bought a Dell R720XD loaded up with everything I could ever
 17want in a server - but I did not care for it. It was far too loud, and
 18the age of the CPU/RAM was something I wanted to improve upon.
 19
 20After returning the R720XD, I decided that I wanted to build my own
 21server with modern, consumer-grade PC components. This time, I am very
 22happy with the results of my server.
 23
 24* Components
 25
 26I'll start by listing all the components I used for this server build:
 27
 28- *Case*:
 29  [[https://www.rosewill.com/rosewill-rsv-r4100u-black/p/9SIA072GJ92825][Rosewill
 30  RSV-R4100U 4U Server Chassis Rackmount Case]]
 31- *Motherboard*: [[https://nzxt.com/product/n7-b550][NZXT B550]]
 32- *CPU*: AMD Ryzen 7 5700G with Radeon Graphics
 33- *GPU*: N/A - I specifically chose one of the few AMD CPUs that support
 34  onboard graphics.
 35- *RAM*: 64GB RAM (2x32GB) /Max of 128GB RAM on this motherboard/
 36- *Boot Drive*: Western Digital 500GB M.2 NVME SSD
 37- *HDD Bay*:
 38  - 10TB WD White /(shucked, moved from previous server)/
 39  - 8TB WD White /(shucked, moved from previous server)/
 40  - 2 x 8TB WD Red Plus /(Black Friday lined up perfectly with this
 41    build, so I grabbed two of these)/
 42- *PSU*: Corsair RM850 PSU
 43- *Extras*:
 44  - Corsair TM3Q Thermal Paste
 45  - Noctua 120mm fan /(replacement for front case fan)/
 46  - 2 x Noctua 80mm fans /(replacement for rear case fans)/
 47  - CableMatters 6Gbps SATA Cables
 48
 49* Building the Server
 50
 51This took quite a while for me to build (in my opinion of time),
 52totaling around 3 hours from start to finish. The case has some peculiar
 53construction, so you have to completely remove the ODD & HDD cages to
 54install the motherboard and other components first.
 55
 56Now, I've never built a computer of any kind before, so I was quite
 57nervous. Personally, the only challenging part was getting the CPU
 58cooler to screw into the motherboard without sliding the thermal paste
 59around too much underneath. I'm still not entirely sure if I did a great
 60job of it, but nothing's broken yet.
 61
 62The main components were all fine and simple. However, installing the
 63hard drives is slightly tedious as I need to power off the server and
 64completely unscrew the HDD cage to install or remove any drives.
 65Additionally, the drives are screwed directly into the metal cage with
 66small screws, which are quite a bit different from the HDD trays I'm
 67used to in other machines.
 68
 69Seeing that the cases with hot-swap bays were 3-4x the price, I'm okay
 70dealing with the tedium of removing the cage to install new drives.
 71
 72* Software
 73
 74I'm not going to dive into the software as I have done so in other
 75recent posts. However, I wanted to note that I am using Alpine Linux on
 76this server and hosting most services inside Docker. No virtual machines
 77(VMs) and very few bare-metal services.
 78
 79* The Results
 80
 81How did my build turn out? Well, after migrating my other servers and
 82their services over, I found that my server is blazing fast. The
 83heaviest of my applications, Plex, is handled with ease. Even 4k
 84streaming seems to be effortless.
 85
 86I am very happy with the results and will likely continue to improve on
 87this server as the years go by rather than buying another used server
 88online.
 89
 90** Mistakes I Made
 91
 92This post wouldn't be complete unless I wrote about the mistakes I made
 93while building. The only real mistake I made beyond a "whoops I dropped
 94a screw" related to airflow and fan direction.
 95
 96While installing the two new hard drives that showed up on 2022-11-30
 97and getting ready to install the case in my rack, I noticed that the
 98hard drive temperatures were quite high.
 99
100I used the =smartctl= command for each of my drives (=/dev/sda= through
101=/dev/sdd=):
102
103#+begin_src sh
104doas smartctl -a /dev/sda | grep Temperature_Celsius
105#+end_src
106
107The results were unusual - all four drives were idling at ~44-46 degrees
108Celsius. The only drive that was cooler was my 10TB drive, which was at
10938 degrees Celsius. I noted that this 10TB drive was also closest to the
110case fan.
111
112#+begin_src sh
113ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
114# /dev/sda
115194 Temperature_Celsius     0x0002   147   147   000    Old_age   Always       -     44 (Min/Max 22/46)
116# /dev/sdb
117194 Temperature_Celsius     0x0002   141   141   000    Old_age   Always       -     46 (Min/Max 21/48)
118# /dev/sdc
119194 Temperature_Celsius     0x0002   144   144   000    Old_age   Always       -     45 (Min/Max 19/61)
120# /dev/sdd
121194 Temperature_Celsius     0x0002   171   171   000    Old_age   Always       -     38 (Min/Max 14/56)
122#+end_src
123
124After looking to see if I could fit more fans into the case, I noticed
125that the 120mm fan used for intake from the front of the case was
126actually pushing air out of the case by mistake. This fan sits right in
127front of the hard drive bay.
128
129Once I flipped the fan around to act as an intake fan, the temperatures
130dropped immediately! They are now idling at ~31-33 degrees Celsius. A
131single fan spinning the wrong way caused my drives to idle 10-15 degrees
132higher than they should have.
133
134#+begin_src sh
135ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
136# /dev/sda
137194 Temperature_Celsius     0x0002   209   209   000    Old_age   Always       -     31 (Min/Max 14/56)
138# /dev/sdb
139194 Temperature_Celsius     0x0002   196   196   000    Old_age   Always       -     33 (Min/Max 19/61)
140# /dev/sdc
141194 Temperature_Celsius     0x0002   203   203   000    Old_age   Always       -     32 (Min/Max 21/48)
142# /dev/sdd
143194 Temperature_Celsius     0x0002   196   196   000    Old_age   Always       -     33 (Min/Max 22/46)
144#+end_src
145
146This was a silly error to make, but I'm glad I found it today before I
147screwed the case into the rack and made things a lot more tedious to
148fix.