Files
2026-05-20 09:30:15 +02:00

88 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 wegden dem Script explodieren - sorry!