HDD-Einschalten im Standby-Modus: Verhindern Sie das Hochdrehen

3197
Finwood

Auf meinem Linux Mint 17.1-System verwende ich eine Western Digital WD20EZRX-Festplatte für die Sicherung. Um den Stromverbrauch zu minimieren und die Ausdauer des Laufwerks zu verlängern, möchte ich, dass sich die Festplatte normalerweise im heruntergefahrenen Standby-Modus befindet und nur dann hochfährt, wenn dies explizit erforderlich ist.

Dies kann auf zwei Arten erreicht werden: Der triviale Ansatz besteht darin, die Festplatte manuell in den Standby-Modus zu versetzen hdparm -y /dev/sdb. Der Nachteil wäre jedoch, dass das Laufwerk während des Startvorgangs hochfährt, bis es von einem Skript wieder in den Ruhezustand versetzt wird. Deshalb möchte ich das Laufwerk Power-Up in Standby, PUIS, lassen, um zu verhindern, dass es beim ersten Mal hochrutscht.

Einige WD-Laufwerke unterstützen PUIS, obwohl es von Western Digital als PM2, Power Management 2-Modus bezeichnet wird. Diese Funktion wird mithilfe von Jumpern aktiviert, wie in diesem Artikel der WD Knowledge Base beschrieben . Das Ergebnis dieser Konfiguration kann mit folgendem überprüft werden hdparm:

# hdparm -I /dev/sdb | grep "Power-Up In Standby" * Power-Up In Standby feature set 

Das Laufwerk läuft jedoch noch während des Startvorgangs hoch, sogar bevor der Startbildschirm von Grub angezeigt wird. Könnte dies ein falsch konfigurierter Bootloader sein, der auf allen angeschlossenen Festplatten nach Betriebssystemen sucht?

3
PUIS verhindert nicht, dass die Festplatte anfangs hochgefahren wird. Die Festplatte geht jedoch in den Ruhezustand, wenn sie nicht verwendet wird, und das Betriebssystem muss wissen, dass die Festplatte wieder eingeschaltet werden kann. Andernfalls wird ein Laufwerkausfall simuliert, und das Betriebssystem wartet auf eine Datei, die niemals kommen wird. Ich bin mir nicht sicher, was genau ist, nur dass es anfangs so aussieht, als ob es auch nicht eingeschaltet wäre. Sie können dies auch als Flag auf der Festplatte festlegen, dies funktioniert nicht nur über Jumper. JFA vor 7 Jahren 0

2 Antworten auf die Frage

2
Xen2050

Ich habe vor einigen Jahren genau nach Linux Mint und einer alten HD gesucht, die auch nur für gelegentliche Datenspeicherung verwendet wurde.

Die Lösungen, die ich gefunden habe (die Links sind nicht mehr griffbereit), waren die gleichen, die Sie so aussahen, als hätten Sie gefunden: Einige Festplatten haben eine Jumper-Einstellung, die dazu führen sollte, dass sich das Laufwerk beim Booten nicht im Ruhezustand befindet. Aber es hat nicht funktioniert, meine Ergebnisse waren genau die gleichen wie bei Ihnen, es dreht sich immer noch beim Booten. Ich habe keine Korrekturen dafür gefunden, aber ich weiß, dass es das BIOS / GRUB / Linux war, einzeln oder zusammen zu arbeiten, oder nur die HD selbst, die nicht zuhörte.

Ich habe ein paar "hot plug" / "hot swap" -Tests durchgeführt, bei denen der Strom an eine (SATA) -Festplatte angeschlossen wurde, während der Computer betriebsbereit war. Es generierte einige Protokolleinträge (dmesg & /var/log/syslog) und funktionierte erfolgreich . Wenn Sie mit dem Laufwerk fertig sind (Synchronisieren, Unmounten, Ruhezustand / hdparm -y), trennen Sie den Strom erneut. Hat funktioniert! Dafür braucht es anscheinend ein kompatibles Motherboard & OS, so YMMV.

Das Ziehen des Netzsteckers zur Verwendung des Frequenzumrichters ist jedoch nicht sehr bequem oder einfach. Daher habe ich einen zweipoligen Einwegschalter ( DPST, Wikipedia) mit einem Diagramm verkabelt. Er hat 4 Anschlüsse für die 2 separaten Stromkabel (12 V) & 5V?), Um sie getrennt zu halten und gleichzeitig ein- / auszuschalten. Wenn ich es an die Stromversorgung der HD anschließe, kann ich das Laufwerk jederzeit ein- und ausschalten.

Aktualisieren:

