我有一个硬盘,它应该在 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 standby
smartd会跳过旋转的磁盘,但问题是:如果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
获取设备上的读/写次数,并在几分钟内没有变化时明确将驱动器置于待机状态。请参阅高清空闲公用事业。