Auch wenn die Festplatten per S.M.A.R.T überwacht und der Zustand der ZFS Pools regelmäßig mit dem Periodic Skripten berichtet wird, fehlt noch eine sofortige Benachrichtigung für den Fall, das einer der ZFS Pools ein Problem bekommt. Sollte also irgendein ZFS spezifisches Problem auftreten, möchten wir das sofort wissen. Dazu gibt es ein kleines Skript und Erweiterung der Monit Konfiguration.
NEU: Für ganz ungeduldige habe ich einen Konsole only Abschnitt. Da gibts nur Befehle, keine Erklärungen.
Letzte Aktualisierung:
Für dieses Skript habe ich mich von folgenden Quellen inspirieren lassen
Das daraus entstandene Skript ist eine sehr schlanke Abwandlung mit folgenden Änderungen:
Scrub
und Trim
wurden entfernt, da diese bereits mit den Periodic Skripten erledigt werdenAle erstes wird mit ee /usr/local/etc/monitrc
ganz unten folgender zusätzlicher check
hinzugefügt:
check program zfs_health with path "/root/zfs_health_check.sh"
if status != 0 then alert
Das dort hinterlegte Skript wird mit ee /root/zfs_health_check.sh
und folgendem Inhalt angelegt:
#! /bin/sh
/usr/bin/printf "%s\n\n" "$(/sbin/zfs list -o name,avail,used -d 0)"
/usr/bin/printf "%s\n\n" "$(/sbin/zpool list -o name,size,allocated,free,capacity,health)"
LISTPOOLS="$(/sbin/zpool list -H -o name)"
for POOL in ${LISTPOOLS}; do
HEALTH="$(/sbin/zpool list -H -o health ${POOL})"
ERROR="$(/sbin/zpool status ${POOL} | grep errors: | awk '{print $2}')"
if [ ${HEALTH} != ONLINE ]; then
exit 1
fi
if [ ${ERROR} != "No" ]; then
exit 1
fi
done
Abschließend noch mit chmod +x /root/zfs_health_check.sh
ausführbar machen und Monit mit service monit restart
neu starten.
Bei einem Fehler sendet Monit dann brav eine E-Mail mit den Details zum Fehler und betroffenem ZFS Pool.
Das Skript kann auch manuell ausgeführt werden:
fakepool
mit zpool offline fakepool /poolfiles/file1
eine Festplatte entfernen:
fakepool
mit zpool online fakepool /poolfiles/file1
die Festplatte wieder hinzufügen:
Voilá