Encerrando graciosamente as unidades de disco USB antes de desconectar

4

Com o Fedora 27, ao desconectar uma unidade de disco USB externa, o diário registra linhas como estas:

May 07 22:29:11 usb 2-3.1: USB disconnect, device number 23
May 07 22:29:11 sd 3:0:0:0: [sdb] Synchronizing SCSI cache
May 07 22:29:11 sd 3:0:0:0: [sdb] Synchronize Cache(10) failed:
                            Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK

O que se deve fazer sobre isso?

por que o sistema / kernel tenta sincronizar o cache depois que a unidade já está desconectada?

É possível desligar o disco USB antes da desconexão? Por exemplo, com um comando que emite o comando Synchronize-Cache e depois gira a unidade.

Isso talvez também reduza o estresse mecânico na unidade, pois a perda repentina de energia com o disco giratório não é necessariamente ideal.

Editar: Um eject /dev/sdb é ineficaz, ou seja, as mensagens do kernel acima ainda aparecem no dispositivo e o disco continua girando. Em vez disso, o comando de ejeção gera essas mensagens de log do kernel:

May 18 17:26:06  ldm_validate_partition_table(): Disk read failed.
May 18 17:26:06  Dev sdb: unable to read RDB block 0
May 18 17:26:06   sdb: unable to read partition table
May 18 17:26:06  ldm_validate_partition_table(): Disk read failed.
May 18 17:26:06  Dev sdb: unable to read RDB block 0
May 18 17:26:06   sdb: unable to read partition table

Editar: Desligar o disco com udisksctl power-off --block-device /dev/sdb funciona:

May 19 08:08:21  udisksd[9447]: Successfully sent SCSI command SYNCHRONIZE CACHE 
                                to /dev/sdb
May 19 08:08:21  udisksd[9447]: Successfully sent SCSI command START STOP UNIT
                                to /dev/sdb
May 19 08:08:21  kernel: sd 3:0:0:0: [sdb] Synchronizing SCSI cache
May 19 08:08:21  udisksd[9447]: Powered off /dev/sdb - successfully wrote
         to sysfs path /sys/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/remove
May 19 08:08:21  kernel: usb 2-3.1: USB disconnect, device number 60

E, de fato, o disco é desativado.

    
por maxschlepzig 18.05.2018 / 15:41

1 resposta

2

Use udisksctl para desligar a unidade:

   power-off
       Arranges for the drive to be safely removed and powered off. On the OS side this includes ensuring that
       no process is using the drive, then requesting that in-flight buffers and caches are committed to stable
       storage. The exact steps for powering off the drive depends on the drive itself and the interconnect
       used. For drives connected through USB, the effect is that the USB device will be deconfigured followed
       by disabling the upstream hub port it is connected to.

, por exemplo,

udisksctl power-off --block-device /dev/sdb

Você pode executar o comando como um usuário comum, sem necessidade de acesso root.
Se você preferir um gui, gnome disks tem um botão para "desligar este disco" .

    
por 19.05.2018 / 02:05