如何防止 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,就此而言)安裝都沒有差異。

(編):嚴格來說,似乎可以透過修補磁碟來讓核心忽略該磁碟。但這不會阻止驅動器喚醒 - 恰恰相反,我鏈接到的補丁將阻止您訪問驅動器,您將無法訪問您的文件,即使是偶爾,也無法將驅動器放入睡覺。

相關內容