Festplatten in automatisierten Abläufen stromsparend einsetzen

1. Ausgangssituation

Festplatten sind für den Dauerbetrieb gedacht. Das Einschalten des Rechners, in den eine Festplatte eingebaut ist, schaltet auch die Platte ein. Der Rechner fährt hoch und die Platte läuft so lange wie der Rechner eingeschaltet ist. Bei externen Platten ist das Ein- und Ausschalten eher für den Anwendungsfall des manuellen An- und Abstöpselns z.B. per USB-Anschluss vorgesehen.

Soll der Einsatz einer Platte wie beispielsweise zu nächtlichen Datensicherungen nur sporadisch erfolgen und die Platte in der restlichen Zeit nicht laufen, sind einige Hürden zu bewältigen, wenn das Ein- und Ausschalten nicht jedesmal von Hand geschehen soll.

1.1. Hürde: Standby

Viele Platten haben einen Standby-Modus. Die Drehung der Platten wird eingestellt (spin down), die Mechanik geparkt und das Gerät in einen Schlafmodus versetzt. Praktischerweise kann dies an einen wählbaren Zeitraum der Inaktivität geknüpft werden so dass die Platte selbsttätig nach einer Zeit der Untätigkeit in Schlaf verfällt und nur selbsstätig erneut hochfährt, wenn wieder auf die Platte zugegriffen wird.

Dies ist die Betriebsform, die für eine Platte ideal wäre, die nur gelegentlich zum Einsatz kommt, wie es beispielsweise für nächtliche Datensicherungen der Fall ist.

Allerdings kommt es vor, dass die Platte im Schlafmodus ein Signal bekommt, das sie wieder zum Laufen bringt, auch, wenn gar nicht auf die Platte zugegriffen wurde. Das kann auch vorkommen, wenn die Platte während des Schlafmodus nicht im Dateisystem eingehängt ist. Dieses Verhalten lässt sich nicht zuverlässig unterbinden, wenn die Platte eingeschaltet ist.

1.2. Hürde: Betriebsbereitschaft

Festplatten sind unmittelbar nach dem Einschalten des Stroms oder dem Aufwachen aus dem Schlafmodus noch nicht betriebsbereit. Die Scheiben im Inneren beginnen zu drehen, es dauert einen Moment, bis die Betriebsdrehzahl erreicht ist und die Schreib- / Leseköpfe in Position sind. Es kann also nicht einfach mit einer Datensicherung begonnen werden.

In dieser Phase des Hochfahrens können noch keine Kommandos an die Platte gesendet werden. Kommandos, die während des Hochfahrens an die Platte fließen, werden ignoriert oder führen zu einem Fehler. Es wäre hier dienlicher für einen programmatischen Ablauf, wenn die Ausführung des Programmes einfach warten würde, bis die Platte bereit ist, bevor das nächste Kommando ausgeführt wird, aber dies lässt sich in einem Skript nicht erkennen.

Es müssen Wartezeiten in den Ablauf eingebaut werden, die auf der Erprobung beruhen, wie lange es gewöhnlich dauert, bis die Platte bereit ist.

2. Schaltbare Steckdose

Mit der Verwendung einer schaltbaren Steckdose [1] lässt sich zuverlässig regeln, wann die Platte läuft. Nächtliche Datensicherungen werden in einen automatisierten Ablauf eingebettet, der das kontrollierte Ein- und Ausschalten einschließt.

Zum Ausgleich der fehlenden Kontrolle über die Betriebsbereitschaft räumen Pausen im Ablauf genügend Zeit zum Hoch- und Herunterfahren der Platte ein. Der Ablauf lässt sich grob in die folgenden Schritte unterteilen:

  • Einschalten

  • Daten sichern

  • Ausschalten

Was dabei im Einzelnen zu berücksichtigen ist und welche Kommandos mit Linux zur Automatisierung der Vorgänge nötig sind, ist nachfolgend genauer beschrieben.

2.1. Einschalten

Strom einschalten

Kommando: wget -O "-" http://192.168.178.26/relay/0?turn=on > /dev/null 2>&1
Die Platte fährt hoch und ist nach einer gewissen Wartezeit bereit zum Einhängen ins Dateisystem

An dieser Stelle muss in den Ablauf eine Wartezeit von ca. ein bis zwei Minuten bis zur Betriebsbereitschaft der Platte eingebaut sein.

Standby abschalten

Kommando: hdparm -S0 /dev/sdd1
Die Platte wird auch während Pausen bei der Datensicherung nicht unkontrolliert heruntergefahren

Einhängen

