我的目的是在 20 分钟不使用外部 USB 驱动器后降低其转速。在正常情况下,我会使用hdparm
此功能,但不幸的是,这不适用于我的外部 USB 驱动器。它给了我这样的错误:
hdparm -S240 /dev/sdc
/dev/sdc:
setting standby to 240 (20 minutes)
SG_IO: bad/missing sense data, sb[]: 70 00 05 00 00 00 00 0a 00 00 00 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
然后我头了sdparm
。
sdparm --flexible -C stop /dev/sdc
/dev/sdc: SAMSUNG HD153WI
它使磁盘旋转不到一秒钟,然后立即再次旋转。即使文件系统未安装。
然后我发现
eject /dev/sdc
确实会降低磁盘速度,但也会卸载它。
下一个想法是当有人访问文件系统中的安装路径时使用自动安装来安装驱动器。安装可以工作,但驱动器卸载后,它不会旋转。我想做的是执行上面的弹出命令后automount 卸载驱动器。
您有什么想法如何做到这一点吗?或者更好的是你有更简单的解决方案吗?
答案1
我相当确定,自动挂载没有卸载后选项。但我在 sdparm (1.07) 联机帮助页中找到了一些内容:
-r, --只读
覆盖其他逻辑以只读模式打开 DEVICE。如果命令通过 SCSI 命令集发送到 ATA 磁盘,则此选项可能很有用。例如,在 Linux 中,“-C stop”可能需要此选项来停止立即重新启动 ATA 磁盘。
我目前没有 USB 硬盘,操作系统我无法测试它,但这似乎与您遇到的问题相符。不过,我不确定如何测量驱动器的空闲时间。
如果尽管使用此选项,磁盘仍然没有保留,您可能遇到了同一手册页中描述的问题:
在 Linux 2.6 系列中,特别是对于 ATA 磁盘,使用 sdparm 停止(旋转)磁盘可能还不够,其他机制将在一段时间后再次启动磁盘。用户还可以使用“echo offline > /sys/block/sda/device/state”将磁盘标记为“离线”,其中 sda 是磁盘的块名称。要重新启动磁盘,可以将“离线”替换为“运行”。
您还可以将自动安装与弹出结合起来。即使用automount进行安装,使用eject进行卸载。它似乎工作得很好,但弹出必须以 root 权限运行。