Festplatten unter Ubuntu Linux 16.04 Server bei Inaktivität in den Standby schicken

Wird NAS mit mehreren Festplatten betrieben auf die einen Großteil des Tages nicht zugegriffen wird, kann es Sinn machen die Festplatten nach einiger Zeit der Inaktivität in den Standby zu schicken. Dies spart Strom und kann die Lebensdauer der Festplatten erhöhen, falls sie nicht ständig ein und aus geschaltet werden.

Um Festplatten bei Inaktivität in den Standby zu schicken wird unter Linux meist das Programm hdparm verwendet. Einige Artikel im Internet schreiben das dies mit WD Red Festplatten von Wester Digital nicht möglich wäre. Das kann ich nicht nachvollziehen. Meine WD Red 6TB lassen sich mit hdparm unter Ubuntu 16.04 problemlos in den Standby schicken – mit einer kleinen Einschränkung die ich weiter unten beschreibe. In diesem Artikel beschreibe ich wie hdparm installiert und konfiguriert werden kann.

Installation

hdparm lässt sich mit nachfolgendem Befehl installieren.

$ sudo apt-get install hdparm

Eindeutige ID der Festplatten herausfinden

Die normal unter Linux verwendeten Identifier für Festplatten /dev/sdx können sich nach einem Neustart ändern. Daher ist es vorteilhaft eindeutige Identifier, die sogenannten UUIDs, der Festplatten zu verwenden um sie zu adressieren. Diese sind eindeutig einer Festplatte zugeordnet und ändern sich nach einem Neustart nicht. Ich verwende diese eindeutigen Identifier in diesem Artikel um die Festplatten zu adressieren, welche in den Standby geschickt werden sollen

Um die UUIDs von allen verbauten Festplatten zu bekommen kann folgender Befehl genutzt werden.

$ ll /dev/disk/by-uuid/ | grep sd[a-z]1
lrwxrwxrwx 1 root root  10 Apr 17 10:24 4b9460ad-f8a0-49b9-8b0e-54d71b6582f8 -> ../../sda1

In dem Beispiel ist 4b9460ad-f8a0-49b9-8b0e-54d71b6582f8 der eindeutige Identifier der einzigen verbauten Festplatte.

Bei einigen Konfigurationen wie einem verschlüsseltem Raid kann es sein, dass für eine Festplatte keine UUID angezeigt wird. Dann kann die PARTUUID verwendet werden. Sie kann mit folgendem Befehl ausgegeben werden.

$ ll /dev/disk/by-partuuid/ | grep sd[a-z]1
lrwxrwxrwx 1 root root  10 Feb 24 21:34 0eba060b-fe3a-96c1-85ce-4ce4d624e553 -> ../../sdb1
lrwxrwxrwx 1 root root  10 Feb 24 21:34 18857b94-51fd-42c4-94e2-261c5cac5f32 -> ../../sdf1
lrwxrwxrwx 1 root root  10 Feb 24 21:34 2f40a238-f61e-4c79-8c9d-14f560b47aaa -> ../../sde1
lrwxrwxrwx 1 root root  10 Feb 24 21:34 56521ba2-9e62-10d3-a98e-869f9df173e3 -> ../../sdd1
lrwxrwxrwx 1 root root  10 Feb 24 21:34 943596a0-41a5-4e91-db93-01707287a631 -> ../../sdc1
lrwxrwxrwx 1 root root  10 Feb 24 21:34 e8bedd9e-e5cf-2cda-9b72-67a3b689f33a -> ../../sda1

In diesem Beispiel ist z.B. e8bedd9e-e5cf-2cda-9b72-67a3b689f33a die PARTUUID für die Festplatte sda oder 2f40a238-f61e-4c79-8c9d-14f560b47aaa für die Festplatte sde.

Kompatibilität der Festplatte prüfen

Bevor hdparm aktiviert wird sollte für alle Festplatten geprüft werden, ob sie kompatibel sind. Dies kann mit nachfolgendem Befehl geprüft werden.

$ sudo hdparm -C /dev/disk/by-partuuid/e8bedd9e-e5cf-2cda-9b72-67a3b689f33a
/dev/disk/by-partuuid/e8bedd9e-e5cf-2cda-9b72-67a3b689f33a:
drive state is:  active/idle

