Disc Spindown

Aus MySlug
Wechseln zu: Navigation, Suche

Festplatten in den Ruhemodus versetzen (spin-down)

Nachdem Klimaschutz und Energiesparen in aller Munde ist, sollten wir uns auch Gedanken um den Stromverbrauch unseres Mini-Servers machen. Unsere externe Platte soll nun nach einer gewissen Zeit in den Ruhemodus versetzt werden und herunterfahren (spin-down). Wenn die Maschine wieder einen Zugriff von außen bekommt soll die Platte wieder hochfahren (spin-up).

Nur ist es leider nicht so einfach, den Stromsparmodus zu aktivieren und es existieren sehr viele Ansätze, die teilweise funktionieren, aber oft viel Konfigurationsarbeit voraussetzen.

Wenn man sich durch diverse Anleitungen arbeitet, gibt es im Grunde drei Wege, die zum gewünschten Ziel führen:

a) Die Harddisk beherrscht das Herunterfahren von sich aus
b) Wir geben das Timeout der Platte von außen mit
c) Die NSLU2 wird softwareseitig über Scripte gesteuert

Ich möchte auf das alles nicht wirklich recht tief eingehen, denn im Netz finden sich entsprechende Anleitung. Ich möchte hier nur meinen Ansatz vorstellen, der auf der 2. Basis (Timeout von außen) basiert und recht einfach umzusetzen ist, wenn die Randbedingungen stimmen.


a) Die Harddisk beherrscht das Herunterfahren von sich aus

Mache Festplatten oder fertige USB Lösungen haben bereits ein vorprogrammiertes Powermanagement. D.h. sie drehen nach einer gewissen Zeit der Inaktivität herunter oder schalten sich ab. Empfohlen hierfür wird gerne die USB-Box "One Touch"[1] von Maxtor. Zudem bieten manche Hersteller Tools zum Einstellen ihrer Festplatten an, wie Hitachi mit ihrem "Feature Tool"[2]. Diese Lösung hat allerdings leider bei mir auf zwei verschiedenen IBM/Hitachi nicht funktioniert.


b) Wir geben das Timeout der Platte von außen mit

Unter Linux bietet sich das Tool hdparm zum Regulieren des Spin-Downs an. Hierzu kann man die USB Box öffnen und steckt die Disk an einem IDE-Kabel direkt an seinem Rechner an und schaltet die Box an. Danach bootet man Linux und holt sich die Rootrechte an einer Konsole:


su

[PASSWORT EINGEBEN]


Dann setzen wir den Spin-Down fest:


hdparm -k1 -K1 -S120 /dev/hda


Für /dev/hda nehmen wir entsprechend unserer angeschlossenen Platte das korrekte Device:


Primary Master: hda
Primary Slave: hdb
Secondary Master: hdc
Secondary Slave: hdd


-S120 legt die Zeit auf 10 Minuten fest. Zum Testen kann man den Wert auch auf 10 Sekunden ( -S10 ) festlegen. Die Parameter -k1 und -K1 versuchen den Wert in die Festplatte dauerhaft zu schreiben, damit nachdem man die Kiste vom Stromnetz genommen hat sich auch noch an den Spin-Down Timer erinnert. Das klappt aber leider nur in den wenigsten Fällen. Von daher muss die Platte im laufenden Betrieb vom IDE Kabel gezogen werden und darf nicht abgeschalten werden. Dann wird der interne IDE Anschluss der USB Box wieder angeschlossen und an die NSLU2 gestöpselt. Schaltet man die Festplatte ab, so muss dieser Vorgang wiederholt werden. Das ist nicht wirklich komfortabel, aber bringt fast immer den gewünschten Erfolg.

Da man eigentlich keine IDE-Platte vom laufenden Rechner trennen sollte (der Controller könnte einem das übel nehmen) empfehle ich eine andere Variante:

Hierzu benötigt man eine SATA Platte und ein USB Gehäuse für SATA Platten, das sowohl einen SATA Anschluss als auch USB Anschluss mitbringt. Da SATA hotplugfähig ist, kann das Kabel relativ gefahrlos gezogen werden. Ich habe an meinen zweiten SATA Controller meines Mainboards das der USB Box beiliegende Slotblech (SATA Bracket) für einen externen SATA Anschluss angeschlossen. So kann ich die SATA Platte nun via meines SIL Controllers erstmal an meinen Rechner bringen, ohne dass ich das USB Gehäuse aufschrauben und irgendwelche Kabel trennen muss. Ich stecke einfach die Platte im laufenden Linuxbetrieb an und checke erstmal, ob diese erkannt wurde, indem ich folgenden Befehl an der Konsole absetze:


dmesg


Hier sehe ich auch gleich, als welches Gerät (Device) die Platte erkannt wurde. Dies wird in der Regel /dev/sd... sein. Nun kann ich mittels hdparm den gewünschten Spin-down Timer einstellen:


hdparm -k1 -K1 -S120 /dev/sd...


Dann ziehe ich einfach den SATA Anschluss ab und stecke den USB-Anschluss wieder an die NSLU2. Die Platte merkt sich nun solange dieses Setting bis das Gerät vom Strom getrennt wird. Damit das natürlich einfach und schnell zu bewerkstelligen ist sollte die NSLU2 nebst USB Platte in der Nähe des stationären Rechners stehen. Das empfiehlt sich auch deswegen, da man auch schnell mal die Harddisk über die SATA Schnittstelle mit größeren Datenpaketen füttern kann. Ansonsten bestünde noch die Möglichkeit dies mittels eines Notebooks zu erledigen, das einen externen SATA Anschluss hat (fertig eingebaut oder via PCMCIA Controller).

Hier mein Setup mit einem SATA2 USB-Gehäuse, das beide Schnittstellen bereit hält:

Slug17.jpg

c) Die NSLU2 wird softwareseitig über Scripte gesteuert

Diverse Scripte, die die Box intern steuern können findet Ihr unter folgendem Link:

NSLU2-Linux - FAQ / SpinDownUSBHarddisks [3]

Hier sei nur gesagt, dass das Setup teilweise nicht trivial ist und einiges an Experimentierfreude voraussetzt.

Hinweis: Der Spin-Down der Platte funktioniert natürlich erst dann, sobald kein Zugriff auf die Platte erfolgt. Hier muss dafür gesorgt werden, dass etwaige Prozesse nicht auf die Platte greifen. Zu überlegen ist hierbei, das OS auf einen USB-Stick zu unslingen und die Platte nur als Datenträger der Homeverzeichnisse zu verwenden.