Wie kann ich die Auslaufzeit der Festplatte steuern?

71

Ich habe 2 Festplatten in meinem PC. Ubuntu schaltet die sekundäre Festplatte nach ungefähr 15 Minuten sehr schnell aus, was für mich kurz ist. Ich muss diese Zeit kontrollieren. Wie kann ich es tun?

Ich habe GNOME Power Management ausprobiert, fand es aber nicht nützlich.

user16295
quelle

Antworten:

67

Schau es dir an hdparm.

Aus dem Handbuch ( man hdparmin der Befehlszeile):

-S Legen Sie das Standby-Timeout (Spindown) für das Laufwerk fest. Dieser Wert wird vom Laufwerk verwendet, um zu bestimmen, wie lange gewartet werden soll (ohne Festplattenaktivität), bevor der Spindelmotor ausgeschaltet wird, um Strom zu sparen. Unter solchen Umständen kann es bis zu 30 Sekunden dauern, bis das Laufwerk auf einen nachfolgenden Datenträgerzugriff reagiert, obwohl die meisten Laufwerke viel schneller sind.

Die Kodierung des Timeout-Wertes ist etwas eigenartig. Ein Wert von Null bedeutet "Zeitüberschreitungen sind deaktiviert": Das Gerät wechselt nicht automatisch in den Standby-Modus. Werte von 1 bis 240 geben ein Vielfaches von 5 Sekunden an, was zu Zeitüberschreitungen von 5 Sekunden bis 20 Minuten führt. Werte von 241 bis 251 geben 1 bis 11 Einheiten von 30 Minuten an, was zu Zeitüberschreitungen von 30 Minuten bis 5,5 Stunden führt. Ein Wert von 252 bedeutet eine Zeitüberschreitung von 21 Minuten. Ein Wert von 253 legt ein vom Hersteller definiertes Zeitlimit zwischen 8 und 12 Stunden fest, und der Wert 254 ist reserviert. 255 wird als 21 Minuten plus 15 Sekunden interpretiert. Beachten Sie, dass einige ältere Laufwerke diese Werte möglicherweise sehr unterschiedlich interpretieren.

So sudo hdparm -I /dev/sdb | grep levelwird der aktuelle Spindown-Wert angezeigt, zum Beispiel:

Advanced power management level: 254

Aus dem Handbuch: 254 ist reserviert, daher erwarte ich, dass es Ubuntus Standard ist (kann jemand dies bitte bestätigen / erweitern?)

Beispiel:

sudo hdparm -S 25 /dev/sdb = Spindown nach 25 * 5 Sekunden.

sudo hdparm -S 245 /dev/sdb = Spindown nach (245-240) * 30 Minuten.

Rinzwind
quelle
danke an rinzwind für die tipps, die mir sehr geholfen haben, aber ich wünschte, ich würde gui dafür in der nächsten ubuntu-version sehen oder es könnte in gnome power manager integriert werden
user16295
4
Bezüglich der Antwort von lzap scheinen Sie grepfür APM ( -Bparm) zu sein, aber sprechen Sie über -Sdas Spindown. Wissen Sie auch etwas über APM?
Turbo
3
Die aktuelle -BEinstellung wird wie oben angegeben angezeigt. Wie kann ich die aktuelle -SEinstellung sehen?
SabreWolfy
5
sudo hdparm -y /dev/sdbtötet das Biest sofort
siamii
1
@ SabreWolfy Ich habe dies als separate Frage gestellt: Wie kann ich die aktuelle
ændrük
46

Festplatten-Dienstprogramm -> Festplattenlaufwerk auswählen -> auf das Symbol "Weitere Aktionen ..." in der oberen rechten Ecke klicken -> Laufwerkseinstellungen ...

Meins sieht so aus: Bildschirmfoto

