So verhindern Sie, dass der Linux-Kernel eine sekundäre Festplatte aus dem Ruhezustand weckt

So verhindern Sie, dass der Linux-Kernel eine sekundäre Festplatte aus dem Ruhezustand weckt

Gibt es eine Möglichkeit, den (Linux-)Kernel anzuweisen, eine sekundäre Festplatte nach einem Ruhe-/Aktivierungszyklus des Systems nicht zu aktivieren? Ich frage, weil ich in meinem Laptop eine SSD als primäres Laufwerk habe, das das Systemstammverzeichnis enthält, und eine sekundäre Festplatte, auf der ich ein Backup-System und Dateien speichere, auf die ich sporadisch zugreife. Da der Laptop normalerweise viele Tage lang täglich viele Ruhe-/Aktivierungszyklen durchläuft (ich meine Suspend to RAM, nicht Ruhezustand), möchte ich die sekundäre Festplatte manuell in den Ruhezustand versetzen und den Kernel anweisen, sie über die Ruhe-/Aktivierungszyklen des Systems hinweg im Ruhezustand zu halten.

Antwort1

da Sie die sekundäre Festplatte nur zur Datensicherung verwenden, würde ich vorschlagen, fstab anzuweisen, das Laufwerk nicht automatisch zu mounten und ein Sicherungsskript zu erstellen, das das Laufwerk mountet, die Datensicherung durchführt und das Laufwerk wieder unmountet.

Beispiel der fstab-Zeile mit der Option „noauto“:

/dev/sdb1 /media/backup ext4 user,noauto 0 0

Das Bash-Skript für die Sicherung würde dann mit beginnen mount /media/backupund mit enden.umount /media/backup

Antwort2

Die Festplatte nie hochfahren

Das Hochfahren der Festplatten scheint im Kernel fest codiert zu sein(Dank anVeonfür das Ausgraben.)
Aber es kann natürlich gepatcht werden:Patch für eine ältere Version des Kernels.
Das Ganze ist seltsam, da ich mich zu erinnern glaubte, dass es hierfür einmal einen Kernelparameter/-schalter gab.

Da es sich hierbei um einen Hack handelt, empfehle ich dies nicht, da Sie den Kernel bei jedem Update patchen und erstellen und den Patch manchmal sogar an geänderten Code anpassen müssen. Eine bessere Möglichkeit wäre, den Kernel-Entwicklern selbst einen Patch zu übermitteln (der einen tatsächlichen Schalter bietet und für alle Systeme funktioniert). Ich denke, das geht über den Rahmen dieser Antwort hinaus. :)


Platte erneut stoppen (SystemD/Linux)

Aufbauend auf der Lösung von Marc.2377 hat dies hier funktioniert, um eine Festplatte unter SystemD/Linux Mint herunterzufahren.

[Unit]
Description="Put woken HDD back to sleep and tell it to go to sleep after 2 min of not being used."
After=systemd-suspend.service systemd-hybrid-sleep.service systemd-hibernate.service systemd-suspend-then-hibernate.service

[Service]
Type=simple
ExecStart=/usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK

[Install]
WantedBy=sleep.target

Ersetzen Sie es MYDISKdurch einen tatsächlichen Gerätedateinamen in /dev/disk/by-idund speichern Sie es als /etc/systemd/system/wake_hdd-stop.service.

Führen Sie es dann aus systemctl daemon-reload, um es zu aktivieren.


Erneutes Stoppen der Platte (GNU/Linux)

Auf einem normalen GNU/Linux-System pm-utilskönnen Sie einfach Folgendes eingeben /etc/pm/sleep.d/99_hdd-stop:

#! /bin/sh
case "$1" in
  resume|thaw)
    /usr/sbin/hdparm -q -S 24 -q -Y /dev/disk/by-id/MYDISK
    ;;
esac

MYDISKNatürlich durch Ersetzen von .
Dann machen Sie die Datei ausführbar mitchmod +x /etc/pm/sleep.d/99_hdd-stop


NOTIZ

dass Sie den Befehl in jedem Fall so spät wie möglich ausführen möchten, da es sonst passieren kann, dass die Festplatte sofort wieder anläuft, weil ein Initialisierungsprozess darauf zugreift.

Außerdem scheint meine Festplatte den -SBefehl völlig zu ignorieren. Sie können also Ihre Ergebnisse vergleichen. (Ich habe eine .desktopDatei erstellt, um das obige Skript auszuführen, und habe die globalen Tastaturkürzeleinstellungen meiner Desktopumgebung verwendet, um ihm eine Verknüpfung zuzuordnen. So kann ich es jederzeit sofort stoppen.)


Antwort3

Ich glaube nicht, dass das möglich ist. Das Laufwerk wird beim Booten vom BIOS/UEFI geprüft, nicht nur vom Kernel.

Ich weise das System jedoch an, das Laufwerk direkt nach dem Systemstart in den Ruhemodus zu versetzen. Überprüfen Siehttps://wiki.archlinux.org/index.php/Hdparm#Putting_a_drive_to_sleep_directly_after_boot.

In meinem Fall habe ich:

/usr/local/lib/systemd/system/rsleephdd.service

[Unit]
Description="Ranolfi's script to sleep hard drives on boot"

[Service]
Type=oneshot
ExecStart=/usr/bin/hdparm -q -S 120 -Y /dev/sdc

[Install]
WantedBy=multi-user.target

Es macht keinen Unterschied, ob das Laufwerk oder seine Partitionen von fstab (oder auch von Crypttab) gemountet werden oder nicht.

(Bearbeiten): Genau genommenEs scheint möglich zu sein, den Kernel dazu zu bringen, eine Festplatte zu ignorieren, indem man sie patcht. Dies verhindert jedoch nicht, dass das Laufwerk aktiviert wird – im Gegenteil. Der Patch, auf den ich verlinkt habe, verhindert, dass Sie auf das Laufwerk zugreifen können. Sie können nicht einmal sporadisch auf Ihre Dateien zugreifen und das Laufwerk auch nicht in den Ruhezustand versetzen.

verwandte Informationen