Ejetando o dispositivo SATA no Linux

4

Como ejetar o dispositivo SATA corretamente no Linux? Eu sei que o comando ejetar pode fazer isso para o dispositivo usb:

eject usbDevicePath 

Funciona da mesma forma para dispositivos SATA? Ele sincronizará os caches e desligará o dispositivo SATA corretamente?

    
por Sergei 28.05.2013 / 11:34

3 respostas

9

A solução é desativar o drive via software antes de desligá-lo e desconectá-lo. A melhor maneira de fazer isso é com um utilitário chamado scsiadd. Este programa pode adicionar e remover unidades para o subsistema SCSI do Linux. Além disso, com kernels bastante modernos, a remoção de um dispositivo emitirá um comando de parada, que é exatamente o que procuramos.

Executar:

$ sudo scsiadd -p

que deve imprimir algo como:

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

Identifique a unidade que você deseja remover e, em seguida, emita:

$ sudo scsiadd -r host channel id lun

substituindo os valores correspondentes da saída scsiadd -p. Por exemplo, se eu quisesse remover “WDC WD10EACS-00Z”, eu executaria:

$ sync & sudo scsiadd -r 5 0 0 0

Se tudo funcionar, o scsiadd deve imprimir:

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

Você pode verificar o final do dmesg. Você deveria ver:

[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

Neste ponto, a unidade é removida do subsistema SCSI do Linux e não deve estar girando. É seguro desconectar e desligar.

    
por 28.05.2013 / 11:37
4

Esta resposta foi muito útil: depois do umount, parando LVM, LUKS, etc. você faz:

echo 1 >/sys/block/sdX/device/delete
    
por 19.06.2015 / 10:39
1

mount command pode ajudá-lo, veja man mount

Então, você precisa "ejetar" esse dispositivo, basta verificar qual dispositivo é, você pode fazer isso com:

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

Então, se você quiser "ejetar" / dev / sda1, use:

sudo umount /dev/sda1

Claro que, se o dispositivo estiver em uso / ocupado, ele não permitirá que você o faça, como sda1 é onde meu sistema operacional está: D

    
por 28.05.2013 / 11:42