ubuntu hdparm.conf设置似乎在 Boot 时不运行

xghobddn  于 2023-08-03  发布在  其他
关注(0)|答案(6)|浏览(144)

我试图让我的硬盘 Boot 后旋转下来,因为我只是偶尔使用它备份和长期存储。我用的是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秒后减速,就像它应该做的那样。
那么,有没有可能在 Boot 时没有应用hdparm-conf设置,如果有,我该如何修复它?

wvt8vs2t

wvt8vs2t1#

Ubuntu 20.04 LTS有一个错误,导致命令行参数不能正确返回。修复方法是将/usr/lib/hdparm/hdparm-functionshdparm_options()函数的结尾修改为:

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中有一个bug,/usr/lib/udev/hdparm使用它来解析/etc/hdparm.confudev/hdparm脚本调用hdparm/hdparm-functions中的hdparm_options()来解析配置文件,并期望将生成的命令行参数打印到标准输出。但是,hdparm_options()从不写入stdout,除非在配置文件中找不到所请求的磁盘,在这种情况下,它会返回默认的命令行参数。

yrwegjxp

yrwegjxp2#

这是一个老帖子,但timdiels的回答帮助我在Slax/Debian 9上调查了同样的问题。事实证明,/lib/hdparm中的任意脚本完全基于设备是使用电源还是电池供电来覆盖某些设置(-S和-B)。您需要修改hdparm-functions脚本来防止这种情况。

3yhwsihp

3yhwsihp3#

注意:基于我使用Debian stretch(deb 9 u1)的经验。这可能不完全适用于您的发行版。
不确定是否可以省略=,试试:

/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的任何信息。
另一件事你可以尝试检查hdparm -B /dev/yourdisk,如果这是不支持的,尝试添加apm =;对,空白。此攻击导致它调用hdparm -B ...而不是默认的hdparm -B254 ...
如果添加=不能解决这个问题,您可以通过编辑/lib/udev/hdparm来调试这个问题(首先复制它,以便稍后恢复原始版本)。将一些输出重定向到>> ~root/hdparm.log 2>&1,特别是添加一个echo以查看每个$DEVNAME所使用的$OPTIONS/lib/udev/hdparm是udev运行的脚本,可能是在发现新设备时运行的。它是异步的,所以如果您要重新启动并且您有多个磁盘,日志消息可能会相互“中断”。您不需要重新启动即可进行测试,请尝试DEVNAME=/dev/...YOURDISK sudo /lib/udev/hdparm

db2dz4w8

db2dz4w84#

如果你有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”以及.

kgqe7b3p

kgqe7b3p5#

快跑

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

字符串
了解APM(高级电源管理)的配置。根据man page(参见-B参数的说明),较低的值允许更积极的电源管理,而较高的值对应于更高的性能。值128到254不允许降速。在我的机器上,这个值默认为254。以下配置应确保磁盘在5秒后旋转:

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

rta7y2nd

rta7y2nd6#

/usr/lib/hdparm/hdparm-functions中有一个bug,它不能正确处理像/dev/disk/by-id/ata-ST2000DM006-2DM164_Z4ZAL35H这样的磁盘名称。解决方案是使用常规磁盘名称,如/dev/sda。但这并不理想,因为磁盘名称可以更改。

相关问题