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

4

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 Lebensdauer des Laufwerks zu verlängern, möchte ich, dass die Festplatte normal arbeitet sich im heruntergefahrenen Standby-Zustand befinden und nur dann hochfahren, 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 lassen Einschalten im Standby-Modus . PUIS , um zu verhindern, dass es sich beim ersten Mal dreht.

Einige WD-Laufwerke unterstützen PUIS, obwohl es aufgerufen wird PM2 . Power Management 2-Modus von Western Digital. Diese Funktion wird mithilfe von Jumpern aktiviert, wie in beschrieben dieser WD Knowledge Base-Artikel . Das Ergebnis dieser Konfiguration kann mit ü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?

Finwood
quelle
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

Antworten:

2

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 (haben Sie die Links nicht mehr griffbereit), waren die gleichen, die Sie so aussehen, als ob Sie sie gefunden hätten: wenige Festplatten haben möglicherweise eine Jumper-Einstellung sollte Dadurch bleibt das Laufwerk beim Booten im Ruhezustand. Aber Es hat nicht funktioniert, meine Ergebnisse waren genau die gleichen wie bei Ihnen, beim Booten dreht es sich immer noch. 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 einige gemacht "hot plug" / "hot swap" Testen, Verbinden der Stromversorgung mit einer (SATA) -Festplatte, während der Computer in Betrieb war & amp; Laufen. Es wurden einige Protokolleinträge generiert (dmesg & amp; /var/log/syslog ) und erfolgreich gearbeitet . Wenn Sie mit dem Laufwerk fertig sind (Synchronisieren, Unmount, Sleep / hdparm -y ) Netzstecker wieder ausstecken. Hat funktioniert! Aber es braucht anscheinend ein kompatibles Motherboard & amp; OS, so YMMV.

Das Ziehen des Netzsteckers zur Verwendung des Laufwerks ist jedoch nicht sehr bequem oder einfach. Daher habe ich einen zweipoligen Einwegschalter angeschlossen. DPST, Wikipedia hat ein Diagramm - verfügt über 4 Anschlüsse für die 2 separaten Stromkabel (12 V und 5 V?), um sie voneinander getrennt zu halten und beide gleichzeitig ein- / auszuschalten. Anschließen an die Stromversorgung der HD kann ich einschalten & amp; aus dem Laufwerk, wann immer es nötig ist.

Aktualisieren:

Hot-Swapping gebraucht um an Linux Mint 14/15/16 zu arbeiten, aber aus irgendeinem Grund wurde die Arbeit an 17 & amp; up, ich vermute, einige Kernel-Änderungen haben es gestoppt. Jetzt scheint ein Hot-Swapping einer Festplatte nur zu funktionieren, aber das Laufwerk liest 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).

Xen2050
quelle
3

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. Schau dir das an Verknüpfung.

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

Bearbeiten: Mir ist gerade aufgefallen, dass sich Ihre Festplatte vor dem Grub-Screen hochdreht: 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 dreht

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 jetzt meine endgültige Lösung. Eine kleine Zusammenfassung dieses Beitrags:

  • Wenn sich Ihre PUIS-aktivierte Festplatte vor dem Bootloader-Bildschirm dreht, versuchen Sie es Deaktivieren des entsprechenden SATA-Ports oder Testen Sie eine 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
  • Erneutes Scannen des SATA-Ports, um Zugriff auf Partitionen zu erhalten
Veon
quelle
das ist sehr informativ. Was ich gerne machen möchte, 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
Es sieht so aus, als könnte es auf einem Laptop funktionieren, könnte aber mehr Ärger bedeuten, als es wert ist ...
Michael