Festplatten unter Linux bei Inaktivität in den Standby bringen
Thema: Das hier angefügte Skript überwacht auf Linux Systemen die Plattenaktivität und erzwingt den Standby.
Das Programm ist vor allem für selbstgebaute Nas Server interessant. Desktops und kommerzielle Nas Systeme verfügen i.d.R. bereits über ausgearbeitete Energiesparfunktionen.
Vorbemerkung: Welches Problem wird gelöst
Viele Disks ignorieren die APM Einstellungen bzw. die spindowntime oder aktivieren nur den weniger effizienten Parkmodus, obwohl die hochspezialisierten Controller die idealen Voraussetzungen bieten, das Powermanagement auf der Platte zu steuern. Wieso das so ist, kann ich nur raten, vielleicht Mängel in der Firmware, möglicherweise ist das Profil auf die "problematischen" Poweruser (Rechenzentren) zugeschnitten. Es kann auch die USB-Sata Schnittstelle eine Ursache sein. Die Folge ist ein viel zu hoher Energieverbrauch.
Welchen Betriebszustand die Platte annimmt, kann man schwer feststellen, es sei denn man hat ein Energiemessgerät angeschlossen. Tatsächlich reagieren aber alle Platten auf einen ausdrücklichen Standby Befehl. Zur Gegenüberstellung: im Standby verbraucht eine Platte nur 1-2 Watt (gegenüber 4- 8 Watt im Normal-/Parkbetrieb). Der Verbrauch ist übrigens im Regelfall von der Grösse der Festplatte unabhängig, eine 1 TB Platte hat die gleiche Leistungsaufnahme wie der 8 TB Kollege.
Das unten folgende Skript hat die Aufgabe, das Monitoring der Festplatte auf den Nas-Controller zu verlegen und bei Inaktivität den Standby zu aktivieren.
Allgemeine Überlegungen zur Planung eines energieeffizienten NAS Ein NAS System ist schnell erstellt: ein oder mehrere Festplatten an den Computer angehängt, Netzwerkfreigabe betätigt, fertig ist das NAS. Mit der Zeit und Zahl der Festplatten wachsen die Ansprüche in Punkto Verfügbarkeit und Geschwindigkeit. Aber auch der Energieverbrauch gerät zunehmend ins Ungleichgewicht: Ein gewachsener Festplattenpark zieht ordentlich Strom. Kommt dazu noch ein Desktop hinterlässt das einen kräftigen Stiefelabdruck im Regenwald. Hier steht der Wunsch nach steter Verfügbarkeit unserem Kosten- und Ökobewusstsein deutlich im Weg.
Ein erster Weg aus der Krise ist die Wahl der passenden Hardware. Statt eines Desktops reicht ein genügsamer Minicomputer oder ein dediziertes Nas System. Ein Odroid oder Raspberry verbraucht regenwaldfreundliche 2 W/h und ist für den Dauerbetrieb geeignet, Auch moderne Intelsysteme sind dank stromsparender Prozessoren und fortgeschrittenem Powernanagement.eine brauchbare Wahl.
Das zweite Augenmerk gilt den Festplatten. Eine grosse Festplatte ist im Verbrauch günstiger als mehrere kleine. Das Ausrangieren ineffizienter alter Platten ist daher eine der effektivsten Massnahmen. Ein weiterer Punkt ist ein optimiertes Powermanagement. Eine WD Platte bspweise.benötigt im Dauerbetrieb 4-6W, könnte aber in den meisten Anwendungsfällen einen Grossteil des Tages/Nacht in den Standby geschickt werden, mit einem Verbrauch von nur mehr 1-2W. Leider funktioniert das Stromsparmanagement (APM) nach meiner Beobachtung bei den meisten Festplatten nicht oder nur unzureichend. Hier kann man mit dem unten vorgestellten Skript nachbessern.
Darüberhinaus: Auch die Wahl der richtigen Backupstrategie sollte man frühzeitig planen. Es nützt nichts, heute Daten zu haben, die man morgen nicht mehr hat, weil die Festplatte kaputt geht, oder verschwindet: egal ob gestohlen, verliehen oder Umzug. Dazu ist es zuerst erforderlich, Prioritäten festzulegen. Ist der Film von der Einschulung der Tochter ein unverzichtbares Kulturerbe, das der Nachwelt erhalten bleiben muss? Ganz sicher will man aber folgendes nicht verlieren: Arbeits/Finanzunterlagen, Zeugnisse, Rechtsanwaltsunterlagen, Doktorarbeit etc. Die zweite Frage ist, wo will man sichern. Heutzutage kann man Speicherplatz in Rechenzentren mieten (Cloud), das sollte man für wichtige Daten auch nutzen.
https://www.heise.de/ct/ausgabe/2013-1-Energiespareinstellungen-bei-Festplatten-konfigurieren-2331846.html (kostenpflichtiger Artikel auf heise.de, leider etwas alt)
https://mrattun.de/festplatten_standby.html
https://forum.openmediavault.org/index.php/Thread/20301-OMV-for-ROCK64-and-other-RK3328-devices-soon/
http://www.tacticalcode.de/2013/01/festplatte-automatisch-in-standby-mit-hdparm-und-udev.html
http://www.gtkdb.de/index_7_243.html
Das folgende Skript überwacht die Festplattenaktivitaet und schaltet nach ca. 40 Minuten die angeschlossen Festplatten in den Standby. Die Vorlage habe ich auf folgender Seite gefunden https://linuxwiki.de/hdparm und geringfügig modifiziert. Unglücklicherweise hatte ich gerade selber ein Tool für diesen Zweck geschrieben bevor ich auf die Seite gestossen bin. Das unten wiedergebene Skript ist allerdings kürzer und damit besser. Die Autoren schreiben auf der Linuxwiki Seite übrigens ebenfalls, dass sie aufgehört haben, sich mit den Festplattenparametern rumzuärgern und nur noch das Skript verwenden.
Installation:
a) Installation von Hdparm Einzige Voraussetzung ist eine installierte Version des Tools hdparm
sudo apt install hdparm' nachholen.
Kontrolle, ob die benötigten Programme vorhanden sind:
sudo which diff
sudo which hdparm
b) prüfen, ob das Laufwerk /run/shm ein Ramdrive ist: Das Ramdrive dient zum Zwischenspeichern der Laufwerkstabelle
sudo df -h
hier sollte neben dem Laufwerk die Bezeichnung Ramfs oder tmpfs (oder so ähnlich stehen), falls nicht, muss ein anderes Laufwerk gesucht werden (das ist übrigens der einzige Fall, in dem man an das Skript Hand anlegen muss). Bei den meisten SBCs (Raspberry und Co) werden sowieso die temporaeren Verzeichnisse in den Speicher verlagert um die Flash Speicherkarte zu schonen, hier sollte keine Aktion nötig sein.
c) Skript speichern das unten stehende Skript unter
/usr/local/bin/disk_spindown.sh
speichern.
d) Skript ausführbar machen:
sudo chmod 744 /usr/local/bin/disk_spindown.sh
e) Test:
Programm starten: (zum Testen kann eine verkürzte Zeit angegeben werden)
sudo /usr/local/bin/disk_spindown.sh 60 3 & # Erlaeuterung: 60 Sekunden, 3 Durchlaeufe
Vorsicht:
Status unknown heisst nur, dass die Abfrage des Status nicht funktioniert, Standby war aber vermutlich trotzdem erfolgreich.
f) Autostart aktivieren
wenn der Test erfolgreich war, muss das Programm noch in der Autostart verankert werden, dazu in der Datei /etc/rc.local folgende Zeile am Ende einfügen (aber vor exit 0)
sudo /usr/local/bin/disk_spindown.sh & >/dev/null
g) Rechner neustarten und evtl. noch einmal testen. sudo ps -ef | grep -ivw grep | grep -i disk_spindown # Pruefe ob Prozess läuft
for disk in {a..f} ; do echo $(hdparm -C /dev/"sd$disk" 2> /dev/null | grep "sd$disk" -A 1) ; done # aktueller Status der Platten
sudo cat /var/log/disk_spindown.log # Logfile
Nach spätestens 40 Minuten sollte die Festplatte in den Standby gehen. Zur Bestätigung kann man die Festplatte anfassen und auf Laufgeräusche prüfen. Wenn man ein Energiekostenmessgerät hat, kann man ausserdem die Stromaufnahme prüfen.
Anmerkungen:
Ein spindown ist eine radikale Massnahme, wodurch die Festplatte verschleisst (u.a. kann es sein, dass der Kopf über die Platte schleift bevor die notwendige U.geschw. erreicht ist - je nach Platte und Firmware- auch der Motor wird beansprucht sowie die Mechanik beim Parken und kalibrieren. Ein einmaliger spinup ist unproblematisch, 100x pro Tag ist zu viel). Der voreingestellte Überwachungszyklus von 25 Minuten ist ein Kompromiss. Man kann aber auch einen höheren Wert waehlen (z. B. 30 Min):. Hinweis: Bei einem Überwachungszyklus von 30 Minuten erfolgt der spindown nach 30-59 Minuten.
sudo /usr/local/bin/disk_spindown.sh 1800 & >/dev/null
Leider kann keine Garantie für die korrekte Funktion gegeben werden, hier liegt die Verantwortung beim Nutzer. Wenn die Festplattenzugriffe alle 5 Minuten für einige Sekunden einfrieren oder die Festplatte hörbar hoch und runter fährt, sollte man das Logfile prüfen (allerdings hatte ich ein solches Problem noch nie). Gelegentlich wird empfohlen, einen apm Wert von 255 einzustellen, das kann ich aus meiner Praxis nicht bestaetigen, schaden tut es aber auch nicht. Das Problem mit apm ist, dass die Einstellungen historisch gewachsen und teilweise widersprüchlich sind, deshalb ist es oft eine gute Strategie die Werkseinstellungen einfach zu belassen und apm nicht anzufassen (Ausnahme sind bekannte Werksfehler, siehe Linkliste, das ist aber selten).
Die Verringerung der Stromaufnahme liegt auf meinem System bei 50 Prozent (zwei Watt pro Festplatte), dazu kommen der SBC, GB-Switch, Wlan, USB3 Hub und die Netzteile -> insgesamt 12 W/h im idle Zustand fiür das gesamte NAS. Das ist gut aber streng genommen immer noch mehr als unbedingt nötig, fürs Nichtstun. Allerdings hatte das selbe System vor einem Jahr (vor den Optimierunge) noch 70 W/h im Verbrauch, daher liegt das Ergebnis im Zielbereich. (Theoretisch könnte man, sobald alle Platten schlafen gelegt wurden, die Systeme herunterfahren und auch die Festplatten vom Strom trennen und auf ein Wake on lan warten. Damit käme man auf <3 Watt. Allerdings gibt die Hardware das momentan nicht her, ein vollständiger Reboot dauert nebenbei bemerkt 45 Skunden, falls das Nas verschlüsselt wurde muss ggf. auch ein PW eingegeben werden)
**********
Die Suche nach dem Limit
Bei der Frage, wie man den Verbrauch weiter optimieren kann, muss ich etwas weiter ausholen.
Früher hat man den Computer eingeschaltet und am Ende wieder ausgeschaltet - exklusiver Datenzugriff und intelligentes Powermanagement inklusive.
Will man den Datenzugriff zentralisieren (für Tablet, Smartphone oder von unterwegs) kommt eine neue Betriebsart hinzu, der 24/7 Dauerbetrieb.
Um das Thema zu verdeutlichen: Ich hatte einmal einen Desktop, der nur einen Zweck hatte: das Scannen von Urlaubsantraegen. Nach 6 Monaten fiel mir auf, dass er sich nicht wie erwartet abgeschaltet hatte. Die Messung ergab: stolze 100 W Stromverbrauch ohne Last. Etwas überrascht habe ich nachgerechnet: 100 W * 24h = 2,4 KWh * 180 Tage= 432 KWh ~ 150 Euro bzw 300 Euro im Jahr. (Zum Vergleich: der durchschnittlich Haushalt verbraucht 2,5 KWh pro Tag). Einmal Knopf drücken hätte mir also 150 Euro gespart. Bisschen teuer und ökologisch unvertraeglich.
In einem Büro kann man die Technik nachts abschalten, aber grundsätzlich gilt für Serverdienste, dass sie zu jeder Zeit zur Verfügung stehen sollen. Das gilt auch im Homeoffice wenn man von unterwegs den Terminkalender abruft. Man kann die Anforderungen sicherlich herunterschrauben z.B. indem man nachts nicht auf Zugriff alle Daten haben muss, aber sobald man die Verfügbarkeit des Dienstes einschränkt, ist der Sinn verfehlt. Das gilt selbst dann, wenn der Dienst die meiste Zeit ja gar nicht genutzt wird.
Die zielfuehrende Lösung ist Standby, bzw. intelligentes Ressourcenmanagement. Es muss nicht immer der ganze Hofstaat bereitstehen, wenn der König ein Glas Wasser will.
Zurueck zum Thema:
Im Nas haben wir 2 wichtige Verbraucher: den Controller und die Festplatten selbst.
Controller:
Sehr beliebt sind scheckkartengrosse Arm Boards als Controller, da sie bei einem Verbrauch von nur 2 Watt rund um die Uhr laufen können, ohne merklich ins Gewicht zu fallen. Leider haben die Hersteller der Boards die Trends verschlafen.
Galt es früher bei Intel als schicksalhaft gegeben, dass pro Prozessor ein Kraftwerk benötigt wird, hat sich hier einiges getan. Der Durchschnittsverbrauch liegt nur mehr bei 10 bis 30 Watt, bei Inaktivität sinkt der Wert dank ausgeklügeltem Powermanagement sogar unter 1 W. Vergleicht man demgenueber ein Arm Board, das inkl. Peripherie 4-5W benötigt, ist das einstige Sparwunder (bei typisch 2-4 Std. aktiver Betriebszeit am Tag), auf einmal nur noch zweite Wahl.
Festplatten:
Externe Festplatten sind meist ueber USB verbunden. Intern ist der Massenspeicher aber mit einem SCSI oder Sata Controller ausgestattet. D.h. ein Adapter sorgt fuer die Umsetzung. Geht die Platte in den Standby, bleibt die USB Schnittstelle aktiv (das muss sein, sonst kann die Platte nicht mehr aus dem Ruhezustand aufwachen). Dadurch benötigt die Festplatte 2 Watt im Ruhezustand statt <1W wie sie eine Platte nur mit Sata Technik benötigen wuerde. Eine Lösung gibt es möglicherweise trotzdem: sobald man den USB Adapter am Computer abschaltet, sinkt die Platte in Tiefschlaf, mit einem Verbrauch nahe Null, das gilt für Platten aller Hersteller.
Leider fällt diese Möglicjkeit bei ARM Boards aus: der USB Controller kann softwareseitig nicht abgeschaltet werden (wir erinnern uns: null Powermanagement).
Aber auch Intel Boards schneiden in dem Punkt nicht besser ab.Auch hier kann USB nicht abgeschaltet werden. Oder genauer gesagt, je nach Board. Der Grund ist, wenn Maus oder Netzwerkkomponenten über USB angeschlossen sind, kann kein Signal zum wecken kommen.
Ein weiteres Schmankerl wirft uns hier Seagate zu. Die Festplattenreihe "USB plus Hub" bietet 2 extra USB Ports, was dem notorisch knappen Vorrat an USB3 Anschlüssen am PC entgenkommt. Leider ist gut gemeint nicht immer gut durchdacht. Offenbar handelt es sich um einen aktiven Hub. Alle dahinter angeschlossenen Geraete bleiben daher am Leben, auch nachdem der PC längst ausgeschaltet wurde. Das betrifft insbesondere auch angeschlossene Festplatten. Nach meinem Befinden eine grandiose Fehlleistung.
Fassen wir zusammen:
die meisten genannten Probleme liegen in Mängeln bei der USB Anbindung (speziell bezogen auf das Powermanagement). Boards mit Sata Schnittstelle sind aber nicht automatisch die bessere Wahl, das hängt von den Details ab.
Synology Nutzer demonstrieren im Forum dass ein Raid durchaus mit 1W (im Standby) auskommen kann (siehe Linkliste)
TKaiser hat beschrieben, dass er einen Mini Server mit 128GB SDX Karte bei 1W betreibt. Das ist für manche Anwendungsfälle sicher eine spannende Alternative (siehe Linkliste).
Ich habe auch Hd-Idle getestet. Inhaltlich ist die Arbeitsweise die selbe wie im Skript, d.h. es läuft auf dem NAS Controller ein Daemon, der die Plattenaktivitaet ueberwacht. Es gibt einen Unterschied: Hd-Idle erkennt keine im Betrieb gesteckten Festplatten (das betrifft vor allem USB, Sata Platten werden meines Wissens im Betrieb nicht gesteckt). Ob es irgendwann ein Update dafür geben wird, ist derzeit ungewiss. Jedenfalls ist das Programm eine Alternative, falls eine Festplatte eimal mit HD-Parm nicht zusammenarbeiten sollte, da es direkt die SCSI Scdhnittstelle anspricht.
Es wurde in verschiedenen Foren behauptet, dass HD-Parm zwar funktionieren, aber die Festplatte nach einigen Minuten wieder wecken würde. Erst HD-Idle hätte das Problem gelöst. Das ist technisch allerdings unmöglich, da HD Parm kein Dienst ist und von selber die Platte nicht ansprechen kann. Wahrscheinlicher ist, dass über HD Parm APM Einstellungen vorgenommen wurden, die die Firmware nicht beherrscht.
Eine kleine Falle scheint es bei ext4 zu geben. Bei Auswahl der Schnellformatierung beendet ein daemon (ext4lazyinit) die Formatierung spaeter im Hintergrund. So lange kann natürlich auch ein standby nicht funktionieren.
Zur Kontrolle der Festplattenaktivität bzw. Datentransfer ist das kleine Tool dstat nuetzllich. Mit dem Tool kann man auch recht einfach die Transferrate ueberwachen (das Programm ist nicht in der Standardinstallation). Weitere Tipps gibt die Linuxwiki: https://linuxwiki.de/hdparm#.
Die Log Datei wird nach jedem Rechnerstart neu angelegt und erreicht nach 1 Jahr Betrieb ca. 5 MB.
>>> Skript start
#!/bin/bash
# Notes:
# the original source can be found
# https://linuxwiki.de/hdparm#disk_spindown.sh
# I felt free to do some minor changes
# - delay is performed before the first check, to avoid unnecessary standby procedure after boot
# - not existent drives are skipped
# - output to logfile /var/log/diskspindown.log
# - optional parameter: spindowntime may be overwritten with param 1 (default: 1200)
# - optional parameter: new maxcount may be set with param 2 (default: 0, respective infinit)
# - contact: nikolausdulgeridis at gmail.com
# Purpose of this script:
# Check for disk data transfer and spin them down after approx. 20 min
# explanation: often harddrive firmware fails to spindwon with hdparm -B oder -S settings.
# but the hdparm -y command works directly with (nearly) every disk.
# So that is a script for monitoring that harddrives.and spin them down after a given time
# documentation: http://linuxwiki.de/hdparm
#
# Installation:
# ---------------
# For this script hdparm must be installed, but not configured!
# Only a apm=255 is maybe needed in the hdparm.conf for the Drive.
#
# - Put it to /usr/local/bin/disk_spindown.sh
# - Set the Permissons sudo chmod 744 /usr/local/bin/disk_spindown.sh
# - Startup: we put a new line in /etc/rc.local for systemwide start.
# /usr/local/bin/disk_spindown.sh & >/dev/null
# exit 0
#
# Now you can reboot the pc, for activate or to activate a change.
#
# #
# # *** some information for older disks ***
# #
# # Western Digital Green Harddrives (mostly not suitable with hdparm -S or -B)
# please check your PATH settings if you run into problems, also make sure your script is executing with root permissions
# especially when using crontab, it may happen, that the path settings differ from what you expect.
# so you should test under real conditions, to be sure its working
# typical paths