使用 hdparm 进行 HDD 空闲设置(APM、挂起)

使用 hdparm 进行 HDD 空闲设置(APM、挂起)

操作系统:GNU/Linux Debian 9.2

我想更改计算机的行为,以在闲置 30 分钟时暂停 HDD。

到目前为止我发现我需要改变APM通过设置允许挂起磁盘的级别:

hdparm -B 127 /dev/sdX

其中 127 实际上是允许暂停驱动器(降速)的最大值。

然后我进入待机设置:

hdparm -S 241 /dev/sdX

其中241表示30分钟后待机。

hdparm设置这些时没有报告错误。

现在我的问题是:

每次重启后这些设置都会消失吗?如果是这样,我应该将这些命令放在哪里才能使其持久?

请注意,我想立即影响以下设备:

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

警告: 这个问题只是为了实验目的。通过增加 HDD 的 SMART 中的启动/停止计数周期,您的 HDD 可能会比持续运行时恶化得更快。

答案1

每次重启后这些设置都会消失吗?

在软重启的情况下,驱动器保持通电状态,设置不会消失。重新启动电源会重置 APM 参数。 (至少,在我的笔记本电脑上)

大多数 setter 也是hdparm. APM 设置可以通过以下方式轻松检查:

# hdparm -B /dev/sdb

/dev/sdb:
APM_level      = 128

但这对于待机计时器选项不起作用。但从逻辑上讲,这些设置也会丢失。

我应该将这些命令放在哪里才能使其持久?

各种选项、自定义udev规则、systemd服务、cron工作 ( @reboot)。什么最适合你。

拱门维基是获取更多信息的一个很好的资源。

受上述 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

hdparmArch 的提议抑制了输出,但我更喜欢使用最后发出的命令来验证是否成功。

编辑

我发现挂起后,参数不再保存在我的硬盘中。对于更多笔记本电脑系统来说可能是这种情况。因此我修改了示例单元文件。致谢在unix.SO 上回答。

相关内容