Expulsar unidades USB / comando de expulsión

55

Sé que el ejectcomando se puede usar para expulsar casi cualquier componente de hardware conectado, pero ¿se puede usar para expulsar unidades USB?

¿Es posible expulsar unidades USB y discos duros externos con el ejectcomando?

Joe Barr
fuente
3
Relacionado: lo contrario de eject /dev/sdXes sg_start -s /dev/sdX(del sg3_utilspaquete), ambos usan comandos SCSI para enviar al dispositivo.
Yeti

Respuestas:

15

No. Tampoco necesitan serlo; ejectse usa para abrir unidades ópticas, donde no se puede extraer el medio directamente.

Desmontar es suficiente para USB / eSATA / etc. dispositivos de almacenamiento.

Ignacio Vazquez-Abrams
fuente
Hmm, vi expulsar el disco duro como en / dev / sda en alguna parte. Supongo que la referencia estaba mal entonces.
Joe Barr
Puedes hacerlo, pero generalmente no hace mucho o nada.
Ignacio Vazquez-Abrams
1
Esto supone que el dispositivo está montado en primer lugar, y eso conlleva otro gran conjunto de suposiciones (tiene un sistema de archivos que puede leer, por ejemplo). Imagine que está borrando un montón de unidades externas; probablemente nunca se monten. expulsar es lo correcto para usar.
James Moore
1
Si alguna vez estoy inseguro, syncantes de sacarlo
EkriirkE
Grande, gordo ADVERTENCIA: Esto NO es completamente cierto. Si no lo ejecthace, el controlador de dispositivo USB subyacente aún puede (intentar) escribir DESPUÉS de que umounthaya regresado. Esto se puede ver claramente si la unidad tiene un LED de estado. Tirar de la memoria USB justo después de que umounttermine es RECETA PARA DESASTRES.
ZioByte
77

Si. Por ejemplo:

sudo eject /dev/sda

Otras respuestas aquí que indican que necesita hardware de expulsión mecánica son incorrectas.

Desmontar no es lo mismo que expulsar.

  1. Si desmonta un volumen, puede volver a montarlo de inmediato, ya que el dispositivo subyacente aún está disponible. En algunas situaciones, esto podría presentar un riesgo de seguridad. Al expulsar el dispositivo, solo un reinicio del subsistema USB (por ejemplo, un reinicio) volverá a cargar el dispositivo.
  2. Al expulsar el dispositivo, deshabilita efectivamente cualquier acceso posterior al dispositivo. Solo un reinicio del subsistema USB (por ejemplo, un reinicio) volverá a cargar el dispositivo. De lo contrario, debe desconectar físicamente el dispositivo USB y volver a conectarlo para acceder nuevamente.
  3. Antes de expulsar, este comando desmontará todos los volúmenes en el dispositivo que se montaron.
  4. Si los volúmenes están en uso, este comando fallará como con desmontar, excepto que algunos volúmenes pueden desmontarse y algunos volúmenes pueden permanecer montados.
Danorton
fuente
1
También tuve que usar sudopara que este comando terminara (todo lo que haría sería desmontar la unidad antes de decir que no podía abrir el archivo). Aparte de eso, respuesta útil.
GDP2
Respuesta poco apreciada en este hilo. Basta con mirar una memoria USB montada en FAT32 y observar cómo desmontar y expulsar tienen un mundo de diferencia solo en el explorador de archivos (es decir: nautilus) solo. Un simple clip de Sansa también ayudaría a demostrar esto.
Nube
El dispositivo todavía está presente al ejecutar lsusb. Por lo tanto, no tiene que restablecer todo el subsistema USB. Solo el dispositivo es suficiente. Puede usar usbreset para hacer esto github.com/jkulesza/usbreset github.com/CWempe/usbreset Los archivos usbreset.c son idénticos en ambos proyectos,
Hannes
¿Cómo sé que "sda" es el correcto? ¿Puedo asignar sda, sdb, etc. a los nombres de dispositivos reales?
Jürgen K.
38

ejectfuncionará, pero en realidad no "terminará el trabajo" con respecto a las unidades giratorias USB .

La mejor manera de desconectar un disco duro externo USB, después del desmontaje adecuado , es:

udisks --detach /dev/sdb

Esto generalmente hace que la unidad gire hacia abajo con gracia.

Precisamente, la implementación actual :

  • envía el comando SCSI sync-cache,
  • envía el comando de parada SCSI,
  • desenlaza el controlador del kernel de almacenamiento usb,
  • suspende el dispositivo USB (alimentación),
  • lógicamente lo deshabilita / elimina de su puerto USB.

