Hard-Disk

使用 hdparm (APM, Suspend) 的硬碟空閒設置

  • January 3, 2022

作業系統:GNU/Linux Debian 9.2

我想更改我的電腦行為以在空閒 30 分鐘時暫停 HDD。

到目前為止,我發現我需要通過設置更改APM級別以允許掛起磁碟:

hdparm -B 127 /dev/sdX

其中 127 實際上是允許掛起驅動器(spindown)的最大值。

然後我進入待機設置:

hdparm -S 241 /dev/sdX

其中 241 表示它應該在 30 分鐘後待機。

hdparm設置這些時沒有報告錯誤。

現在我的問題:

每次重啟後這些設置會消失嗎?如果是這樣,我應該將這些命令放在哪裡才能使其持久化?

請注意,我想立即影響以下設備:

/dev/sda
/dev/sdb
/dev/sdd
/dev/sde

警告:此問題僅用於實驗目的。通過增加 HDD SMART 中的啟動/停止計數週期,您的 HDD 可能會比繼續執行時更快地惡化。

每次重啟後這些設置會消失嗎?

在軟重啟的情況下,驅動器保持通電狀態,設置不會消失。重啟電源確實會重置 APM 參數。(至少,在我的筆記型電腦上)

大多數 setter 也是hdparm. APM 設置可以通過以下方式輕鬆檢查:

# hdparm -B /dev/sdb

/dev/sdb:
APM_level      = 128

不過,這不適用於待機計時器選項。但從邏輯上講,這些設置也會失去。

我應該將這些命令放在哪裡才能使其持久化?

各種選項、自定義udev規則、systemd服務、cron工作 ( @reboot)。什麼最適合你。

Arch wiki是一個很好的資源,可以獲取更多資訊。

受上述 wiki 的啟發,我systemd為我的 Gentoo 系統創建了一個服務文件:

[Unit]
Description=hdparm sleep
After=suspend.target

[Service]
Type=oneshot
ExecStart=/sbin/hdparm -S 12 -B 127 /dev/sdb

[Install]
WantedBy=multi-user.target suspend.target

您可能希望使用您的設置一次影響所有設備,如下所示:

ExecStart=/sbin/hdparm -B 127 -S 241 /dev/sda /dev/sdb /dev/sdd /dev/sde

請注意,您必須對所有內容使用絕對路徑,您不能這樣做,例如cmd /dev/sd[abde]. 二進製文件的確切位置hdparm在您的發行版中可能不同。

使用以下命令了解您hdparm通常會呼叫的位置:

which hdparm

然後,您可以啟用該服務並選擇啟動它,您可能只想重新啟動機器以 100% 確保它可以正常工作。

# systemctl enable hdparm.service
# systemctl start hdparm.service
# systemctl status hdparm.service

Arch 的提議禁止輸出,但我更喜歡hdparm使用最後發出的命令來驗證是否成功。

編輯

我發現掛起後,我的硬碟驅動器不保存的參數。這可能是更多筆記型電腦系統的情況。因此我修改了範例單元文件。感謝unix.SO上的這個答案。

引用自:https://unix.stackexchange.com/questions/410264