題 在Linux中彈出SATA設備


如何在Linux中正確彈出SATA設備? 我知道eject命令可以為usb設備做到:

eject usbDevicePath 

SATA設備的工作方式是否相同?它會同步緩存,並正確關閉SATA設備嗎?


4
2018-05-28 09:34


起源




答案:


解決方案是通過軟件關閉驅動器,然後再將其關閉並拔下插頭。執行此操作的最佳方法是使用名為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子系統中刪除,它不應該旋轉。拔下插頭是安全的。


9
2018-05-28 09:37



謝謝,這個有效。經過檢查,scsiadd在關閉之前不會同步緩存,所以我們需要手動完成。此外,我的WD HDD在運行命令後約10秒內關閉。 - Sergei


這個答案 最有用的是:在卸載後,停止LVM,LUKS等,你可以:

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

4
2018-06-19 08:39





mount命令可以幫到你,看看 男子山

因此,您需要“彈出”該設備,只需檢查它是哪個設備,您可以執行以下操作:

# sudo df -lh
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       145G   50G   87G  37% /

所以,如果你想'彈出'/ dev / sda1,只需使用:

sudo umount /dev/sda1

當然,如果設備正在使用/忙碌,它將不允許你這樣做,就像sda1是我的操作系統所在的地方:D


1
2018-05-28 09:42