Strahl
quelle
6
Mit Abstand am einfachsten, danke! (BTW das Paket, das Sie installieren müssen, wenn Sie dies nicht haben, ist gnome-disk-utility.
Gerhard Burger
Weg zu Linux! +1
neu-rah
Ja, sehr einfach - froh, dass dies hier ist.
Zzzach ...
@ Ray Sie, mein Herr, sind fantastisch! Ich hatte im Grunde keine Hoffnung, dass es für eine externe Festplatte funktionieren würde, aber es tat es!
UTF-8
1
Warum die meisten Tipps fehleranfällige Dateibearbeitung oder Konsolenoperationen beinhalten, während benutzerfreundliche Tools wie dieses bereits beendet sind!
WooYek
29

Wenn Sie daran interessiert sind, die hdparm-Einstellung zwischen Neustarts beizubehalten, anstatt sie der crontab hinzuzufügen, können Sie die verwenden /etc/hdparm.conf. Ich habe folgende, beachten Sie die Verwendung von Großbuchstaben S, nicht Kleinbuchstaben:

command_line {
    hdparm -S 25 /dev/disk/by-uuid/f6c52265-d89f-43a4-b03b-302c3dadb215 
}

Fügen Sie diese Zeile hinzu, indem Sie die UUID durch Ihre ersetzen, oder geben Sie das Gerät mithilfe des /dev/sdXFormats an. Sie können die UUID Ihrer Festplatte mit dem Befehl ermitteln sudo blkid.

sergio.hs84
quelle
3
Ist es richtig, command_lineheutzutage zu verwenden ? Ich habe verschiedene Beispiele in meinem /etc/hdparm?
Dims
1
Ondra Žižkas Antwort scheint aktueller zu sein.
Raphael
9
  1. Suchen Sie die UUID Ihrer Festplatte .

    sudo lsblk --output NAME,FSTYPE,LABEL,UUID,MODE
    
  2. Bearbeiten /etc/hdparm.conf

    sudo -H gedit /etc/hdparm.conf  # Be careful from now on
    
  3. Suchen Sie nach spindown-timeoder in Ihrem Abschnitt mit den Festplatteneinstellungen.

    /dev/disk/by-label/4TB {
        spindown_time = 1200
    }
    
  4. Ich bevorzuge es, über die UUID auf die Festplatte zu verweisen, die über verschiedene Installationen hinweg gleich bleibt (es sei denn, Sie ändern sie in der Hardware selbst).

    /dev/disk/by-uuid/91e32677-0656-45b8-bcf5-14acce39d9c2 {
        spindown_time = 1200
    }
    
  5. Wenn das Init-Skript Startprobleme verursacht, können Sie nohdparm die Kernel-Befehlszeile weitergeben, und das Skript wird nicht ausgeführt.

Ondra Žižka
quelle
Was sind die Einheiten für diesen Parameter?
Detly
IIRC, es sind Sekunden. Oder vielleicht ist dies der Parameter, der wilde Regeln hatte wie "Wenn es unter 10 ist, dann sind es zehn Sekunden, wenn es unter 100 ist, dann sind es Minuten" und so weiter. Ich müsste finden.
Ondra Žižka
2
Es sind keine Einheiten, überprüfen Sie dies: wiki.archlinux.org/index.php/Hdparm
Ondra Žižka
Prost, aus irgendeinem Grund konnte ich es nicht finden man hdparm.conf.
Detly
man hdparm.confliest indirekt, dass der Wert übergeben wird, -Sdamit für Werte <255 mit Regel in der oberen Antwort kompatibel sein sollte . Alle weiteren Informationen sind willkommen.
dma_k
8

Nachdem ich Stunden und Stunden damit verbracht hatte, stellte ich fest, dass mein WDC-Laufwerk den Befehl hdparm -S nicht unterstützt, unabhängig vom Wert des Attributs idle3 (google: idle3ctl). Und das ist ein häufiges Problem bei WD-Laufwerken. Aber ich freue mich, Ihnen mitteilen zu können, dass hd-idle ( http://hd-idle.sourceforge.net/ ) einwandfrei funktioniert. Bei der Installation mit einem von dpkg erstellten Paket (siehe Installationshinweise) wird ein Daemon sowohl auf Ubuntu als auch auf Debian erstellt (die Konfiguration befindet sich in / etc / default / hd-idle). Funktioniert auch nach dem Reaktivieren aus dem Ruhezustand.

mc default # ps aux | grep hd-idle | grep -v grep | Schnitt -c 66-; für f in [ad]; hdparm -C / dev / sd $ f | grep -v "^ $"; getan
/ usr / sbin / hd-idle -i 1800 -a sdc -i 600 -a sdd -i 60 -l /var/log/hd-idle.log
/ dev / sda:
 Laufwerksstatus ist: Aktiv / Leerlauf
/ dev / sdb:
 Laufwerksstatus ist: Standby
/ dev / sdc:
 Laufwerksstatus ist: Standby
/ dev / sdd:
 Laufwerksstatus ist: Standby

user306935
quelle
Installationsanweisungen finden Sie unter Einstellen der SATA HDD-Spindown-Zeit für Western Digital Green-Laufwerke
KrisWebDev
5

Ich habe festgestellt, dass das Spindown-Verhalten von Samsung HD204UI von der APM-Stufe abhängt ( hdparm -B). Wenn der APM-Level 127 ist, beträgt das Spindown-Timeout 10 s. Wenn der APM-Level 150 ist, wird das Spindown-Timeout durch die -SOption definiert .

beroal
quelle
hdparm kann die -SOption festlegen, aber nicht erhalten (siehe So bestimmen Sie die Spindown-Zeit für Datenträger ). Verwenden Sie dazu die GUI-Software "Disk". Siehe die andere Antwort mit dem Screenshot.
KrisWebDev
5

Ich füge etwas hinzu wie:

@reboot sudo hdparm -S244 /dev/disk/by-uuid/71492809-e463-41fa-99e2-c09e9ca90c8e  > /dev/null 2> /dev/null

Wurzel Crontab. Uuid zu verwenden ist meiner Meinung nach besser, da sich sda/ sdbetc. bei jedem Neustart zu ändern scheint

vidar uslingsen
quelle
10
Warum nicht benutzen hdparm.conf?
ændrük
3

In Ubuntu 14.04

Festplatten> Laufwerk markieren> Klicken Sie auf das Zahnrad in der oberen rechten Ecke> Laufwerkseinstellungen> Jetzt haben Sie die Einstellungen für Standby, APM, AAM und Cache schreiben in einer benutzerfreundlichen Benutzeroberfläche!

user245219
quelle
Wie machst du das? Ich habe dies eingestellt, und nach dem Neustart, wenn ich zurück in es gehen, hat daran gedacht, dass das Laufwerk heruntergefahren werden sollte, aber es funktioniert nie. hdparm -C zeigt immer an, dass es aktiv ist und nur das Ausführen von hdparm -S xxx über die Befehlszeile funktioniert.
Dan Carter
1
Wo finden Sie "Disks"?
Nealmcb
1

Unter Debian mit WD-Laufwerken stelle ich fest, dass das Setzen eines beliebigen Levels mit hdparm-S dazu führt, dass das Laufwerk bei nachfolgendem hdparm-I einen Level 254 zurückgibt . Ich bin mir also nicht sicher, ob sie sich drehen oder nicht. Ich denke, sie drehen sich immer noch runter.

Diese Laufwerke befinden sich in einem Server-Array, und ich möchte nicht, dass sie jemals heruntergefahren werden. In der Vergangenheit habe ich dies vermieden, indem ich einen Cron-Job eingerichtet habe, um alle paar Minuten eine Datei zu aktualisieren.

Dwasifar
quelle
1

Ich hatte kein Glück mit hdparm auf einer externen Festplatte in einem USB-Gehäuse, mit dem ich Medien mit minidlna versorge.

Von hier kam mir eine Idee: https://serverfault.com/questions/562738/keeping-usb-backup-drive-from-sleeping-while-mounted

Die besten Ergebnisse werden mit der UUID der Festplatte erzielt, die Sie finden können mit:

sudo blkid

Für die folgende Methode ist Root-Zugriff erforderlich, für hdparm jedoch auch. Dabei wird mit crontab alle 5 Minuten ein zufälliger Block vom Laufwerk gelesen und alle Meldungen ignoriert. Um sicherzustellen, dass Sie die richtige UUID haben, testen Sie sie in der Befehlszeile wie folgt (stellen Sie sicher, dass Sie die gewünschte UUID verwenden, nicht diese):

sudo dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM

Sie sollten die Ausgabe so sehen:

1+0 records in
1+0 records out
512 bytes copied, 0.000738308 s, 693 kB/s`

Um diese Meldung zu unterdrücken, die möglicherweise irgendwo geschrieben wird (in meinem Fall das Dateisystem / auf einer SSD), verwende ich im Folgenden die Root-Crontab. Sie kommen dort mit

sudo crontab -e

Dann unter den Kommentaren:

*/5 * * * * bash -c 'dd if=/dev/disk/by-uuid/f01df4b5-6865-476a-8d3b-597cbd886d41 of=/dev/null count=1 skip=$RANDOM' >/dev/null 2>&1

Hoffe das hilft jemand anderem bei ähnlichen Problemen. Leider wird dies immer noch in das Syslog geschrieben, aber es gibt möglicherweise Möglichkeiten, dies zu unterdrücken. Siehe diesen ServerFault-Beitrag .

[bearbeiten] 2017-01-07 09:02:

Ich konnte diese Meldungen unterdrücken, indem ich /etc/rsyslog.d/50-default.conf bearbeitete, um diese Zeile zu ändern:

*.*;auth,authpriv.none -/var/log/syslog

dazu:

*.*;cron,auth,authpriv.none -/var/log/syslog

Leider werden dadurch alle Cron-Nachrichten unterdrückt. Ich konnte cron nicht dazu bringen, das Abmelden vom Root-Dateisystem umzuleiten (das sich in meinem Fall auf einer veralteten SSD befindet, daher möchte ich das Schreiben einschränken), aber da dies nur ein Heimserver ist, verpasse ich wahrscheinlich nicht viel. Würde auf jeden Fall nicht , diese Strategie für eine Produktionsmaschine empfehlen.

LawyerOnLinux
quelle