Hot Swapping funktionierte früher auf Linux Mint 14/15/16, aber aus irgendeinem Grund wurde es nicht mehr mit 17 oder höher verwendet. Ich denke, einige Kernel-Änderungen haben es gestoppt. Jetzt scheint das Hot-Swapping eines Festplattenlaufwerks nur zu funktionieren, aber das Laufwerk liest sich als beschädigt, nur ein Neustart beim Einschalten führt zum erfolgreichen Betrieb. Vielleicht gibt es einen einfachen Weg, um es wieder zum Laufen zu bringen, oder es ist ein neu kompilierter Kernel mit speziellen Switches erforderlich ...?

Update 2

Hot Swapping funktioniert anscheinend wieder für Ubuntu 16.04 (Mint 18 sollte auch funktionieren).

2
Veon

Der Linux-Kernel beschleunigt das Laufwerk. Schauen Sie sich diese Zeilen unter drivers / ata / libata-core.c (Kernel-Quellcode) an:

if (!tried_spinup && (id[2] == 0x37c8 || id[2] == 0x738c)) { tried_spinup = 1; /* * Drive powered-up in standby mode, and requires a specific * SET_FEATURES spin-up subcommand before it will accept * anything other than the original IDENTIFY command. */ err_mask = ata_dev_set_feature(dev, SETFEATURES_SPINUP, 0); if (err_mask && id[2] != 0x738c) { rc = -EIO; reason = "SPINUP failed"; goto err_out; } /* * If the drive initially returned incomplete IDENTIFY info, * we now must reissue the IDENTIFY command. */ if (id[2] == 0x37c8) goto retry; } 

Wenn Sie diese Zeilen kommentieren und den Kernel neu kompilieren, werden die Laufwerke nicht hochgefahren. Dann benötigen Sie einen Befehl, um sie hochzufahren. Wenn hdparm beispielsweise PUIS deaktiviert, wird das Laufwerk hochgefahren. Schauen Sie sich diesen Link an.

Das ist alles, was ich über PUIS weiß.

Edit: Ich habe gerade bemerkt, dass sich Ihre Festplatte vor dem Grub-Screen dreht: Dies bedeutet, dass das Motherboard die Festplatte hochdreht. Sie können versuchen, den entsprechenden SATA-Port in Ihrer BIOS- / UEFI-Konfiguration zu deaktivieren, sofern dies zulässig ist, und es erneut zu versuchen. Wenn es funktioniert, bleibt das Laufwerk so lange stehen, bis der Kernel es nach dem Grub-Bildschirm und vor der Benutzeranmeldeaufforderung hochdreht und in dmesg gefunden wird

ataX.00: failed to IDENTIFY (SPINUP failed, err_mask=0x4) ataX.00: revalidation failed (errno=-5) ataX: SATA link up 6.0 Gbps (SStatus 133 SControl 300) 

Wenn Sie an diesem Punkt den Kernel hacken, wird das Laufwerk nicht wie oben beschrieben hochgefahren.

Edit 2: Ich habe einen besseren Befehl gefunden, um die Festplatte hochzufahren:

sg_sat_set_features --feature=7 /dev/sdX 

es ist Teil des sg3_utils-Pakets, erfordert root-Rechte, spinnt aber die Festplatte gut auf. Beitrag im arch linux Forum aktualisiert, das ist meine endgültige Lösung für jetzt. Eine kleine Zusammenfassung dieses Beitrags:

  • Wenn sich Ihre PUIS-fähige Festplatte vor dem Bootloader-Bildschirm dreht, deaktivieren Sie den entsprechenden SATA-Port oder versuchen Sie es mit einer PCI-Ex-SATA-Controller-Karte
  • Kompilieren Sie den Kernel erneut, um den Befehl zu deaktivieren, der die Laufwerke im PUIS-Zustand hochdreht
  • Verwenden Sie sg_sat_set_feature, um die Festplatte hochzufahren
  • Scannen Sie den SATA-Port erneut, um Zugriff auf Partitionen zu erhalten
das ist sehr informativ. Was ich gerne machen würde, ist ein Linux-Server ohne Kopf, der als NAS verwendet wird, der jedoch in den Standby-Modus S3 wechselt und beim Aufwachen die Festplatten nicht hochfährt. Ihre Vorschläge können mich wahrscheinlich so weit bringen. Aber ich möchte, dass das System das Laufwerk hochfährt, wenn tatsächlich darauf zugegriffen wird, ohne dass der Befehl sg_sat_set_features manuell ausgegeben werden muss. Tun Sie dies jedoch automatisch auf Anforderung. Irgendwelche Vorschläge? Vielen Dank. onlinespending vor 6 Jahren 0
Es sieht so aus, als könnte es auf einem Laptop funktionieren, könnte aber mehr Ärger bedeuten, als es wert ist ... Michael vor 5 Jahren 0