外部USB 3.0 HDD Seagate Expantion驱动器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
}
但是这也没有产生任何效果,磁盘继续旋转。 另外,知道在raspbian buster中安装了udisks2之后,我尝试在目录/ etc /中创建一个配置文件Seagate_Expansion_NA4B2GTR-0:0.conf(这正是命令“ udevadm info / dev / sda”给我的) udisks2 /及其内容
[ATA]
StandbyTimeout = 20
但是它也不起作用。
磁盘没有停止旋转这一事实是我的第一个问题。第二个问题是,当您关闭或重新启动Raspberry时,该磁盘不会停滞其磁头,并且其电源会突然中断,这会引起非常不愉快的嘎嘎声。我在互联网上发现了类似的查询,这是一个非常普遍的问题。 我想在关闭操作系统的过程中,应正确卸载磁盘并关闭电源,然后再断开USB 3.0端口的电源。 幸运的是,我能够编写类似的脚本,并且效果很好:
hddshutdown.sh
sudo umount -f /dev/sda1
sudo udisksclt power-off -b /dev/sda1
sleep 5
如果我是在操作系统运行时运行此脚本的,则它完全可以满足我的需求:磁盘已卸载,磁盘旋转停止并且机箱上的LED熄灭。但是,在操作系统关闭过程中,我无法使此脚本以相同的方式工作。
我为systemd编写了这个单元: / usr / lib / systemd / system /
中的hddshutdown.service[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值,但是没有一个起作用,只有一个选项,驱动器已成功卸载,但是电源没有关闭,驱动器继续旋转,并且LED亮起,直到关闭Pi。而且,我肯定知道sh脚本可以准确启动,我在脚本末尾设置的“睡眠”延迟确实有效。
我不太了解Linux,这是我第一次为systemd编写单元。我发现udisksctl需要DBus才能工作,但在关机期间不存在该信息,这就是为什么无法关闭驱动器电源的原因。当DBus仍然可用时,我找不到在关机过程中尽早执行此单元的方法。 (我什至不知道这是什么,也许我说过愚蠢) 请先帮助我解决其中的两个问题。
答案 0 :(得分:1)
我自己找到了我问题的答案。因为我使用的是Seagate Expansion驱动器,所以我使用了官方网站上的Seagate Dashboard程序对硬盘进行“重新编程”。我能够关闭外部LED指示灯,并将旋转关闭时间设置为10分钟,现在在任何系统上,硬盘都将在10分钟后关闭。不再需要使用诸如hdparm或udisks之类的程序!
答案 1 :(得分:1)