问题描述
我想在卸载之前从终端停止外部硬盘驱动器。
它是一个通过usb 连接的sata 驱动器。
运行 hdparm 给出了这个
ry@G62x:/media$ hdparm -S10 937b2299-48ff-4a9c-8228-67ed4453e8fb/
937b2299-48ff-4a9c-8228-67ed4453e8fb/:
setting standby to 10 (50 seconds)
HDIO_DRIVE_CMD(setidle) failed: Inappropriate ioctl for device
最佳答案
您可以使用 udisks
的 命令行 功能最轻松地从终端安全地卸载和 spin-down 外部硬盘,如果您的系统设置正确,则不需要使用 sudo。 (要列出您的设备名称,请先在终端中输入 mount
。)
找到外部驱动器后,请使用以下命令。您必须首先卸载分区(使用 sdb1
或 mount
显示的任何位置):
udisks --unmount /dev/sdb1
然后安全地删除(即 spindown- 你会听到它点击和 spin-down),仅使用 sdb
,例如:
udisks --detach /dev/sdb
注意:在使用 detach
选项时,使用不带分区号的 sdb
或 sdc
至关重要;即 sdb1
或 sdc1
将不起作用。必须先卸载分区,然后磁盘本身如示例所示停止旋转。
udisks
命令对我所有的 pata 和 sata 外置硬盘都有效。
次佳答案
udisk 选项在我的情况下不起作用,但以下选项起作用:
sudo umount /dev/sdb1
sudo hdparm -y /dev/sdb
我在使用外部 USB 驱动器远程关闭无头 Linux 服务器时使用了这些命令。就我而言,安全性不是问题,因此服务器密码在脚本中。
对于 Ubuntu 服务器和 Windows 客户端,以下批处理文件,假设安装了 PuTTY:
C:\"Program Files (x86)\PuTTY\plink.exe" -ssh -t -l SERVERUSERNAME -pw PASSWORD -noagent 192.168.2.22 "echo PASSWORD | sudo umount /dev/sdb1 ; sudo -S hdparm -y /dev/sdb; sudo -S halt -i now"
对于 Debian 服务器,将 sudo halt -i now
替换为 shutdown -h -P
;在这两种情况下,网卡都保持唤醒状态,因此可以稍后唤醒。
第三种答案
如果它是 2.5″ 驱动器,您应该能够在卸载后大约 15 秒听到驱动器发出咔哒声。那是驱动器将读/写磁头停在一边,您可以安全地移除它。如果它是 3.5″ 驱动器,则没有通过向下旋转驱动器使移除更安全的方法。
第四种答案
这个答案是基于很多假设,因为我不记得它的来源。但这里是:
-
SATA实际上是hot-pluggable,但大部分控制器不支持,而SATA驱动器应该。
-
基于以上几点:如果卸载了驱动器,则可以安全地拔下它。这样做的基本原因是第 3 点。
-
现代驱动器有足够的功率在检测到紧急断电的情况下从盘片上移除驱动器磁头。
至少这就是我所做的。而且,有时我会做一个长时间的 S.M.A.R.T.测试磁盘,查看驱动器的运行状况是否正常。