Wenn Sie HDDs nach X Minuten in den Standby-Modus versetzen, funktioniert hdparm nicht

11

Ich benutze Ubuntu 12.04 auf einem Heimserver. Es gibt 5 Festplatten: eine SSD mit dem Betriebssystem und 4 Festplatten (Samsung HD204UI), die mit mdadm als RAID5 konfiguriert wurden.

Ich brauche das RAID nicht sehr oft (etwa einmal pro Tag im Durchschnitt). Es enthält Multimediadaten und einige Backups, daher habe ich beschlossen, die Laufwerke die meiste Zeit in den Standby-Modus zu versetzen.

Ich habe die Laufwerke so konfiguriert, dass sie nach 20 Minuten mithilfe von hdparm automatisch heruntergefahren werden. Hier /dev/sdaals Beispiel:

hdparm -S 240 /dev/sda

Die Ausgabe des Befehls bestätigte dies:

/dev/sdb:
 setting standby to 240 (20 minutes)

Das Problem ist jedoch, dass das Laufwerk nach etwa 5 Sekunden (statt 20 Minuten) nach dem letzten Zugriff herunterfährt und

hdparm -C /dev/sdb

zeigt an:

/dev/sdb:
 drive state is:  standby

Warum wartet das Laufwerk nicht wie konfiguriert die 20 Minuten? Hat das etwas mit dem RAID-Setup zu tun? (Ich glaube nicht ...)

Dieses sehr kurze Zeitlimit ist problematisch, da es sich um ein RAID5 handelt. Wenn ich auf eine Datei zugreife, wird sie blockweise auf die vier Laufwerke verteilt. Da Laufwerk 1 beim Lesen von Laufwerk 2 nicht benötigt wird, ist es eingeschlafen, wenn es das nächste Mal verwendet wird (nachdem Laufwerk 3 gelesen wurde). Die Laufwerke drehen sich also die ganze Zeit auf und ab, was zu einem Durchsatz nahe Null führt.

Für die Menschen, die sich Sorgen um die Lebensdauer meiner Laufwerke machen: Es ist kein Problem, dass die Laufwerke durchschnittlich einmal am Tag auf und ab gedreht werden, da ich es vorziehe, Energie und Wärme gegenüber der Gesundheit der Laufwerke zu sparen (ich verwende RAID5 und der Inhalt ist nicht vorhanden) nicht sehr wichtig).

Leemes
quelle
2
Ich bin froh, dass du deine Antwort hier hast. Schade, dass die ServerFault-Leute so wählerisch waren. Ich hätte gedacht, dass Energiespartechniken in jedem zukunftsorientierten Unternehmensszenario ziemlich wichtig sind. Stattdessen werden sie es verpassen.
Tomfanning
1
@tomfanning Nun, ich gehe davon aus, dass ServerFault nur für große Server wie in einem Rechenzentrum gedacht ist. Aber ich wusste es nicht und erwartete, dass ein Heimserver auch als Server zählt. Wenn nicht, sollte ich meinen Server in meinen Garten stellen, damit er nicht mehr zu Hause ist. Was ich wirklich nicht verstehe, ist, warum sie mich einfach nicht mit dem leben, was ich will und die Frage nur beantworten, wenn sie konstruktive Antworten auf meine Frage haben, sondern dass ich es so lassen soll, wie ich es tun möchte. [für andere Leute, die nicht wissen, wovon wir sprechen: serverfault.com/q/389222/116951]
leemes

Antworten:

11

Ist AHCI in Ihrem BIOS aktiviert? Wenn nicht, schalten Sie es ein und versuchen Sie es erneut.

Wenn das immer noch nicht funktioniert, müssen Sie möglicherweise etwas Komplizierteres ausprobieren, da hdparmes mit SATA-Laufwerken nicht immer gut funktioniert, was ich vermute.

Auf dieser Seite finden Sie die folgende relativ einfache Lösung, die crontab verwendet:

sudo apt-get install sg3-utils
crontab -e

Fügen Sie dies nun am unteren Rand Ihrer Crontab hinzu (ersetzen Sie sdx durch das Laufwerk, das Sie in den Standby-Modus versetzen möchten):

0-59/15 * * * * ( if [ ! -f /dev/shm/1 ] ; then touch /dev/shm/1 /dev/shm/2; fi ; mv /dev/shm/1 /dev/shm/2; cat /proc/diskstats > /dev/shm/1 ) >/dev/null 2>&1
0-59/15 * * * * ( export HD="sdx "; if [ "$(diff /dev/shm/1 /dev/shm/2 | grep $HD )" =  "" ] ; then /usr/bin/sg_start --stop /dev/$HD; fi ) >/dev/null 2>&1

Bevor Sie dies versuchen, ist es natürlich sehr ratsam , eine vollständige Sicherung des Inhalts Ihrer Festplatten durchzuführen.

SirCharlo
quelle
Lief wie am Schnürchen. Ich habe AHCI im BIOS aktiviert. Der SATA-Modus wurde auf RAID eingestellt (mein Motherboard verfügt über einen RAID-Controller, den ich nicht verwende). Ich wusste nicht, dass AHCI für die ordnungsgemäße SMART-Steuerung von SATA-Laufwerken oder was auch immer hdparm hier tut, benötigt wird. Vielen Dank!
Leemes
Sir @SirCharlo, was ist der grundlegende Befehl, um HDD im Standby-Modus zu machen (mit diesem sg3-utils)? Ist es /usr/bin/sg_start --stop /dev/sdx?
Oki Erie Rinaldi
1

Vielleicht könnte ein besserer Weg sein:

hdparm -B 1 -Y / dev / device
hdparm -B 255 / dev / device

Der erste HDParm stellte das Gerät sofort in den Standby-Modus. Der zweite schaltet APM aus, sodass die Festplatte bis zum nächsten Festplattenzugriff im Standby-Modus bleibt.

Matte
quelle
Guter Vorschlag, obwohl angegeben werden sollte, dass diese Befehle mit einem Skript verwendet werden sollten, das die Aktionen zeitlich festlegt.
Rucent88