From 48f1e22f55118914fc0f045c12a2b1cdf103dff5 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 20 Dec 2013 00:45:35 +0100 Subject: [smartctl] New module: smartctl - Will currently check reallocated sectors and spin retry count - could be extended, but those seem to be the best indicators according to $SEARCH_ENGINE --- .../system/basic.target.wants/smartctl.service | 1 + .../smartctl/data/etc/systemd/system/smartctl.service | 8 ++++++++ .../data/opt/openslx/scripts/systemd-smartctl | 19 +++++++++++++++++++ 3 files changed, 28 insertions(+) create mode 120000 remote/modules/smartctl/data/etc/systemd/system/basic.target.wants/smartctl.service create mode 100644 remote/modules/smartctl/data/etc/systemd/system/smartctl.service create mode 100755 remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl (limited to 'remote/modules/smartctl/data') diff --git a/remote/modules/smartctl/data/etc/systemd/system/basic.target.wants/smartctl.service b/remote/modules/smartctl/data/etc/systemd/system/basic.target.wants/smartctl.service new file mode 120000 index 00000000..b0849c0c --- /dev/null +++ b/remote/modules/smartctl/data/etc/systemd/system/basic.target.wants/smartctl.service @@ -0,0 +1 @@ +../smartctl.service \ No newline at end of file diff --git a/remote/modules/smartctl/data/etc/systemd/system/smartctl.service b/remote/modules/smartctl/data/etc/systemd/system/smartctl.service new file mode 100644 index 00000000..ab268cbc --- /dev/null +++ b/remote/modules/smartctl/data/etc/systemd/system/smartctl.service @@ -0,0 +1,8 @@ +[Unit] +Description=Check HDD health status + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/opt/openslx/scripts/systemd-smartctl + diff --git a/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl b/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl new file mode 100755 index 00000000..6025c962 --- /dev/null +++ b/remote/modules/smartctl/data/opt/openslx/scripts/systemd-smartctl @@ -0,0 +1,19 @@ +#!/bin/ash + +# Check Reallocated_Sector_Ct and Spin_Retry_Count of local disk(s) + +FILE=$(mktemp) +for dev in /dev/sd?; do + smartctl -A "$dev" -f "brief" > "$FILE" || continue # should we report devices where smartctl doesn't work? + REALLOC=$(grep "^ *5 " "$FILE" | awk '{print $8}') + SPINRETRY_VAL=$(grep "^ *10 " "$FILE" | awk '{print $4}') + SPINRETRY_THR=$(grep "^ *10 " "$FILE" | awk '{print $6}') + if [ -n "$REALLOC" ] && [ "$REALLOC" != "0" ]; then + slxlog "smartctl-realloc" "Failing HDD: $dev has $REALLOC reallocated sectors!" "$FILE" + fi + if [ -n "$SPINRETRY_VAL" ] && [ "$SPINRETRY_VAL" -le "$SPINRETRY_THR" ]; then + slxlog "smartctl-spinretry" "Failing HDD: $dev has bad spin retry count! ($SPINRETRY_VAL/$SPINRETRY_THR)" "$FILE" + fi +done +rm -f -- "$FILE" + -- cgit v1.2.3-55-g7522