web-dev-qa-db-ja.com

LinuxでSATAデバイスをイジェクトする

LinuxでSATAデバイスを正しくイジェクトする方法は?私はイジェクトコマンドがUSBデバイスのためにそれを行うことができることを知っています:

eject usbDevicePath 

SATAデバイスでも同じように機能しますか?キャッシュを同期し、SATAデバイスの電源を適切に切りますか?

5
Sergei

解決策は、ドライブの電源を切ってプラグを抜く前に、ソフトウェアを介してドライブをスピンダウンすることです。これを行う最良の方法は、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
zur4ik

この回答 最も役に立ちました:アンマウント後、LVM、LUKSなどを停止します:

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

mountコマンドが役に立ちます。 man mount を参照してください。

したがって、そのデバイスを「イジェクト」する必要があります。デバイスがどれであるかを確認するだけで、次の方法で実行できます。

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

したがって、/ dev/sda1を「排出」する場合は、次を使用します。

Sudo umount /dev/sda1

もちろん、デバイスが使用中/ビジーの場合、sda1が私のOSがある場所のように、それはあなたにそれをさせません:D

1
mirkobrankovic