{"id":6799,"date":"2020-06-01T10:28:57","date_gmt":"2020-06-01T08:28:57","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=6799"},"modified":"2021-08-10T01:08:42","modified_gmt":"2021-08-09T23:08:42","slug":"festplatten-nach-inaktivitaet-in-standby-versetzen-unter-proxmox-zfs-debian","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/festplatten-nach-inaktivitaet-in-standby-versetzen-unter-proxmox-zfs-debian\/","title":{"rendered":"Festplatten nach Inaktivit\u00e4t in Standby versetzen unter Proxmox\/ZFS (Debian)"},"content":{"rendered":"<p>Festplatten sind nicht unerheblich f\u00fcr den Gesamtverbrauch eines kleinen Server- oder NAS-Systemes verantwortlich. Vor allem wenn das System selbst 24\/7 l\u00e4uft. Es macht daher Sinn, die Festplatten bei nichtverwendung abzuschalten. Dies kann einiges an Strom und damit bares Geld sparen. Au\u00dferdem werden Ressourcen und damit auch die Umwelt geschont.<\/p>\n<h2 class=\"wp-block-heading\">Fallstricke beim Standby-Betrieb von Festplatten<\/h2>\n<p>Allerdings sollte man seine Laufwerke nicht einfach unkontrolliert in den Standby schicken. Wer zu euphorisch vorgeht, kann b\u00f6se \u00dcberraschungen erleben: Ist die Zeitspanne zur Abschaltung zu gering gew\u00e4hlt, wird die Festplatte m\u00f6glicherweise sehr oft ein und ausgeschaltet. Dies stellt eine hohe Belastung f\u00fcr das Laufwerk dar. Die Lebensdauer kann dadurch deutlich sinken.<\/p>\n<p>Dies kann man \u00fcber den SMART-Parameter 193 (<strong>Load Cycle Cound<\/strong>, manchmal auch <strong>Load\/Unload Cycle Count)<\/strong> pr\u00fcfen. Der Schreib-Lesekopf wird beim Ausschalten auf einer seitlichen Ruheposition geparkt. Auch beim Standby-Modus geschieht das. <\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># smartctl -a \/dev\/sda | egrep &quot;(Power_On_Hours|Load_Cycle_Count)&quot;\n  9 Power_On_Hours          0x0012   097   097   000    Old_age   Always       -       22738\n193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       1032<\/code><\/pre>\n<p>In diesem Beispiel geschah das bei der Platte <strong>sda <\/strong>bereits 1032 Mal. Aussagekr\u00e4ftig wird der Wert aber erst in Relation zu den Betriebsstunden. <\/p>\n<p>Es empfiehlt sich, diesen Wert zusammen mit ggf. anderen vorhandenen Protokolldateien \u00fcber das Standby-Verhalten eine Zeit lang zu beobachten. So sieht man, welche Auswirkungen die Konfigurations\u00e4nderungen haben. Falls erforderlich k\u00f6nnen diese angepasst werden, damit die Lebensdauer nicht leidet.<\/p>\n<h2 class=\"wp-block-heading\">Standby testen mit hdparm<\/h2>\n<p>Mit <strong>lsblk<\/strong> erh\u00e4lt man eine \u00dcbersicht der vorhandenen Partitionen und Laufwerke. Hier wird das jeweilige Laufwerk gew\u00e4hlt, das in den Standby-Modus versetzt werden soll. Auch wenn das System mehrere Platten besitzt: F\u00fcr den Anfang w\u00fcrde ich zun\u00e4chst mit einer Testen und die anderen sp\u00e4ter. Im Folgenden verwenden wir <strong>\/dev\/sda<\/strong>. Das &#8222;a&#8220; muss ggf. durch den jeweils gew\u00fcnschten Laufwerksbuchstaben ersetzt werden.<\/p>\n<p>Da der Energiesparmodus nicht von allen Festplatten unterst\u00fctzt wird, empfiehlt sich ein direkter Test zu Beginn. Mit dem Kommandozeilenwerkzeug <strong>hdparm<\/strong> k\u00f6nnen wir das Laufwerk sofort in den Standby versetzen. Es erm\u00f6glicht auch eine anschlie\u00dfende Pr\u00fcfung, ob es sich tats\u00e4chlich im Stromsparmodus befindet.<\/p>\n<p>Je nach Verwendungszweck des Systemes sollte man vorher sicherstellen, dass die Platte gerade nicht f\u00fcr wichtige Schreiboperationen ben\u00f6tigt wird. F\u00fcr die ersten Tests w\u00e4re es am besten, wenn keine Last auf dem Laufwerk liegt. <\/p>\n<p>Zun\u00e4chst den aktuellen Status auslesen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># hdparm -C \/dev\/sda\n\n\/dev\/sda:\n drive state is:  active\/idle<\/code><\/pre>\n<p>In der Regel sollte hier <strong>active\/idle<\/strong> stehen. Eine Seagate-Festplatte lieferte mir allerdings auch schon <strong>unknown<\/strong> zur\u00fcck. In den Standby-Modus versetzen lie\u00df sie sich trotzdem. Das testen wir anschlie\u00dfend in jedem Falle:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># hdparm -y \/dev\/sda\n\n\/dev\/sda:\n issuing standby command<\/code><\/pre>\n<p>Alternativ kann man mit <strong>-Y<\/strong> (gro\u00dfes Y statt y) eine sch\u00e4rfere Form w\u00e4hlen, falls -y nicht funktioniert. \u00dcber den <strong>-S<\/strong> Schalter zeigt uns das Tool im Anschluss, ob die Platte sich wirklich im Standby befindet:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># hdparm -C \/dev\/sda\n\n\/dev\/sda:\n drive state is:  standby<\/code><\/pre>\n<p>In diesem Beispiel hat es funktioniert. W\u00fcrde dort der gleiche Status wie zu Beginn stehen, gibt es zwei M\u00f6glichkeiten: Entweder hat es nicht funktioniert oder in der Zwischenzeit fand bereits wieder ein Zugriff auf die Platte statt. <\/p>\n<p><strong>Alternative: <\/strong>Manchmal weckt hdparm die Festplatte durch die Statusabfrage auf. Um das zu verhindern, kann <strong>smartctl<\/strong> genutzt werden. Es bietet einen speziellen Modus, bei dem Laufwerke im Standby nicht aufgeweckt werden.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">smartctl -i -n standby \/dev\/sda | grep &#039;^Power mode&#039;<\/code><\/pre>\n<p>Dass sich die Festplatte im Standby befindet, sollte je nach Umgebungsger\u00e4uschen auch h\u00f6rbar sein. Im Leerlauf kann man den geringeren Stromverbrauch auch mit einem Energiekostenmessger\u00e4t erfassen. Wenn wir mit den obigen Befehlen das Laufwerk erfolgreich in den Energiesparmodus versetzen konnten, ist diese Funktionalit\u00e4t gegeben und wir k\u00f6nnen einen Zeitplan anlegen.<\/p>\n<h2 class=\"wp-block-heading\">Zeitplan f\u00fcr den Energiesparmodus<\/h2>\n<p>Es gibt verschiedene M\u00f6glichkeiten um festzulegen, nach welcher Zeitspanne der Energiesparmodus einsetzt. Die einfachste ist mittels <strong>hdparm<\/strong>.<\/p>\n<h3 class=\"wp-block-heading\">Energiesparmodus mit hdparm<\/h3>\n<p>\u00dcber den Schalter -S kann ein Wert f\u00fcr die Inaktit\u00e4tsspanne angegeben werden. Dies ist jedoch keine direkte Zeitangabe in Minuten oder Sekunden, sondern ein Faktor. Je nach Wert variiert dieser: Zwischen 1 und 240 wird der Faktor mit 5 Multipliziert in der Einheit Sekunden. Mit dem Wert 240 legt man somit 20 Minuten fest. Weitere Unterteilungen findet man in der Manpage, meist wird man sich wohl im genannten Bereich befinden.<\/p>\n<p>Um dies zu testen, empfehle ich einen geringen Wert zu w\u00e4hlen. Nach der Ausf\u00fchrung zeigt einem hdparm den tats\u00e4chlich gesetzten Wert auch in lesbarer Form an. Rechenfehler werden also sp\u00e4testens dann bemerkt.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># hdparm -S 60 \/dev\/sda\n\n\/dev\/sda:\n setting standby to 60 (5 minutes)<\/code><\/pre>\n<p>Nun kann man warten und anschlie\u00dfend wie oben beschrieben pr\u00fcfen, ob sich das Laufwerk im Energiesparmodus befindet. Hat es funktioniert, sollte man sich hier einen realistischen Wert \u00fcberlegen. Pauschale Empfehlungen sind hier schwierig. Es h\u00e4ngt stark davon ab, wof\u00fcr das System genutzt wird und wie\/wie oft auf das betroffene Laufwerk zugegriffen wird. Am besten probiert man einen Wert f\u00fcr einige Tage aus. Parallel sollten der Load_Cycle_Count SMART-Wert beobachtet werden. <\/p>\n<p><strong>Hinweis<\/strong>: Die per hdparm-Aufruf gesetzten Einstellungen sind fl\u00fcchtig und werden nach dem n\u00e4chsten Neustart wieder zur\u00fcckgesetzt! Sollen sie (final) dauerhaft erhalten bleiben, m\u00fcssen sie in der Konfigurationsdatei \/e<strong>tc\/hdparm.conf<\/strong> gesetzt werden.<\/p>\n<h3 class=\"wp-block-heading\">Energiesparmodus mit hd-idle<\/h3>\n<p>Eine bessere Alternative ist <a href=\"http:\/\/hd-idle.sourceforge.net\/\" target=\"_blank\" rel=\"nofollow\">hd-idle<\/a>. Wird ein Laufwerk aus dem Standby geholt, protokolliert es dies mit Zeitstempel. Auch wenn hierbei eine Einrichtung notwendig wird, ist dies gerade f\u00fcr den Anfang ein wichtiges Hilfsmittel. \u00dcber den SMART-Parameter Load_Cycle_Count sehen wir n\u00e4mlich nur die Gesamtsume. F\u00fcr eine optimale Konfiguration ist aber wichtig zu wissen, <strong>wann<\/strong> dies geschieht. Mithilfe der Zeitabst\u00e4nde zwischen den Aufwachvorg\u00e4ngen kann die Konfiguration optimiert werden. Dar\u00fcber hinaus funktioniert hd-idle auch mit Festplatten, die unter hdparm Probleme bereiten. Dies trifft z.B. auf 4TB-Modelle der WD Red Serie zu.<\/p>\n<p>Zun\u00e4chst m\u00fcssen wir drei Abh\u00e4ngigkeiten installieren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt install debhelper fakeroot build-essential<\/code><\/pre>\n<p>Das Tool selbst kann von Sourceforge geladen werden. Anschlie\u00dfend muss man es kompilieren und ein paar Konfigurationsdateien kopieren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">wget https:\/\/netcologne.dl.sourceforge.net\/project\/hd-idle\/hd-idle-1.05.tgz\ntar xfvz hd-idle-1.05.tgz &amp;&amp; cd hd-idle\nmake &amp;&amp; make install\n\ncp debian\/hd-idle.default \/etc\/default\/hd-idle\ncp debian\/hd-idle.init \/etc\/init.d\/hd-idle<\/code><\/pre>\n<p>Unter Debian musste ich noch den Pfad zu hd-idle anpassen. Er ist in der Variable <strong>DAEMON<\/strong> hinterlegt. Hierzu \u00f6ffnet man die Datei \/etc\/init.d\/hd-idle mit einem Texteditor (z.B.) vim und ersetzt<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">DAEMON=\/usr\/sbin\/hd-idle<\/code><\/pre>\n<p>durch<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">DAEMON=\/usr\/local\/sbin\/hd-idle<\/code><\/pre>\n<p>Schlussendlich geschieht die eigentliche Konfiguration in \/etc\/default\/hd-idle. Hier ist <strong>START_HD_IDLE <\/strong>auf true zu setzen. Dabei geht es nicht nur um den Autostart. Steht die Variable auf false, unternimmt auch das Init-Skript nichts.<\/p>\n<p><strong>HD_IDLE_OPTS <\/strong>muss auskommentiert werden. Hier kann man mit <strong>-i<\/strong> die Leerlaufdauer in Sekunden setzen, nach der alle Festplatten in den Standby-Modus versetzt werden.  Mit <strong>-l<\/strong> l\u00e4sst sich eine Logdatei \u00fcber die Aufwachvorg\u00e4nge anlegen.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">HD_IDLE_OPTS=&quot;-i 600 -l \/var\/log\/hd-idle.log&quot;<\/code><\/pre>\n<p>Wichtig ist, dass die Logdatei <strong>NICHT <\/strong>auf einer anderen Festplatte liegen sollte! Ansonsten wird eine weitere Festplatte durch das Schreiben in die Datei aufgeweckt. Am besten legt man sie auf ein Laufwerk, dass immer l\u00e4uft wie die Systemplatte. Hier hat man in der Regel auch eine SSD, die nicht im Standby ist.<\/p>\n<p>Es ist auch m\u00f6glich, einzelne Laufwerke zu konfigurieren. Hierzu f\u00fcgt man <strong>-a \/dev\/sda -i 600<\/strong> ein. Die 600 Sekunden sind dann nur f\u00fcr das Laufwerk g\u00fcltig, welches zuvor mit -a festgelegt wurde. Wie immer ist f\u00fcr die finale Version<strong> \/dev\/disk\/by-uuid<\/strong> zu empfehlen, damit auch beim \u00c4ndern des SATA-Anschlusses die Platte korrekt zugeordnet wird.<\/p>\n<p>Schlussendlich kann man das Tool via init.d Skript starten (Debian generiert automatisch einen Systemd-Service, der dann auch genutzt werden kann):<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">\/etc\/init.d\/hd-idle start<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Proxmox weckt die Festplatten auf<\/h2>\n<p>Wird Proxmox verwendet, kommt noch eine weitere Besonderheit dazu: Der Dienst <code class=\"\" data-line=\"\">pvestatd<\/code> sammelt alle paar Sekunden Systeminfos. Diese werden in der Webschnittstelle dargestellt. Hierzu geh\u00f6ren auch die Infos der Laufwerke (freier Speicher etc). Wenn das Laufwerk in <strong>\/etc\/pve\/storage.cfg<\/strong> als Proxmox-Speicher konfiguriert ist, findet dieser Scan definitiv statt. <\/p>\n<p>Auf anderen Laufwerken soll er nicht durchgef\u00fchrt werden. Allerdings habe ich schon erlebt, dass dies dennoch geschieht. In beiden F\u00e4llen kann man die Platten in der Datei <strong>\/etc\/lvm\/lvm.conf<\/strong> ausschlie\u00dfen. Hierzu sucht man nach der Zeile <strong>global_filter<\/strong> und f\u00fcgt f\u00fcr jedes Laufwerk folgende Zeichenkette in den Array ein:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">&quot;r|\/dev\/sda&quot;<\/code><\/pre>\n<p>sda ist jeweils durch den Laufwerksnamen zu ersetzen. Anschlie\u00dfend das gesamte System neu starten und die Festplatte(n) wird\/werden nicht mehr von Proxmox im Standby gest\u00f6rt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Festplatten sind nicht unerheblich f\u00fcr den Gesamtverbrauch eines kleinen Server- oder NAS-Systemes verantwortlich. Vor allem wenn das System selbst 24\/7 l\u00e4uft. Es macht daher Sinn, die Festplatten bei nichtverwendung abzuschalten. Dies kann einiges an Strom und damit bares Geld sparen. Au\u00dferdem werden Ressourcen und damit auch die Umwelt geschont. Fallstricke beim Standby-Betrieb von Festplatten Allerdings &#8230;<\/p>\n","protected":false},"author":5,"featured_media":6805,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[391],"tags":[288,813,811,812,129],"class_list":["post-6799","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux-server","tag-debian","tag-energie","tag-proxmox","tag-standby","tag-strom-sparen"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6799","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=6799"}],"version-history":[{"count":4,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6799\/revisions"}],"predecessor-version":[{"id":7322,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6799\/revisions\/7322"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/6805"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=6799"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=6799"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=6799"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}