硬盘不自动进入待机状态

硬盘不自动进入待机状态

我有一个硬盘,它应该在 30 或 60 分钟后自动进入待机状态。

我尝试过(3分钟测试):

# hdparm -S 36 /dev/sda

/dev/sda:
 setting standby to 36 (3 minutes)

即使超过 5 分钟无法访问,它也不起作用。现在我想到了一些访问数据的进程,所以我测试了

# hdparm -y /dev/sda

/dev/sda:
 issuing standby command

驱动器进入待机状态并保持睡眠状态,您可以使用以下命令查找

# hdparm -C /dev/sda;date

/dev/sda:
 drive state is:  standby

正如您所期望的那样,触摸挂载点中的某些文件会唤醒它。

为什么自动暂停不起作用?据我了解,只要没有访问权限,它甚至应该独立于操作系统关闭硬盘驱动器。

答案1

我正在运行 ubuntu 18.04 并遇到了同样的问题。感谢@allo的回答,我发现这smartd确实是原因。

默认情况下/etc/smartd.conf配置如下:

DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/martd-runner

这将自动扫描所有驱动器并定期轮询它们(此操作会旋转磁盘)(默认 30 分钟,可更改)。虽然-n standbysmartd会跳过旋转的磁盘,但问题是:如果smartd轮询间隔短于磁盘的“旋转结束后”时间,那么smartd将始终在有机会旋转之前轮询磁盘-关闭,因此磁盘永远不会进入待机模式。

如果磁盘的“旋转超时”短于 smartd 的轮询间隔,则磁盘将在 smartd 轮询之前旋转,之后 smartd 将跳过该磁盘并且不再旋转它。如果磁盘被其他工具(例如 )(手动)降速hd-idle,那么 smartd 也会跳过它。

延长 smartd 轮询间隔的一种方法是编辑以下行/etc/default/smartmontools

smartd_opts="--interval=1800"

例如,1800 表示 30 分钟,改为 10800(3 小时)就足够长了。并且不要忘记重新启动它们:

systemctl restart smartd smartmontools

答案2

实际的问题是smartd,它定期检查设备的值,即使它处于待机模式。

我通过不时禁用smartd并运行测试来解决这个问题。smartctl

答案3

请注意,即使命令通过,某些驱动器也不会实现此功能。您可能还需要减少先进的电源管理等级达到 127 或更低hdparm -B 127 /dev/sda。从手册页:

-B 获取/设置高级电源管理功能...值 1 到 127(允许停转)和值 128 到 254(不允许停转)。

如果全部失败,您可以编写一个小脚本来轮询/proc/diskstats/sys/block/sda/stat获取设备上的读/写次数,并在几分钟内没有变化时明确将驱动器置于待机状态。请参阅高清空闲公用事业。

相关内容