如何在 Linux 中正确弹出 SATA 设备?我知道eject 命令可以为USB 设备做到这一点:
eject usbDevicePath
Run Code Online (Sandbox Code Playgroud)
它对 SATA 设备的工作方式是否相同?它会同步缓存并正确关闭 SATA 设备吗?
小智 9
解决方案是在关闭和拔下驱动器之前通过软件降低驱动器的转速。执行此操作的最佳方法是使用名为 scsiadd 的实用程序。该程序可以向 Linux 的 SCSI 子系统添加和删除驱动器。此外,对于相当现代的内核,移除设备将发出停止命令,这正是我们正在寻找的。
跑:
$ sudo scsiadd -p
Run Code Online (Sandbox Code Playgroud)
应该打印如下内容:
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
Run Code Online (Sandbox Code Playgroud)
确定要删除的驱动器,然后发出:
$ sudo scsiadd -r host channel id lun
Run Code Online (Sandbox Code Playgroud)
替换来自 scsiadd -p 输出的相应值。例如,如果我想删除“WDC WD10EACS-00Z”,我会运行:
$ sync & sudo scsiadd -r 5 0 0 0
Run Code Online (Sandbox Code Playgroud)
如果一切正常,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
Run Code Online (Sandbox Code Playgroud)
您可以仔细检查 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
Run Code Online (Sandbox Code Playgroud)
此时,驱动器已从 Linux 的 SCSI 子系统中移除,并且不应旋转。拔下和关闭电源是安全的。
这个答案最有用:在卸载、停止 LVM、LUKS 等之后,您可以:
echo 1 >/sys/block/sdX/device/delete
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5594 次 |
| 最近记录: |