Este proceso está cerca del procedimiento manual que se sugiere aquí . La respuesta inicial fue en askubuntu .

EDITAR: Además, como señala g.rocket , este comando puede ser equivalente:

udisksctl power-off -b /dev/sdb
Totor
fuente
En mi ubuntu onyl udisksctlque no tiene --detachotion está disponible. ¿Qué hacer en este caso? gracias.
Wakan Tanka
@WakanTanka que instales udisks.
Totor
¿Cómo puedo instalar udisks? No está en mi sistema. Encontré el paquete udisks2, pero eso no lo hizo udisksni estaba udisks2 disponible.
Martin Thoma
55
@WakanTanka udisksctl power-off -b /dev/sdwhateverparece hacer lo mismo.
g.rocket
@ g.rocket respuesta actualizada en consecuencia. Gracias.
Totor
8

Pasos manuales para desmontar disco / dev / sdb (Requiere sudo):

echo 'offline' > /sys/block/sdb/device/state
echo '1' > /sys/block/sdb/device/delete

Esto apagará completamente el dispositivo y lo desconectará del sistema. No se detectará nuevamente hasta que se desconecte y vuelva a conectar.

Tony George
fuente
2
FWIW, esto es lo único que funciona para mí en un Xen dom0 con una base USB externa: los comandos de expulsión y udisks dieron errores.
GS - Pídele disculpas a Monica el
1
Estaba buscando esto, estoy en modo de emergencia dracut y no tengo acceso a ninguna de las otras funciones. ¡Gracias!
Nassiel
hdparm -YTambién es útil para las unidades SATA / IDE.
Walf
6

Si lee detenidamente la página del manual eject (1) , puede ver que hay 4 métodos de expulsión:

   -r   This  option specifies that the drive should be ejected using a CDROM
        eject command.

   -s   This option specifies that the drive should  be  ejected  using  SCSI
        commands.

   -f   This option specifies that the drive should be ejected using a remov‐
        able floppy disk eject command.

   -q   This option specifies that the drive should be ejected using  a  tape
        drive offline command.

Cuando llama a expulsar en HDD / SCSI, emite un ioctl(fd, SG_IO, (void *)&io_hdr);comando (copiar de las eject.cfuentes).

Esto es equivalente a la eliminación segura del dispositivo en MS Windows o MaxOSX.

Para algunos dispositivos esto tiene un significado especial. Por ejemplo, Kindle 3 después de que el comando de expulsión se haya movido al modo de carga y permita navegar en el dispositivo, antes de que la pantalla estuviera bloqueada.

Otras utilidades hacen lo mismo, como esta

scsi-spin --force --down /dev/sda
gavenkoa
fuente
3

"Expulsar" no tiene sentido para el hardware sin una bandeja u otro mecanismo de carga (supongo que también funciona con unidades de cinta).

Sin embargo, las pruebas con una unidad flash USB externa indican que ejectfunciona de manera similar umount, con el efecto secundario de hacer que los nodos del dispositivo desaparezcan, por ejemplo

% ls  /dev/sdc*
/dev/sdc  /dev/sdc1
% sudo eject /dev/sdc
% ls  /dev/sdc*
/dev/sdc

Tenga en cuenta que /dev/sdc1ha desaparecido.

Renan
fuente
1
Nunca había probado con cintas ( mt rewoffles más conveniente, ya que también se rebobina), pero hace el trabajo con unidades de disquete motorizados como las que se encuentran en viejas Mac y estaciones de trabajo Sun.
Alexios
@Alexios interesantes.
Renan
3

En la línea de comando osx debe usar diskutil donde LABEL es la etiqueta de su unidad usb.

diskutil eject /Volumes/<LABEL>
efesaid
fuente
2

udisks --detach /dev/sdXdonde (X) es la última letra de su dispositivo usb. Funciona bien en cualquier sistema Linux.

victorx66
fuente
Su respuesta está bien, aunque tal vez sea un poco corta. Yo sugeriría a elaborar más: lo que hace este comando, cómo, por qué es esto lo que sugiere, etc.
user259412
0

OK, intentaré explicar esto mejor:

El comando udisks elimina y apaga completamente cualquier dispositivo usb montado o conectado en el comando de desmontaje del sistema, solo desmonta la partición, es decir: dev / sdb1 o lo que sea, pero el usb todavía está presente en el sistema.

Por lo tanto, no es lo mismo desmontar, expulsar y separar

udiscos = apagar el usb

umount = solo desmonta la partición, no todo el pendrive

expulsar = el mismo o muy cerca del comando umount

victorx66
fuente