Apollo Rebuild Part III

Apollo is finally complete!

All the new hardware has been installed, the server is finally permanently racked - let the uptime start ticking.

The final touches and installs have been done this weekend, making (at least this part) of the rebuild complete. While I'm already planning a CPU, motherboard and RAM upgrade to a newer socket at some point, I'm really happy with the way this has turned out.

If you've missed a part of this build, check out Part I and Part II.

Part 3 involved a new PSU, SSD mount and a little bit of cable management, let's get started.

The HDD being replaced is the last, and very old Seagate in my setup. I've been a huge fan of WD drives since my first NAS so figured it was time to swap it out. Here's the final S.M.A.R.T data report, this drive has been powered on for almost 5 years!

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   119   099   006    Pre-fail  Always       -       232462832
  3 Spin_Up_Time            0x0003   094   094   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       245
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   083   060   030    Pre-fail  Always       -       4514984055
  9 Power_On_Hours          0x0032   051   051   000    Old_age   Always       -       43645
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       229
183 Runtime_Bad_Block       0x0032   099   099   000    Old_age   Always       -       1
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0 0 0
189 High_Fly_Writes         0x003a   061   061   000    Old_age   Always       -       39
190 Airflow_Temperature_Cel 0x0022   069   039   045    Old_age   Always   In_the_past 31 (49 96 37 27 0)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       104
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       268
194 Temperature_Celsius     0x0022   031   061   000    Old_age   Always       -       31 (0 17 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       2
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       43647h+35m+11.711s
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       155696097859
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       94455556664

Pretty impressive.

Before shutting down Apollo I made sure I knew what the file structure was.

jeff@apollo:~$ ls -lh /mnt/storage/
total 36K
drwxrwxr-x 7 jeff jeff 4.0K Feb 16 14:53 backup
drwxr-xr-x 3 jeff jeff 4.0K Mar 10 07:37 complete
drwxr-xr-x 4 jeff jeff 4.0K Dec 29  2017 data
drwxr-xr-x 4 jeff jeff 4.0K Aug  5  2018 deluge
drwxr-xr-x 6 jeff jeff 4.0K Mar 10 07:36 incomplete
drwxr-xr-x 2 jeff jeff  16K Jul 16  2014 lost+found

The data folder previously held InfluxDB data, this has been moved over to the NAS. The rest is just a temporary holding space to keep uncompressed archives and then moved over to the NAS. At some point I'll start keeping backups on this disk too.

Time to shutdown and do the final bits.

This beast is being installed.

Yes, I know. This is a huge overkill for a low powered i3 build. I liked the idea of not having the fan spin at lower loads to keep the noise down, and this is future proofed. Oh, it's fully modular too which helps with cable management in the tiny 2U chassis.

And the least impressive bit of the build, a 3.5" to 2.5" drive holder for the SSD.
Didn't think the PSU would be this big. 
Pulled Apollo out of the cabinet, this is what it looked like before the final touches.

While the PSU here is smaller, it's not modular at all so the cables take up a bunch of space in the chassis. Both drives also need to be properly mounted.

PSU and drives out.
Removed two of the drive bays for some more space, and mounted the fan adapter to the chassis.
The single drive bay re-installed...
That ended up being just too short to fit the PSU.
Drive bay moved and PSU installed. 
And a little bit of cable management and we're done!

I'm really happy with the outcome. Small amount of cables and moved both drives to one drive cage.

The 80mm fans have also been configured to suck the hot air out.

Time for a test run, time to boot things up. Seeing the PSU fan not move at all is a little weird at first but it's made a 4dB difference in the noise levels. I've setup the BIOS to run the three 80mm fans and the CPU cooler at full tilt all the time. Even with this config Apollo only outputs 22dB of noise.

Initially I forgot to edit my fstab file while caused the boot to panic. Once I commented out the line that kept looking for the old Seagate drive things have been smooth sailing.

Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

This is the new disk that's installed, all looks healthy. I've setup an ext4 partition for storage. I went with the Red because I didn't need a lot of performance, but wanted a quieter and cooler running drive.

ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   253   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0027   100   253   021    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   000    Old_age   Always       -       3
  5 Reallocated_Sector_Ct   0x0033   200   200   140    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x002e   100   253   000    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       27
 10 Spin_Retry_Count        0x0032   100   253   000    Old_age   Always       -       0
 11 Calibration_Retry_Count 0x0032   100   253   000    Old_age   Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       3
192 Power-Off_Retract_Count 0x0032   200   200   000    Old_age   Always       -       0
193 Load_Cycle_Count        0x0032   200   200   000    Old_age   Always       -       31
194 Temperature_Celsius     0x0022   119   112   000    Old_age   Always       -       28
196 Reallocated_Event_Count 0x0032   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   253   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0008   100   253   000    Old_age   Offline      -       0

Looking good. Time to let the uptime ticker start.