Ejetar / remover com segurança vs umount

43

Estou usando o Ubuntu 12.04 e, quando clico com o botão direito no ícone da minha unidade flash (na barra esquerda do Unity), recebo duas opções que me confundem: ejetar e remover com segurança .
Quanto mais perto eu chegava de uma resposta foi esse tópico do fórum , que conclui que (para uma unidade flash) eles são iguais e também equivalentes ao uso do umountcomando. No entanto, essa última afirmação parece ser falsa.
Se eu usar umounto console para desmontar meu mergulho em flash e depois usar o comando lsblk, ainda vejo meu dispositivo (com nada em MOUNTPOINT, é claro). Por outro lado, se eu ejetar ou remover com segurança minha unidade flash, lsblkela não a lista mais.

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

LGenzelis
fonte
3
Você pode encontrar um arquivo .desktop para o ícone abaixo /usr/share/applications/ou algo assim. Se você o abrir em um editor de texto, o campo Exec = ... corresponderá ao comando que é executado quando você clica nele.
Spelufo

Respostas:

64

Se você estiver usando systemd, use o udisksctlutilitário com a power-offopção:

desligar

Organiza para que a unidade seja removida e desligada com segurança. No lado do sistema operacional, isso inclui garantir que nenhum processo esteja usando a unidade e solicitar que os buffers e caches de bordo sejam comprometidos com o armazenamento estável.

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

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

Se você não estiver usando systemd, o bom e velho udisksdeve funcionar:

udisks --unmount /dev/sda1
udisks --detach /dev/sda
jimmij
fonte
Oh cara - só agora percebi que a pergunta era como fazer isso na linha de comando - e não qual é a diferença entre uma coisa e outra. Eu não vou excluir minha resposta porque acho que oferece alguma perspectiva - mas a sua é a resposta certa para sistemas Linux, eu acho (nem sei se essa é uma pergunta relevante sobre o BSD de qualquer maneira ...) .
mikeserv
4
udisksctl power-offparece não ser equivalente ao "remover com segurança" no meu caso. Com um cartão micro-SD no meu leitor de cartão interno, dispositivo /dev/sdd, sem sistemas de arquivos montados, quando eu uso o comando udisksctl power-off -b /dev/sdd, o LED do leitor apaga, mas todo o dispositivo fica inoperante, eu acho, porque, bem, literalmente desligado completamente. Eu tenho que reiniciar o sistema para que ele se torne utilizável novamente.
ack
1
Para @ack: você pode desativar / ativar o hub (possivelmente interno) onde o leitor está conectado. Por ser um hub, ele também eliminará e reenumerará tudo, incluindo o dispositivo ausente. Espero que você possa ler este exemplo: udisksctl power-off -b /dev/mmcblk0mmc0: cartão aaaa removido usb 3-1.8: desconexão USB, número do dispositivo 41 cd /sys/bus/usb/devices/usb3/3-1 echo 0 > authorized echo 1 > authorizedhub 3-1: 1.0: hub USB encontrado usb 3-1: autorizado a conectar usb 3-1.8: novo dispositivo USB encontrado , idVendor = 0bda, idProduct = 0129 mmc0: novo cartão SDR50 SDHC de velocidade ultra-alta no endereço aaaa
AB
14

umounté perfeitamente seguro para o disco. Depois de fazer isso, você desmontou com êxito o sistema de arquivos e não precisa se preocupar com isso. A principal diferença entre ejetar e umountnão diz respeito ao disco - é sobre a saída de energia de 5v da porta USB.

Depois, umountvocê ainda poderá ver seu disco listado lsblkporque ainda está ligado e conectado. umountsistema de arquivos de um disco rígido interno e você verá o mesmo comportamento pelo mesmo motivo. Mas quando você ejeta um dispositivo USB, você o desliga e deixa de desenhar os 5v normalmente - acho que chega a 0,5v, 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 barramento usb ...

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

Mesmo que 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 vou dar uma olhada novamente ...

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

Hummm ...

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
mikeserv
fonte
1
Obrigado. Após umountum disco rígido externo, é seguro remover o disco rígido externo do computador?
Tim
1
Eu não acho que umountseja equivalente a "remover com segurança" e nem é udisksctl power-off, por favor, veja meu comentário na outra resposta. Compare com o comportamento no Windows, por exemplo. Meu palpite é que o Windows faz um pouco mais do que apenas 'desmontar' os sistemas de arquivos no dispositivo. Tenho observado que girar para baixo discos rígidos externos, desligando LEDs sobre leitores de cartão ( sem posteriormente tornando o dispositivo inutilizável a menos replugged ou o sistema reiniciado), etc.
ack
2
@ack - o que o Windows tem a ver com isso? e por que você está adivinhando? e você não precisa reiniciar para que se torne utilizável novamente. você umountisso. então você o desliga. e eu nunca sugeri nada a respeito de udiskctluma maneira ou de outra.
mikeserv
1
@mikeserv "Remover hardware com segurança" é a expressão usada no Windows. É provável que outros sistemas tenham copiado essa frase devido à familiaridade do usuário. É importante diferenciá-lo da mera desmontagem do sistema de arquivos. Um exemplo de onde isso importa muito é quando o sistema operacional não tem certeza sobre o cache de gravação de um dispositivo de armazenamento. Pessoalmente, experimentei uma perda de dados bastante significativa (superbloco e arquivos corrompidos) depois de simplesmente desmontar e desconectar um disco rígido externo. Mais tarde, descobri que o Linux havia avisado sobre isso: "Nenhuma página de modo de cache encontrada", "Assumindo o cache da unidade: gravação".
ack
1
@ack - não, isso não é importante. seu problema provavelmente é seu ACPI. ele não tem nada a ver exatamente com o sistema operacional - apenas que o fabricante da sua placa escreveu apenas drivers para um sistema operacional. esses pequenos dispositivos multicardos exigem acesso de nível bastante baixo ao alvo da placa - eles precisam ser capazes de fazer coisas como ocular. eles não são dispositivos de bloco - são dispositivos de caracteres. eles não são nada como discos USB. o board-rom precisa lidar com eles separadamente e, se o seu fornecedor o suportar mal (não é incomum - tente inicializar a partir de um), você estará sem sorte. mas não é problema do linux.
mikeserv