Time for an update – It’s been more than 3 years now since I set up my Dell T5500 home server in it’s current form and in short, it’s been running like a dream. Just one of the RAID drives failed over time, which I’ll outline below, I will also go into detail about the current hardware setup and VM services running, the addition of a UPS battery backup and more.
One of the WD Green 3TB drives failed late last year, after 816 days of uptime. The Green drives are designed for desktop storage use, not so much NAS use, so I wasn’t surprised that it eventually failed. The positioning was internal on the T5500 server, sandwiched against the door panel, out of the way of the main airflow. These two drive positions run the warmest, normally about 6-8 degrees warmer than the actively cooled external enclosure, as can be seen in the SMART info below.
194 Temperature_Celsius 0x0022 109 103 000 Old_age Always - 41 194 Temperature_Celsius 0x0022 107 097 000 Old_age Always - 43 194 Temperature_Celsius 0x0022 107 093 000 Old_age Always - 43 194 Temperature_Celsius 0x0022 115 104 000 Old_age Always - 35 194 Temperature_Celsius 0x0022 120 115 000 Old_age Always - 30 190 Airflow_Temperature_Cel 0x0032 060 052 000 Old_age Always - 40
As expected, mdadm threw a degraded warning via email, and I dropped by the local computer shop to purchase a WD Red 3TB replacement drive. Easy to swap in, with minimal but still some downtime, as my drives are not hot-swappable. Rebuilding into the new drive takes a while, especially since rebuild performance is intentionally throttled to preserve performance for network shares and VMs.
USB Drive Wear
When I initially set up the server, I didn’t want to allocate SSD space to the host OS (Ubuntu 14.04 LTS), instead booting the entire server off a Sandisk 32GB USB stick. Drive wear and tear on flash memory can be a concern, especially over an extended time, however there are some things which can be done to mitigate this. Firstly, mounting tmpfs (/tmp) as a RAM disk, with an initial allocation of up to 50% of total RAM, depending on free RAM availability. This doesn’t get used much anyway, mostly just for package updates, and with the large amount of free memory (about 30% of 48GB total is unused), using more RAM is a no-brainer. In addition, system logs can be written to the RAID array directly, or sent to a remote rsyslog server for parsing. Alternatively, they can be emailed regularly, if mail server space is not at a premium. However, logs only total about 2-3MB a week for the entirety of services.
Along the way I decided to grab a small sized APC UPS as the power in my area sometimes flickers and the wiring is also fairly old in the house. I grabbed an APC BK500EI UPS (500VA). It additionally connects to the server via USB and works perfectly with the apcupsd daemon to control functions, automation and monitor status. It even provides an estimated battery runtime based on current load (which usually floats around 10-15 minutes). In the event of a lengthy blackout, pre-defined scripts will flush all writes and gracefully shut down VMs before shutting the main server down. I also hooked up my modem/router and entire RAID array to the UPS for added redundacy. In an average month, the UPS triggers about once or twice, usually for small periods of time (< 1 minute), saving an ugly shutdown. I would highly recommend one for any home server, if only for data integrity.
DATE : 2017-01-29 13:55:45 +1100 VERSION : 3.14.10 (13 September 2011) debian CABLE : USB Cable DRIVER : USB UPS Driver UPSMODE : Stand Alone STARTTIME: 2016-11-13 11:07:55 +1100 MODEL : Back-UPS CS 500 STATUS : ONLINE LINEV : 244.0 Volts LOADPCT : 58.0 Percent Load Capacity BCHARGE : 100.0 Percent TIMELEFT : 11.4 Minutes SENSE : Medium DWAKE : 000 Seconds DSHUTD : 180 Seconds LOTRANS : 180.0 Volts HITRANS : 266.0 Volts ITEMP : 29.2 C Internal BATTV : 13.7 Volts LINEFREQ : 50.0 Hz
I have been adjusting my download automation over time, the entire process is more or less set and forget, here’s how it stands now (for links to these services, see list further down):
TV Shows -> Add wanted TV series to Sickrage -> Sickrage detects new episodes via TVDB -> Sickrage triggers periodic Usenet/Torrent searches -> Download is sent to monitored folder for processing -> Episode is correctly named and filed onto RAID -> Sickrage sends trigger to Plex Server to run a partial library update to fetch episode metadata -> Episode shows up on devices / Email is sent.
Movies -> Add wanted movie to Couchpotato at minimum desired quality -> Once Movie is released on physical disk, Couchpotato begins periodic searches for minimum quality, with higher preference given to specific release groups or formats -> Movie is downloaded via Torrent/Usenet to specified folder -> Movie is correctly named, with IMDB ID suffix and filed into Movies folder -> Plex picks up new movie added and fetches metadata -> Episode shows up on devices / Email is sent
Podcasts / Youtube -> PocketCasts on Android picks up nearly all the podcasts I want, but a few are only on Youtube. Youtube has been notoriously unreliable for notifications and updates, so I rely on Flexget to read Youtube channel subscriptions -> New Youtube video appears on a desired channel -> If keywords match, or for all videos, then send to youtube-dl to download in desired format -> Output is either a video file or audio file, automatically filed into appropriate folder -> Audio files are synced via Syncthing to mobile devices, ready to listen.
For more detailed information about my current home setup, see this page.