Um dispositivo destacável como eSATA, drive USB pode ser removido abruptamente (simplesmente puxando o plugue).
Se houver identificadores de arquivos abertos em uma partição, essas partições não serão desmontadas, ou seja, o comando umount
do Linux falhará, mesmo DEPOIS de a unidade estar fisicamente desconectada.
Se a desmontagem falhar, em seguida, na reconexão do dispositivo, o mount
falhará também. Então você tem que descobrir quais processos estão usando a unidade e matá-los ou fechar todas as alças. Se você não conseguir fazer isso, terá que reinicializar a caixa para montar sua unidade. E eu definitivamente não posso matar o processo usando isso.
Não vejo nenhuma opção "force unmount", há uma opção -f
, mas é apenas para o NFS.
Isso soa muito estranho, o Linux não acomoda esse cenário em que um usuário simplesmente pega uma unidade? Alguém sabe como lidar com esse cenário normalmente no Linux?
Existe alguma maneira de descobrir quais identificadores de arquivo estão abertos em uma partição / dispositivo em particular ou liberar e fechar seletivamente todas as alças de arquivo somente para um dispositivo específico?
Nota: O comando lsof
não está disponível no Linux embarcado que estou usando (busybox).
"fusor" não está disponível no meu Linux incorporado.
Eu tentei o preguiçoso -l. No entanto, não parece consistentemente funcionar. Diga por exemplo
Eu mantenho um identificador de arquivo aberto (com "tail -f" em algum arquivo no dispositivo). Então eu desanexar uma unidade e então faço "umount -l" e desmonta. Em seguida, reconecto a unidade e tento montá-la novamente no mesmo ponto de montagem, enquanto a cauda ainda está em execução. Não funciona de forma consistente. Às vezes, é bem-sucedido e às vezes não. Isso me deixa desconfortável usando a opção preguiçosa e se ela deixar o sistema de arquivos em estado inconsistente. E também não tenho certeza se essa opção preguiçosa deveria ser usada para tais cenários.
Eu não posso matar o processo que tem identificadores de arquivos abertos.
Parece que se eu montei o dispositivo em say / mnt / abc e se eu desconectar a unidade e depois reconectar, o Linux parece reconectar o sistema de arquivos do dispositivo ao mesmo ponto de montagem "/ mnt / abc", sem nos fazendo desmontar ou montar. E então as mesmas antigas alças de arquivos abertos parecem começar a funcionar após a reconexão (pelo menos para a operação de leitura de arquivos). Esta é minha observação. Não tenho certeza se esse é o comportamento esperado. No entanto, isso também não parece estar funcionando de forma consistente.
Eu tinha um identificador de arquivo aberto para leitura ("tail -f") que deixei aberto, desmembramento e recolocado e modifiquei o arquivo sendo seguido e vi a saída "tail -f" sendo atualizada com as alterações .
No entanto, se eu tentar modificar um arquivo após o dispositivo ter desaparecido (ele fornecerá o erro esperado) e, em seguida, eu reconectar, o sistema de arquivos do dispositivo não será reconectado corretamente ao mesmo ponto de montagem. Em caso de gravação de um arquivo (enquanto o dispositivo não estava lá), ele não parece estar funcionando.
Existe algum comportamento padrão / consistente que o Linux segue quando uma unidade é removida abruptamente sem fechar todas as alças e desmontar corretamente todas as partições?