在一段时间不活动后自动降低 USB 硬盘驱动器的转速

Chr*_*ris 8 usb hard-drive spindown

我想在一段时间不活动后自动关闭 USB 硬盘驱动器,比如 15 分钟。而且,当然,在访问时会自动再次启动它们。我怎样才能做到这一点?谢谢

Geo*_*sen 6

hd-idle实用程序应该会有所帮助。

请查看下面给出的来源,仔细阅读并看看是否有帮助:

  1. CVS使用以下命令下载源代码:

    • cvs -d:pserver:anonymous@hd-idle.cvs.sourceforge.net:/cvsroot/hd-idle login
      • 当要求输入密码时按回车键
    • cvs -z3 -d:pserver:anonymous@hd-idle.cvs.sourceforge.net:/cvsroot/hd-idle co -P hd-idle
  2. Debian 系统:

    • 跑步:dpkg-buildpackage -rfakeroot
    • 要安装软件包,请运行:'dpkg -i ../hd-idle_*.deb'
  3. 用法:

     hd-idle
    
     # This will start hd-idle with the default options, 
     # causing all SCSI (read: USB, Firewire, SCSI, ...) hard disks 
     # to spin down after 10 minutes of inactivity
    
    Run Code Online (Sandbox Code Playgroud)

注意:请注意 hd-idle 用于/proc/diskstats读取磁盘统计信息。如果该文件不存在,hd-idle 将无法工作。

运行高清空闲

要运行 hd-idle,请输入“hd-idle”。这将以默认选项启动 hd-idle,导致所有 SCSI(读取:USB、Firewire、SCSI...)硬盘在 10 分钟不活动后停止旋转。

在 Debian 系统上,编辑 /etc/default/hd-idle 并启用它后,使用“/etc/init.d/hd-idle start”来运行 hd-idle。

请注意,hd-idle 使用 /proc/diskstats 来读取磁盘统计信息。如果该文件不存在,hd-idle 将无法工作。

命令行选项

-a <name>   Set (partial) device name of disks for subsequent idle-time parameters (-i). This parameter is optional in the sense that there's a default entry for all [SCSI] disks which are not named otherwise by using this parameter.
-i <idle_time>  Idle time in seconds for the currently named disk(s) (-a <name>) or for all disks.
-l <logfile>    Name of logfile (written only after a disk has spun up). Please note that this option might cause the disk which holds the logfile to spin up just because another disk had some activity. This option should not be used on systems with more than one disk except for tuning purposes. On single-disk systems, this option should not cause any additional spinups.
-t <disk>   Spin-down the specified disk immediately and exit. Use only the disk name (e.g. sda) without /dev/ prefix
-d  Debug mode. This will prevent hd-idle from becoming a daemon and print debugging info to stdout/stderr
-h  Print brief usage information
Run Code Online (Sandbox Code Playgroud)

关于参数“-a”:

hd-idle 用户要求提供为各个磁盘设置空闲时间参数的方法。这很有意义,不仅因为某些 [SCSI] 磁盘可能对停止反应不佳。最初,hd-idle 为所有磁盘提供一个空闲时间。现在可以使用参数“-a”在磁盘设备名称上设置过滤器(省略/dev/)以进行后续的空闲时间设置。

  1. 第一个“-a”选项之前的“-i”选项将设置默认空闲时间;因此,保留了与以前版本的 hd-idle 的兼容性。

  2. 要默认禁用磁盘降速,然后在选定磁盘上重新启用降速,请将默认空闲时间设置为 0。

例子:

hd-idle -i 0 -a sda -i 300 -a sdb -i 1200
Run Code Online (Sandbox Code Playgroud)

此示例将默认空闲时间设置为 0(意味着 hd-idle 永远不会尝试使磁盘旋转),然后为设备名称中包含字符串“sda”或“sdb”的磁盘设置显式空闲时间。停止高清空闲

用于killall hd-idle停止高清空闲。在 Debian 系统上,使用/etc/init.d/hd-idle stop.

安装:

HD-Idle 可以从 Ubuntu Universe 存储库安装:

sudo apt install hd-idle
Run Code Online (Sandbox Code Playgroud)

来源:

http://hd-idle.sourceforge.net/


bom*_*ben 6

您可以使用hdparm设置一个介于 1 和 255 之间的以进行降速。

此命令是hdparm -S255 /dev/sdX,其中 X 当然适用于您的设备。

您可以使用blkid来查找正确的设备。

然后设备在访问时旋转。

使用hdparm -C /dev/sdX来检查设备的状态(空闲/活动/待机,待机意味着降速)。

请小心处理:您也可以使用hdparm -y /dev/sdX手动使设备减速。这可能有助于确定它是否完全停止旋转(见下文)。


我想补充一点,这现在适用于我的设置:

  • 树莓派
  • HGST 10TB 硬盘
  • 通过 USB3 连接

但它并没有一直奏效。第一次连接时,它不会手动降速,也不会自动降速。我不确定是什么改变了磁盘的行为。我在两者之间做的两件事:

  • 断开磁盘连接并与Win10笔记本电脑连接并运行磁盘制造商提供的检查程序。这只是做了一个简短的 SMART 测试。我正在寻找一种设置来更改降速或 APM,但这是不可能的。
  • 我在树莓派上安装了hd-idle。但是hd-idle并没有降低磁盘转速。所以我一直在寻找有关 hd-idle 实际工作原理的线索。在搜索它时,我重新尝试手动减速,但它突然起作用了。

顺便提一句。我的高级电源管理级别是 254。(hdparm -B /dev/sdX)。我不确定 APM 与降速时间有何关系。通常,值 254 应该可以防止任何降速。我还读到要启用降速,它应该设置为 127 或更低。

我在想,也许为 NAS 目的制造的 HDD 可能会抑制降速。我发布了带有其他可疑细节的答案,以便从其他贡献者那里更深入地了解该主题。我很高兴稍后更新答案。

编辑:它并不总是有效。备用磁盘在没有任何人访问的情况下被唤醒。此外,由于我删除了 hd-idle,使用 -S 的自动待机不再起作用。