3

我试图让我的硬盘在启动后减速,因为我只是偶尔使用它来备份和长期存储。我正在运行 Ubuntu 17.10。

我已经搜索了一段时间,发现我可以编辑 hdparm.conf 文件以包含以下内容:

command_line {
sudo hdparm -S 1 /dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H
}

我还尝试了它的各种变体,带有缩进,没有“command_line”选项,而是刚刚完成:

/dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H {
spindown_time 1
}

到目前为止,它们都没有奏效。我已禁用驱动器的“启动时挂载”选项。

最让我困惑的是,当我跑步时

sudo hdparm -S 1 /dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H

磁盘将在 5 秒后减速,就像它应该做的那样。

那么,是否有可能在启动时未应用 hdparm-conf 设置,如果是,我该如何解决?

4

5 回答 5

2

这是一篇旧文章,但 timdiels 的回答帮助我调查了 Slax/Debian 9 上的相同问题。事实证明,/lib/hdparm中的任意脚本会覆盖某些设置(-S 和 -B),这完全取决于设备是否打开电源或电池电源。您需要更改hdparm-functions脚本来防止这种情况。

于 2019-01-05T17:21:32.557 回答
1

Ubuntu 20.04 LTS 有一个错误,导致无法正确返回命令行参数。解决方法是hdparm_options()将函数的末尾更改/usr/lib/hdparm/hdparm-functions为:

if [ -n "$OPTIONS" ]; then
    echo $OPTIONS
    return 0
elif [ -n "$DEFAULT" ]; then
    echo $DEFAULT
    return 0
fi

细节

在 Ubuntu 20.04 LTS 中,有一个错误/usr/lib/hdparm/hdparm-functions/usr/lib/udev/hdparm用于解析/etc/hdparm.conf. 该udev/hdparm脚本调用hdparm_options()hdparm/hdparm-functions解析配置文件,并期望将生成的命令行参数打印到标准输出。但是,hdparm_options()除非在配置文件中找不到请求的磁盘,否则永远不会写入标准输出,在这种情况下,它会回显默认的命令行参数。

于 2021-06-06T06:33:25.760 回答
0

hdparm -B /dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H

查看如何配置 APM(高级电源管理)。根据手册页(参见-B参数描述),较低的值允许更积极的电源管理,而较高的值对应于更高的性能。值 128 到 254 不允许降速。在我的机器上,此值默认为 254。以下配置应确保您的磁盘在 5 秒后减速:

/dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H {
    apm = 1
    spindown_time = 1
}
于 2020-12-15T02:41:37.497 回答
0

如果你有 U 盘,可能是这样的:https ://bugs.launchpad.net/ubuntu/+source/hdparm/+bug/515023

具体来说,我必须在 /lib/hdparm/hdparm-functions 中编辑 hdparm_try_apm():

hdparm_try_apm()
{
    return 0
...

不是一个很好的解决方法,非常脆弱(实际上这整件事对我来说似乎有点脆弱!)

相反,我会尝试一个 udev 脚本

请参阅:https ://unix.stackexchange.com/questions/28548/how-to-run-custom-scripts-upon-usb-device-plug-in

另外,我注意到以下内容:

                apm)
                    if ! hdparm_is_on_battery; then
                        hdparm_set_option -B$VALUE
                    fi
                    ;;
                apm_battery)
                    if hdparm_is_on_battery; then
                        hdparm_set_option -B$VALUE
                    fi

所以确保这不会让你,IE,你可能也想设置“apm_battery”。

于 2020-12-05T20:21:50.063 回答
0

注意:根据我对 Debian 拉伸 (deb9u1) 的经验。这可能并不完全适用于您的发行版。

不确定是否可以省略=,请尝试:

/dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H {
spindown_time = 1
}

请注意,您可以使用缩进,甚至在注释上,所以这也应该没问题:

/dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H {
    # Sleep after 5 sec (unit = 5 sec)
    spindown_time = 1
}

要检查它是否完全运行,请查看是否可以在sudo journalctl -u systemd-udevd.

您可以尝试的另一件事是检查hdparm -B /dev/yourdisk,如果不支持,请尝试添加apm =; 没错,留空。这个 hack 导致它调用hdparm -B ...而不是默认的hdparm -B254 ....

如果添加=不能解决问题,您可以通过编辑来调试问题/lib/udev/hdparm(先复制它,以便稍后恢复原始文件)。将一些输出重定向到>> ~root/hdparm.log 2>&1,特别是添加一个 echo 以查看$OPTIONS每个$DEVNAME. /lib/udev/hdparm是 udev 运行的脚本,可能在它发现新设备时运行。它是异步执行的,因此如果您要重新启动并且有多个磁盘,则日志消息可能会相互“中断”。您无需重新启动即可测试,请尝试DEVNAME=/dev/...YOURDISK sudo /lib/udev/hdparm.

于 2018-05-21T13:41:54.700 回答