在 Linux 中弹出 SATA 设备

在 Linux 中弹出 SATA 设备

如何在 Linux 中正确弹出 SATA 设备?我知道弹出命令可以对 USB 设备执行此操作:

eject usbDevicePath 

它对 SATA 设备的工作方式相同吗?它会同步缓存并正确关闭 SATA 设备吗?

答案1

解决方案是通过软件让驱动器减速,然后关闭并拔下电源。最好的方法是使用名为 scsiadd 的实用程序。此程序可以向 Linux 的 SCSI 子系统添加和删除驱动器。此外,使用相当现代的内核,删除设备将发出停止命令,这正是我们正在寻找的。

跑步:

$ sudo scsiadd -p

打印内容如下:

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: SAMSUNG HD300LJ  Rev: ZT10
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: LITE-ON  Model: DVDRW LH-20A1L   Rev: BL05
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi5 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: WDC WD10EACS-00Z Rev: 01.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05

找到要删除的驱动器,然后发出:

$ sudo scsiadd -r host channel id lun

替换 scsiadd -p 输出中的相应值。例如,如果我想删除“WDC WD10EACS-00Z”,我将运行:

$ sync & sudo scsiadd -r 5 0 0 0

如果一切正常,scsiadd 应该打印:

Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: SAMSUNG HD300LJ  Rev: ZT10
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: LITE-ON  Model: DVDRW LH-20A1L   Rev: BL05
  Type:   CD-ROM                           ANSI  SCSI revision: 05

您可以仔细检查 dmesg 的结尾。您应该看到:

[608188.235216] sd 5:0:0:0: [sdb] Synchronizing SCSI cache
[608188.235362] sd 5:0:0:0: [sdb] Stopping disk
[608188.794296] ata6.00: disabled

此时,驱动器已从 Linux 的 SCSI 子系统中移除,并且不应旋转。可以安全地拔下并关闭。

答案2

这个答案是最有用的:卸载、停止 LVM、LUKS 等之后,您可以执行以下操作:

echo 1 >/sys/block/sdX/device/delete

由于这个答案似乎吸引了那些不知道如何正确使用 sudo(8) 进行重定向的 *buntu 用户,因此这里是最容易使用 sudo 执行此操作的方法:

echo 1 | sudo dd of=/sys/block/sdX/device/delete

字面意思就是:

sudo sh -c 'echo 1 >/sys/block/sdX/device/delete'

否则,未加引号的重定向由 shell 处理外部而是调用 sudo,并且您需要重定向(而不是 echo),以超级用户权限运行。

相关内容