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.