外置 USB 3.0 HDD 关机或重启 Raspberry Pi 4B 时降速并关机

External USB 3.0 HDD Spin down and power off when powering off or rebooting the Raspberry Pi 4B

外置 USB 3.0 HDD 希捷扩展驱动器 1TB 已连接到 Raspbian Buster 上我的 Raspberry Pi 4B。 硬盘驱动器很少工作,所以我首先希望它在空闲时间关闭(旋转停止)。 我必须马上说我尝试了 "hdparm" 实用程序,但它对我来说绝对不起作用。在我的旧 Raspberry Pi 3B + 上,它完美地完成了它的工作,但它在新的上根本不起作用。 我试过

sudo hdparm -S 10 / dev / sda1

sudo hdparm -Y / dev / sda1

但他给出的只是

/dev/sda:
issuing sleep command
SG_IO: bad / missing sense data, sb []: 70 00 05 00 00 00 00 0a 00 00 00 00 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

与此同时,磁盘继续旋转,外壳上的 LED 亮起,无论我等待多少 我还尝试在 hdparm.conf 中注册以下设置:

/dev/sda1 {
    spindown_time = 20
}

但这也没有起到任何作用,磁盘继续旋转。 另外,知道 udisks2 安装在 raspbian buster 中,我尝试创建一个配置文件 Seagate_Expansion_NA4B2GTR-0: 0.conf (这正是 "udevadm info / dev / sda" 给我的命令)目录 /etc/udisks2/ 包含内容

[ATA]
StandbyTimeout = 20

但是也没用。

磁盘不停止旋转是我的第一个问题。第二个问题是,当您关闭或重新启动 Raspberry 时,磁盘不会停放其磁头并且其电源突然中断,这会导致非常不愉快的嘎嘎声。我在网上找到了类似的查询,这是一个很常见的问题。 我希望在关闭 OS 的过程中,应该在 USB 3.0 端口断电之前正确卸载磁盘并关闭其电源。 幸运的是,我能够编写一个类似的脚本并且效果很好:

hddshutdown.sh

sudo umount -f /dev/sda1
sudo udisksclt power-off -b /dev/sda1
sleep 5

如果我 运行 这个脚本就在 OS 正在 运行ning 时,它会做我需要的:磁盘被卸载,磁盘旋转停止并且 LED 亮起案子出来了。但是,我无法让此脚本在 OS 关闭过程中以相同的方式工作。

我为 systemd 编写了这个单元: hddshutdown.service 在 /usr/lib/systemd/system/

[Unit]
Description=[=======USB-HDD-spindown============]
DefaultDependencies=no
After=umount.target
Before=shutdown.target poweroff.target reboot.target halt.target

[Service]
ExecStart=/bin/sh  /home/pi/hddshutdown.sh
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=reboot.target

我做了 "sudo systemctl enable hddshutdown",尝试了几个不同的配置选项,尝试了不同的 Before、After 和 WantedBy 值,但是 none 个选项有效,只有一个,驱动器已成功卸载,但是电源没有关闭,驱动器继续旋转并且 LED 亮起,直到 Pi 关闭为止。此外,我确定 sh 脚本会准确启动,我在脚本末尾设置的 "sleep" 延迟确实有效。

我不太了解 Linux,这是我第一次为 systemd 编写单元。查资料说udisksctl需要DBus才能工作,但是关机的时候不存在,所以驱动的电源无法关闭。当 DBus 仍然可用时,我找不到在关闭过程中尽早执行此单元的方法。 (我什至不知道这是什么,也许我说的是愚蠢) 请帮我解决其中两个问题,在此先感谢。

我自己找到了问题的答案。因为我使用的是 Seagate Expansion 硬盘,所以我使用了官方网站上的 Seagate Dashboard 程序来 "reprogram" 我的硬盘。我能够关闭外部 LED 指示灯并将旋转关闭时间设置为 10 分钟,现在在任何系统上硬盘都会在 10 分钟后关闭。不再需要使用 hdparm 或 udisks 等程序!

让我的 HDD 在闲置时自动降速的方法是 hd-idle 的新实现。

我的具体设置是:Raspberry Pi 4B + Suptronics X835 + WD Blue WD20EZRZ。

没有其他常用工具对我有用(hdparm,原始 hd-idle)。