Kommando: mount /dev/sdd1 /media/extplatte
Der Inhalt ist über das Dateisystem zugänglich

2.2. Daten sichern

Nun können Befehle zur Datensicherung ausgeführt werden. Hierzu kann beispielsweise ein Skript dienen.

2.3. Ausschalten

Schreiben beenden

Kommando: sync
Hier wird dem System mitgeteilt, dass eventuell noch nicht auf die Platte geschriebene Inhalte nun zuende geschrieben werden sollen. Das System wartet, bis alle Daten geschrieben sind. In einem Skript nachfolgende Befehle wie z.B. zum Aushängen und Ausschalten des Datenträgers werden erst ausgeführt, wenn alle Daten geschrieben sind.

Aushängen

Kommando: umount /dev/sdd1
Mit dem Aushängen aus dem Dateisystem werden Zugriffe auf das Dateisystem der Platte unterbunden.

Ruhemodus

Kommando: hdparm -S5 /dev/sdd1
Die Aktivierung des Standby-Zustands bewirkt, dass die Drehung der Platten gestoppt und die Mechanik geparkt wird (spin down). Die Option -S5 bewirkt, dass erst nach 25 Sekunden der Inaktivität der Standby-Modus ausgelöst wird.

Nach der Aktivierung des Standby-Zustands muss abermals eine kleine Pause von ein bis zwei Minuten im Ablauf eingebaut sein, da nicht bestimmt werden kann, wann genau die Platte den Vorgang abgeschlossen hat.

Strom ausschalten

Kommando: wget -O "-" http://192.168.178.26/relay/0?turn=off > /dev/null 2>&1
Das Kappen der Stromzufuhr wirkt wie das Betätigen des Ausschalters an der Platte: Das Gerät verbraucht keinen Strom mehr und kann nicht durch unkontrollierte Signale zum Starten gebracht werden.

3. Steuerung

Um die erwähnten Wartezeiten zwischen einzelnen Schritten zu erzielen, dürfen die Kommandos nicht hintereinander weg in einem Skript ausgeführt werden. Die zeitliche Abfolge muss festgelegt sein.

Da der gesamte Vorgang der Datensicherung ohnehin jede Nacht oder auch öfter - zumindest jedenfalls regelmäßig - wiederholt werden soll, bietet sich bei Linux die Verwendung von cron an. Nachfolgend die Einträge in der Datei /etc/crontab:

Einträge in /etc/crontab für eine Wiederholung des Ablaufs jede Nacht um 2:05 Uhr
05 02   * * *   root    wget -O "-" http://192.168.178.26/relay/0?turn=on > /dev/null 2>&1
06 02   * * *   root    /etc/bak/sicherung
45 02   * * *   root    hdparm -S5 /dev/sdd1
47 02   * * *   root    wget -O "-" http://192.168.178.26/relay/0?turn=off > /dev/null 2>&1

Das Skript /etc/bak/sicherung enthält die bereits beschriebenen Kommandos:

Das Skript zur Automatisierung der Datensicherung einschließlich einzelner Befehle zur Festplattensteuerung
#!/bin/sh

hdparm -S0 /dev/sdd1
mount /dev/sdd1 /media/extplatte

# hier Daten sichern
# z.B. rsync -a /media/ssd/quellpfad /media/extplatte/zielpfad

sync
umount /dev/sdd1

Einzelne Schritte sind mit Hilfe der Datei /etc/crontab wie zuvor beschrieben an feste Zeiten geknüpft. Das Ein- und Ausschalten wird jeweils als eigener Schritt ausgeführt, um ausreichend Zeit für diejenigen Aktionen der Plattenmechanik einzuräumen, deren Beginn und Ende nicht exakt aus einem Programm bzw. Skript heraus kontrolliert werden können.

4. Schlussbemerkungen

Die Mittel des Betriebssystems erlauben die Automatisierung einer regelmäßigen Datensicherung. Unterstützt durch eine schaltbare Steckdose [1] und ein wenig zusätzliche Skript-Arbeit kann der Ablauf das automatische Ein- und Ausschalten einer Festplatte einschließen.

Ein weiterer Vorteil des Einsatzes einer schaltbaren Steckdose: Die Verwendung der Festplatte kann aus der Ferne erfolgen. Auch, wenn zu anderen Zwecken als zur Datensicherung die Platte benötigt wird, muss nicht am betreffenden Rechner gearbeitet werden, um die Platte zu bedienen.

5. Verweise

[1] Artikel zur Nutzung einer schaltbaren Steckdose: https://uhilger.de/data/doc/2020/07/strom-schalten.adoc