Festplatte in Standby schicken mit TLP und hdparm

Aktive Festplatten benötigen Energie, erzeugen Wärme, lassen den Lüfter laufen, verbrauchen dadurch noch mehr Energie und das meist völlig sinnlos, weil sie die meiste Zeit sowieso nicht benötigt werden. Daher sollte man Festplatten nach Möglichkeit bei Nichtgebrauch in den Standby schicken.

In heutigen NAS-Systemen arbeiten oft 2 und mehr große HDDs. Proprietäre Lösungen wie Synology oder QNAP haben daher längst Standby-Lösungen integriert. Ein normales Linux-Betriebssystem lässt die Festplatten allerdings 24/7 rotieren und erzeugt dadurch sinnlosen Energiebedarf. Nicht benötigte Festplatten sollten daher abgeschaltet werden

Voraussetzung ist dass das eigentliche System nicht auf einer der Festplatten liegt, da diese dann beständig wieder aufgeweckt werden würde und die Festplatte dadurch unnötigen Belastungen ausgesetzt wäre. Je nach Hardware kann man das eigentliche System z. B. auf eine kleine SSD installieren oder auch auf einen USB 3-Stick, der immer angeschlossen ist.

Grundsätzlich kann Linux mittels hdparm Festplatten bei Nicht-gebrauch in den Standby-Modus schicken. Hierzu ist lediglich eine Anpassung der Konfigurationsdatei /etc/hdparm.conf notwendig. Leider haben viele Distributoren die Situation verschlimmbessert indem sie die hdparm.conf ignorieren oder mit Skripten umgehen. Ubuntu und openSUSE sind hier unrühmliche Beispiele.

Eine einfache Möglichkeit das Problem zu beheben besteht in der Nutzung von TLP. Eigentlich handelt es sich dabei um eine Lösung zum Energiesparen auf Notebooks (ursprünglich sogar nur Thinkpads). Es lässt sich aber auch hervorragend auf Server- und Desktopsystemen nutzen.

Die Installation erfolgt bei vielen Distributionen direkt aus den Paketquellen. Bei openSUSE beispielsweise via:

# zypper in tlp

Anschließend muss die Konfiguration angepasst werden. Dies geschieht abhängig von der Distribution über über die Datei /etc/default/tlp oder /etc/tlp.conf

Folgender Abschnitt ist dabei von Interesse:

# Disk devices; separate multiple devices with spaces. 
# Devices can be specified by disk ID also (lookup with: tlp diskid). 
# Note: DISK parameters below are effective only when this option is configured. 
# Default: "nvme0n1 sda" 
 
#DISK_DEVICES="nvme0n1 sda" 
 
# Disk advanced power management level: 1..254, 255 (max saving, min, off). 
# Levels 1..127 may spin down the disk; 255 allowable on most drives. 
# Separate values for multiple disks with spaces. Use the special value 'keep' 
# to keep the hardware default for the particular disk. 
# Default: 254 (AC), 128 (BAT) 
 
#DISK_APM_LEVEL_ON_AC="254 254" 
#DISK_APM_LEVEL_ON_BAT="128 128" 
 
# Hard disk spin down timeout: 
#   0:        spin down disabled 
#   1..240:   timeouts from 5s to 20min (in units of 5s) 
#   241..251: timeouts from 30min to 5.5 hours (in units of 30min) 
# See 'man hdparm' for details. 
# Separate values for multiple disks with spaces. Use the special value 'keep' 
# to keep the hardware default for the particular disk. 
# Default: <none> 
 
#DISK_SPINDOWN_TIMEOUT_ON_AC="0 0" 
#DISK_SPINDOWN_TIMEOUT_ON_BAT="0 0"

Unter DISK_DEVICES legt man fest welche Festplatten betroffen sein sollten. Im obigen Beispiel lediglich sda. Man könnte hier aber auch mehre Festplatten mit Leerzeichen getrennt angegeben.

Im zweiten Abschnitt legt man den APM-Level fest. Bei mehr als einer angegebenen Festplatte müssen die Werte nun ebenfalls für jede Platte angegeben und mit Leerzeichen getrennt werden. Viele Distributionen nehmen hier 254, was aber ein Abschalten verhindert. Hier muss man ein bisschen experimentieren, da das Verhalten je nach Festplatten-Modell unterschiedlich sein kann. Bei 128 (was oft auch für Notebooks verwendet wird) habe ich bei meinen WD Red Modellen gute Erfahrungen gemacht.

Der dritte Abschnitte steuert die Zeit, nach der die Festplatte ohne Zugriffe abgeschaltet werden. Die im Beispiel aufgeführten 120 bedeutet 10 Minuten. Der Wert ist ebenfalls für jede Platte anzugeben.

Abschließend aktiviert und startet man den Dienst:

# systemctl enable tlp
# systemctl start tlp

Mittels des folgenden Kommandos kann man überprüfen ob die Festplatte wie gewünscht in den Standby geht.

# hdparm -C /dev/sda

Folgende Ausgabe erscheint wenn die Festplatte korrekt in den Standby geht:

/dev/sda:  drive state is:  standby

Kommt hingegen folgende Ausgabe ist die Festplatte aktiv:

/dev/sda:  drive state is:  active/id

Mehr aus dem Blog

Warum man „Face unlock“ mit einem Google Pixel 7 nicht nutzen sollte

Biometrische Entschlüsselung ist ein Thema für sich. Selbst wenn man dem nicht gänzlich ablehnend gegenüber steht, sollte man nicht leichtfertig jede Lösung nutzen. Gesichtserkennung...

iOS und Android können VPN umgehen

VPN ist für Anonymität einfach keine gute Idee. Wer dafür noch weitere Gründe braucht, muss sich nur die aktuellen Berichte über das iPhone-Betriebssystem iOS...

Mastodon – So schnell kann es gehen

Im Frühjahr, als die Kaufabsichten von Elon Musk publik wurden, schrieb ich einen skeptischen Kommentar, was den prognostizierten massenhaften Wechsel zu Mastodon betrifft. Meine...

Vertrauen – Warum Werbung zur Monetarisierung manchmal gut ist

Früher hat man etwas bei Stiftung Warentest gelesen oder einen Ratgeber aus einem angesehenen Verlag gekauft. Vertrauen transportierte die Marke des Verlages. Heute vertrauen...