【问题标题】:hdparm.conf settings don't seem to run at boothdparm.conf 设置似乎没有在启动时运行
【发布时间】:2018-09-25 06:30:27
【问题描述】:

我正试图让我的硬盘在启动后减速,因为我只是偶尔将它用于备份和长期存储。我正在运行 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 设置是否有可能在启动时未应用,如果是,我该如何解决?

【问题讨论】:

    标签: ubuntu ubuntu-17.10


    【解决方案1】:

    这是一篇旧帖子,但 timdiels 的回答帮助我调查了 Slax/Debian 9 上的相同问题。事实证明,/lib/hdparm 中的任意脚本会覆盖某些设置(-S 和 - B) 纯粹基于设备是使用市电还是电池供电。 您需要更改 hdparm-functions 脚本来防止这种情况发生。

    【讨论】:

    • 关于这方面的更多细节真的很好。这样你的答案就不是很有用了。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      /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 =;没错,留空。此 hack 导致它调用 hdparm -B ... 而不是默认的 hdparm -B254 ...

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

      【讨论】:

        【解决方案4】:

        如果你有 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”。

        【讨论】:

          【解决方案5】:

          运行

          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
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2017-10-24
            • 2017-11-11
            • 1970-01-01
            • 2015-09-22
            • 2021-11-27
            • 1970-01-01
            • 2022-12-04
            相关资源
            最近更新 更多