情况
我有一个 WD Element Drive,它的行为很奇怪。驱动器需要很长时间才能减速,而且我无法使用不同的方法为驱动器设置待机(减速)超时。
例如使用hdparm
会导致SG_IO
错误:
$ sudo hdparm -S 25 /dev/sdx
dev/sdx:
setting standby to 25 (2 minutes + 5 seconds)
SG_IO: bad/missing sense data, sb[]: ...
Drive的控制器似乎不支持这些方法。
但是,奇怪的是,我可以使用-y
开关将驱动器置于待机模式:
$ sudo hdparm -y /dev/sdx
它给出了相同的SG_IO
错误,但驱动器转速下降。我很好。
真正的问题
似乎暂停 Ubuntu 会导致类似于拔下和插入驱动器的效果。
当我想暂停 Ubuntu 时,说使用systemctl suspend
:
- 如果驱动器处于待机模式,它会加速并且永远不会再次减速。
- 如果它不是处于待机模式,那么它首先会减速,一秒钟后它会再次加速并且永远不会减速。
将其降速的唯一方法是恢复 Ubuntu 并hdparm -y
手动在驱动器上运行,如果我再次挂起 Ubuntu,也会发生同样的事情。
我已经尝试过的
我尝试hdparm -y
在挂起时运行以将驱动器置于standby
模式:
$ cat /usr/lib/systemd/system-sleep/suspend_drive
#!/bin/sh
case $1 in
pre)
hdparm -y /dev/sdc ;;
esac
它没有任何效果。正如我已经说过的,当 Ubuntu 进入睡眠状态时,无论如何,驱动器首先会减速一秒钟,然后它会再次开始工作。
我在寻找什么...
有没有办法解决这个问题?
我正在寻找一种解决方案,以防止驱动器在系统进入睡眠状态时首先旋转。如果驱动器已经唤醒,它应该与系统一起进入待机模式。
笔记:
- 运行 Ubuntu 20.04。
- 我对分离驱动器不感兴趣(或使用任何从 USB 端口夺走电源的方法,因为它与拔下驱动器具有相同的结果)。
- 或使用类似的东西
udiskctl poweroff
。 - 这是另一个类似的问题:防止外部 USB 硬盘在暂停到 RAM 期间旋转
更新
如果我使用
udisksctl power-off /dev/sdc
安全移除驱动器,挂起 Ubuntu 就像拔掉和重新插入一样,我可以再次安装和使用驱动器(不应该发生的事情)。我能够为使用的驱动器设置一个待机计时器,
sdparm
但它并没有解决问题,在暂停 Ubuntu 驱动器旋转并且从不减速之后,即使计时器设置为一个很小的值,比如一分钟。当我遇到不同的结果时,我不能 100% 确定,但似乎我只是在驱动器连接到 USB3 端口时遇到问题。
- 但是 USB2 也有它自己的问题,例如在恢复 Ubuntu 驱动器旋转之后。
我可以确认我在 Windows 中也遇到了同样的问题。
当 Western Digital 设备返回
SG_IO
错误时,通常意味着虽然hdparm
会执行一些请求的操作,但它不是该特定磁盘的正确工具。相反,该sdparm
实用程序是必需的。对于我在这里拥有的一些 USB3.0 WD 磁盘,这些是在连接的笔记本电脑暂停后使事物保持旋转所需的设置:
注意:请务必更换
/dev/sdX
正确的设备。第一个命令将设备设置为在 5 分钟后减速(假设驱动器的
SCT
值为100ms
)。第二条命令允许驱动器自行进入待机模式。您可以使用以下命令显示磁盘的所有参数和设置:
编辑 - 尝试
hd-idle
有许多报告
hdparm
无法与 WD 驱动器一起正常工作。实用程序hd-idle是为 Linux 编写的。
尽管它的“声名鹊起”是在 10 分钟不活动后降低外部驱动器的速度,但可能有一种方法可以在挂起操作期间调用它来降低速度。
hd-idle
已在 GitHub 上分叉。提供选项来保存日志文件并按需减速。我在Ask Ubuntu中多次发布了相同答案的变体。这种变化来自问答:
(......答案的第一部分被剪断......)
更简单的解决方案关闭所有 USB 端口
我最近遇到了一个未知端口阻止笔记本电脑挂起的问题。我找到了我修改的这个解决方案(代码中的信用)。
/lib/systemd/system-sleep/custom-xhci_hcd
使用sudo
powers创建文件并插入以下代码:当我发现将系统置于睡眠模式就像拔下和重新插入驱动器一样,我怀疑 USB 端口及其电源可能存在一些问题。
我通过 BIOS 并将“Always On USB”设置为“Enable”;似乎将此参数设置为 Enable 已解决此问题。