From 0736090ef6533a574cbd67676e0a2a7ce536f430 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Wed, 20 May 2026 09:29:40 +0200 Subject: [PATCH] =?UTF-8?q?README.md=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..944ee8a --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# ZFS Disk Spindown Watchdog für Debian 13 + +Dieses Projekt löst das Problem, dass Festplatten in einem ZFS-Pool (insbesondere Enterprise-Platten wie die Western Digital Gold Serie) wegen des permanenten Metadaten-Grundrauschens von ZFS nicht automatisch in den Stromsparmodus (**Spindown**) wechseln. + +Anstatt auf den unzuverlässigen, internen Hardware-Timer der Festplatten zu setzen, überwacht das Watchdog-Script die tatsächlichen Lese- und Schreibsektoren über den Linux-Kernel (`/proc/diskstats`). Herrscht 10 Minuten lang absolute Funkstille auf einer Platte, wird der Standby-Befehl aktiv erzwungen. + +## Features +* **Massive Stromersparnis:** Senkt den Idle-Verbrauch (z.B. bei 5 x WD Gold von ~55W auf ~27W). +* **Sicherer Lese-/Schreibschutz:** Jede echte Aktivität (egal ob Daten gelesen oder geschrieben werden) setzt den Timer sofort zurück. Kein verfrühtes Einschlafen während Daten fließen! +* **Volle Transparenz:** Alle Aktivitäten und Spindown-Befehle werden direkt in das System-Journal (`journalctl`) geloggt. +* **Hardware-Optimiert:** Deaktiviert die fehleranfälligen Hardware-Timer der Festplatten beim Booten, um Konflikte zu vermeiden. + +--- + +## Installation & Einrichtung + +Befolge diese Schritte nacheinander auf deinem Debian 13 Server. Alle Befehle müssen als `root` oder mit `sudo` ausgeführt werden. + +### 1. Scripte platzieren und ausführbar machen +Kopiere die beiden Bash-Scripte in das Verzeichnis für lokale Binärdateien und setze die Ausführungsrechte: + +```bash +# Kopieren +sudo cp set-hdd-power.sh /usr/local/bin/ +sudo cp zfs-spindown.sh /usr/local/bin/ + +# Ausführbar machen +sudo chmod +x /usr/local/bin/set-hdd-power.sh +sudo chmod +x /usr/local/bin/zfs-spindown.sh +``` +*(Hinweis: Prüfe vorab in der `zfs-spindown.sh`, ob die Festplatten-Buchstaben und die `IDLE_TIME` für dein System passen.)* + +### 2. systemd-Service einrichten +Kopiere die Service-Konfigurationsdatei in das systemd-Verzeichnis: + +```bash +sudo cp zfs-spindown.service /etc/systemd/system/ +``` +*(Der Service führt das Boot-Script `set-hdd-power.sh` automatisch vor dem eigentlichen Watchdog-Script aus.)* + +--- + +## Dienst starten & Überwachen + +Lade den systemd-Manager neu, aktiviere den Dienst für den automatischen Start bei jedem Boot und starte ihn jetzt: + +```bash +sudo systemctl daemon-reload +sudo systemctl enable zfs-spindown.service +sudo systemctl start zfs-spindown.service +``` + +### Live-Logs einsehen +Um zu beobachten, was der Watchdog tut und welche Festplatte eventuell gerade geweckt oder schlafen gelegt wurde, nutze diesen Befehl: + +```bash +sudo journalctl -u zfs-spindown.service -f +``` + +### Passiver Status-Check +Wenn du wissen willst, welche Platten aktuell schlafen, ohne sie durch die Abfrage aufzuwecken: + +```bash +sudo hdparm -C /dev/sd[a-e] +``` + +--- + +## Wichtige Zusatzkonfiguration für ZFS (smartd) + +Sollte eine Festplatte trotz des Scripts alle 30 Minuten grundlos aufwachen, liegt das meist an den Standardabfragen des SMART-Daemons. + +1. `/etc/smartd.conf` öffnen: + ```bash + sudo nano /etc/smartd.conf + ``` +2. Die Zeile `DEVICESCAN` suchen und um den Parameter `-n standby,q` ergänzen: + +```text + DEVICESCAN -d removable -n standby,q -m root -M exec /usr/share/smartmontools/smartd-runner + ``` +3. SMART-Daemon neu starten: + ```bash + sudo systemctl restart smartmontools + ``` + +--- +**Lizenz:** Do What The Fuck You Want To Public License (WTFPL) – Viel Spaß beim Stromsparen! 🪙📉 / Wenn deine Festplatten explodieren wegen dem Script, sorry! \ No newline at end of file