Ejetar / remover com segurança vs umount

36

Estou usando o Ubuntu 12.04, e quando clico no ícone da minha unidade flash (na barra esquerda do Unity) recebo duas opções que me confundem: ejetar e com segurança remover .
O mais perto que cheguei a uma resposta foi este tópico do fórum , que conclui que (para uma unidade flash) ambos são igual e também equivalente a usar o comando umount . No entanto, esta última afirmação parece ser falsa.
Se eu usar umount do console para desmontar meu mergulho flash, e então eu usar o comando lsblk , ainda vejo meu dispositivo (com nada sob MOUNTPOINT, é claro). Por outro lado, se eu ejetar ou remover com segurança minha unidade flash, lsblk não a lista mais.

Então, minha pergunta é: qual seria o comando / comandos do console que realmente reproduziria o comportamento de eject e removendo com segurança ?

    
por LGenzelis 11.01.2015 / 23:39

2 respostas

52

Se você estiver usando systemd , use udisksctl utility com power-off option:

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.

Eu recomendaria primeiro desmontar todos os sistemas de arquivos naquele usb. Isso pode ser feito também com udisksctl , portanto, os passos seriam:

udisksctl unmount -b /dev/sda1
udisksctl power-off -b /dev/sda

Se você não estiver usando systemd , então o bom udisks deve funcionar:

udisks --unmount /dev/sda1
udisks --detach /dev/sda
    
por 12.01.2015 / 00:35
14

umount é perfeitamente seguro para o disco. Uma vez feito isso, você desmontou com sucesso o sistema de arquivos e não precisa se preocupar com essas linhas. A principal diferença entre eject e umount não diz respeito ao disco - e sim à saída de 5v da porta USB.

Depois de umount , você ainda poderá ver seu disco listado em lsblk , porque ele ainda está ligado e conectado. umount um sistema de arquivos do disco rígido interno e você verá o mesmo comportamento pelo mesmo motivo. Mas quando você ejeta um dispositivo USB, você o desativa e deixa de desenhar o 5v normalmente - acho que chega a 0,5 v, mas essa classe aconteceu há muito tempo.

lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
NAME   FSTYPE LABEL   UUID                                 MOUNTPOINT
sdd                                                        
├─sdd1 vfat   USBESP  3AD6-C7CC                            
└─sdd2 ext4   USBROOT 5afbfe93-6955-44ec-8c4f-cf381f8ef174 

Aqui está o caminho do seu barramento usb ...

cat /sys/bus/usb/devices/5-3/manufacturer 
SanDisk

Embora eu quase nunca o monte, ele está conectado e piscando por um longo tempo, eu acho ...

cat /sys/bus/usb/devices/5-3/power/{level,connected_duration}
on
1777877440

Eu deveria fazer algo sobre isso:

echo 1 | sudo tee /sys/bus/usb/devices/5-3/remove                                      

Agora eu vou dar uma olhada nisso de novo ...

cat /sys/bus/usb/devices/5-3/power/level                            
cat: /sys/bus/usb/devices/5-3/power/level: No such file or directory

Hmmm ...

lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
lsblk: /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0: not a block device
    
por 12.01.2015 / 01:34