Die Ausgabe active/idle zeigt, dass die Festplatte kompatibel ist. hdparm ist nicht kompatibel falls die Ausgabe Unknown zeigt.

hdparm konfigurieren

hdparm kann unter Ubuntu zentral über die Datei /etc/hdparm.conf konfiguriert werden. Dazu muss diese Datei mit einem Editor unter Rootrechten geöffnet und bearbeitet werden. Für jede Festplatte muss ganz am Ende folgendes hinzugefügt werden.

/dev/disk/by-partuuid/e8bedd9e-e5cf-2cda-9b72-67a3b689f33a {
spindown_time = 240
}

Die erste Zeile enthält den kompletten UUID bzw. PARTUUID Pfad der Festplatte. Für UUID ist dies /dev/disk/by-uuid/<UUID> und für PARTUUID /dev/disk/by-partuuid/<PARTUUID>.

Die zweite Zeile spezifiziert die Zeit, nach der die Festplatte in den Standby geschickt wird. Laut Handbuch wird für Werte von 1 bis 240 die Zeit in Schritten von 5 Sekunden angegeben, was einen Bereich von 5 Sekunden bis 20 Minuten ergibt. Die Werte von 241 bis 251 ermöglichen es die Zeit in 30 Minuten Schritten anzugeben, was einem Bereich von 30 Minuten bis 5,5 Stunden entspricht. Höhere Werte haben besondere Bedeutungen. Die im Beispiel angegebenen 242 ergeben somit Eine Stunde welche die Festplatte inaktiv sein muss bevor sie in den Standby geschickt wird.

Für meine WD Red Festplatten habe ich bemerkt, dass Werte kleiner als 10 Minuten automatisch auf 10 Minuten hochgesetzt werden. Somit führen alle Werte von 1 bis 120 zu einer Zeit von 10 Minuten. Für den Bereich von 121 bis 240 scheint es wie Spezifiziert zu funktionieren. Werte Größer 240 scheinen gar nicht zu funktionieren. Ich kann aber nicht sagen, ob sich Ubuntu 16.04 oder meinen Festplatten nicht an die Spezifikation halten. Aufgrund dieser Besonderheit habe ich mich entschieden meine Festplatten nach 20 Minuten Inaktivität (spindown_time = 240) in den Standby zu schicken.

Nachdem die Konfiguration wie gewünscht angelegt wurde muss nun nur noch das System neu gestartet werden, damit die Werte übernommen werden.

$ reboot

Prüfen ob eine Festplatte im Standby ist

Um zu prüfen ob sich eine Festplatte aktuell im Standby befindet kann folgender Befehl genutzt werden.

$ sudo hdparm -C /dev/disk/by-partuuid/e8bedd9e-e5cf-2cda-9b72-67a3b689f33a

Nachfolgende Ausgabe zeigt, dass sich die Festplatte im Standby befindet.

/dev/disk/by-partuuid/e8bedd9e-e5cf-2cda-9b72-67a3b689f33a:
drive state is:  standby

Befindet sich die Festplatte nicht im Standby sieht die Ausgabe folgendermaßen aus.

/dev/disk/by-partuuid/e8bedd9e-e5cf-2cda-9b72-67a3b689f33a:
drive state is:  active/idle

3 Gedanken zu „Festplatten unter Ubuntu Linux 16.04 Server bei Inaktivität in den Standby schicken“

      1. Hallo Oliver,
        danke für die gute Beschreibung.

        aber bei mir scheint die hdparm.conf auch nicht zu funktionieren

        Habe jetzt mit meinem neu aufgesetztem ubuntu server 20.04.02 und WD Red HDD folgendes festgestellt:
        – Einträge in die /etc/hdparm.conf scheinen nicht zu funktionieren
        – Befehle im Terminal mit „sudo hdparm -S 120 …“ zum setzen eines timeout von 10 min. bis zum standby funktionieren UND diese überstehen ein „sudo reboot“ !
        – Wird aber ein „sudo poweroff“ und ein neuer Power-On durchgeführt, dann ist diese Konfiguration verloren

        Vielleicht kannst Du mal prüfen, ob die Platten nach Power-OFF-ON noch in den Standby gehen ?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert