TIL: QNAP NAS per CLI schlafen legen und wieder aufwecken

Worum geht’s?

Ich nutze hier ein NAS von QNAP (TS-251+ mit zwei je 10 Terabyte fassenden 3,5″ Hard Disks) für Backups und andere Storage-Aufgaben.

Nachdem ich im Haus großflächig Strommessgeräte ausgerollt habe, zeigte sich recht schnell, dass das Ding ein kleiner Stromfresser ist.

Die Leistungsaufnahme im Normalbetrieb ist etwa 21 Watt – entsprechend rund 180 kWh pro Jahr. Im Sleep-Modus sind es dagegen nur 1 Watt bis maximal 2 Watt.

So kam der Wunsch auf, das NAS bei Nichtgebrauch in den Sleep-Modus zu schicken und es bei Bedarf auch wieder aufzuwecken. Und zwar ohne (a) mich dafür erst im Web-Interface anmelden zu müssen oder (b) womöglich zum Gerät zu laufen und eine Taste drücken zu müssen.

Die Optionen in der Benutzeroberfläche des NAS („put hard drives to sleep“) boten keinen stabil funktionierenden Weg, den Sleep-Modus wie gewünscht zu konfigurieren. Also musste ein anderer Weg gefunden werden.

In den Sleep-Modus

Auf dem QNAP NAS läuft ein Linux – hier gibt es eine große Zahl an Möglichkeiten um ein System in den Sleep-Mode zu versetzen; die Kernel-Dokumentation erklärt ausführlich.

Am Ende läuft es darauf hinaus, zwei Werte nach /sys zu schreiben, um das System schlafen zu legen:

1
2
echo "deep" > /sys/power/mem_sleep
echo "mem" > /sys/power/state

Testen lässt sich das sehr einfach: per ssh auf dem NAS einloggen und die beiden Werte schreiben. Funktioniert.

Das alles lässt sich schnell in ein File schreiben und schon hat man ein Tool an der Hand, mit welchem man via ssh das NAS schlafen legen kann – sei es manuell in der Shell oder im Falle von macOS eingebettet in Automator bzw. neuerdings Shortcuts:

1
2
3
#/usr/bin/env bash

ssh nas 'echo deep > /sys/power/mem_sleep && echo mem > /sys/power/state'

Aufwecken

Liegt das QNAP NAS erstmal im Schlaf, lässt es sich auf zwei Arten wieder aufwecken:

  1. per Tippen auf den An-/Aus-Schalter
  2. über das Senden eines speziellen IP-Pakets („Wake on LAN“)

wakeonlan[1] ist ein kleines Tool, mit welchem man dieses Netzwerk-Paket erstellen und versenden kann. Es wird nur die Broadcast-Adresse[2] des Netzwerks benötigt, in dem das NAS steht sowie die MAC-Adresse (arp -i en0 -a) des LAN-Interfaces am NAS:

1
wakeonlan -i "10.0.2.255" "11:22:33:aa:bb:cc"

Damit holt man das QNAP NAS wieder aus dem Schlaf. Auch dieser Befehl lässt sich in ein Script packen, um es für weitere Automatisierungen zur Hand zu haben.

Automatisierung

macOS

Automatisierungen im macOS-GUI laufen seit macOS 12 Monterey über Shortcuts. Hier lassen sich auch Shell-Skripte aufrufen, sodass man sich diese Aktionen z. B. in die Menu-Bar legen kann. Eine Zeitsteuerung ist wie gehabt mit cron möglich[3].

Aktionen in der Menu-Bar
◎ NAS-Stromspar-Aktionen in der Menu-Bar

iOS

Auf iOS lässt sich ebenfalls die Shortcuts-App benutzen um das NAS schlafen zu legen und auch wieder aufzuwecken. Wake Me Up ist im App Store verfügbar, erledigt das Aufwecken und lässt sich über Siri direkt in Shortcuts ansprechen.

Um das NAS in den Sleep-Modus zu versetzen, kann die Funktion „Run script over SSH“ in Shortcuts benutzt werden.

Shortcuts stellt einen SSH-Public Key zur Verfügung, welcher auf dem NAS in ~/.ssh/authorized_keys platziert wird:

command="/usr/local/bin/nas-sleep" ssh-ed25519 AAAAC[...] Shortcuts on iPhone 13 Pro

Die Option command= sorgt dafür dass das angegebene Script bei erfolgreichem Login sofort ausgeführt wird. In dem Script steht nichts weiter als die beiden Kommandos für das Schlafenlegen:

1
2
3
4
!/bin/bash

echo deep > /sys/power/mem_sleep
echo mem > /sys/power/state

Die Konfiguration in Shortcuts sieht so aus:

shortcuts ios
◎ Shortcuts-Konfiguration in iOS

Mehr ist nicht notwendig, beim Ausführen dieser Aktion legt sich das NAS sofort schlafen.


  1. In macOS mit brew install wakeonlan installierbar. 

  2. Die Broadcast-Adresse kann auch weggelassen werden, dann geht das Paket an die globale Broadcast-Adresse. 

  3. Der Sleep-Mode lässt sich natürlich auch direkt auf dem QNAP NAS per cron aktivieren. 

Du findest diesen Artikel hilfreich?

Folge Marcus auf Twitter
Auf Twitter teilen

Auch Fragen und Anmerkungen sind hier jederzeit willkommen!