Linuxカーネルがセカンダリハードドライブをスリープから復帰させるのを防ぐ方法

Linuxカーネルがセカンダリハードドライブをスリープから復帰させるのを防ぐ方法

システムのスリープ/ウェイクアップ後にセカンダリハードドライブを起動しないように(Linux)カーネルに指示する方法はありますか?私がこのように尋ねる理由は、私のラップトップにシステムルートを含むプライマリドライブとしてSSDがあり、時々アクセスするシステムとファイルのバックアップを保持するセカンダリHDDがあるからです。ラップトップは通常、数日間毎日スリープ/ウェイクアップサイクル(休止状態ではなくRAMの一時停止を意味します)を介して手動でセカンダリHDDをスリープモードに設定し、システムがスリープモードの間オンになるようにカーネルに指示します。したいです。ウェイクサイクル。

答え1

バックアップにはセカンダリハードドライブのみを使用するため、ドライブを自動的にマウントしないようにfstabに指示し、ドライブをマウントし、バックアップを作成し、ドライブを再マウント解除するバックアップスクリプトを作成することをお勧めします。

noauto オプションを含む fstab 行の例:

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

バックアップされたbashスクリプトは次から始まりmount /media/backup、終了します。umount /media/backup

答え2

絶対にディスクを回さないでください

回転ディスクがカーネルにハードコーディングされているようです。(ありがとうございます。ビアン来て、これを掘り下げてみてください。 )
しかし確かにパッチすることができます:以前のカーネルバージョン用のパッチ
カーネルパラメータ/スイッチがあったことを覚えているので、すべてが奇妙です。

これはハッキングなので、更新するたびにカーネルをパッチしてビルドする必要があり、時には変更されたコードに対応するためにパッチを調整する必要があるためお勧めできません。より良いアプローチは、カーネル開発者にパッチを送信することです(実際のスイッチを提供し、すべてのシステムで作業します)。私はこれがこの答えの範囲外であると思います。 :)


ディスクを再び停止します(SystemD/Linux)。

Marc.2377のソリューションに基づいて、SystemD / Linux MintからHDDをオフにすることができます。

[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

MYDISKの実際のデバイスのファイル名/dev/disk/by-idに変更します/etc/systemd/system/wake_hdd-stop.service

その後、実行systemctl daemon-reloadしてアクティブにします。


ディスクを再停止します(GNU/Linux)

一般的なGNU / Linuxシステムでは、pm-utils次の内容を入れてください/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

MYDISKもちろん交換。
次に、ファイルを実行可能にします。chmod +x /etc/pm/sleep.d/99_hdd-stop


ノート

いずれにせよ、コマンドをできるだけ遅く実行することをお勧めします。そうしないと、ディスクにアクセスするいくつかの初期化プロセスによってディスクが再び回転する可能性があります。

また、私のディスクは-Sコマンドを完全に無視しているようです。だからYMMV。 (上記のスクリプトを実行するためにファイルを生成し、.desktopデスクトップ環境のグローバルキーボードショートカット設定を使用してショートカットをマップしました。これにより、いつでも停止できます。)


答え3

これは不可能だと思います。ドライブは、カーネルだけでなく、起動時にBIOS / UEFIによって検索されます。

しかし、私がしたことは、システムが起動するとすぐにドライブをスリープモードにするようにシステムに指示することでした。確認するhttps://wiki.archlinux.org/index.php/Hdparm#Putting_a_drive_to_sleep_directly_after_boot

私の場合は、次のものがあります。

/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

ドライブまたはそのパーティションがfstab(またはcrypttab)によってマウントされているかどうかには違いはありません。

(編集者):厳密に言えば、ディスクにパッチを適用してカーネルがディスクを無視するようにすることは可能です。。しかし、これはドライブが目を覚ますのを防ぎません。逆に、私がリンクしたパッチはあなたがドライブにアクセスするのを防ぎ、時々ファイルにアクセスできなくなるでしょう。ドライブをスリープ状態にします。

関連情報