使用 hdparm (APM, Suspend) 的硬碟空閒設置
作業系統: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上的這個答案。