Como realmente forçar a desmontagem de um sistema de arquivos (sem investigação manual, por que está ocupado)

12

Como desmontar um sistema de arquivos no Linux sem investigar por que ele está ocupado?

Eu quero fazer isso em um comando. Ele deve manipular aplicativos usando esse sistema de arquivos, submontagens, contêineres ( lxc-execute -n qqq <command> ) e todas as outras coisas.

Apenas "desmontar. Sem objeções!" Patches ou configurações especiais do kernel são permitidos.

O sistema de arquivos deve estar desmontado, então umount -l certamente não é uma opção. Por exemplo, para cryptsetup remove (BTW como forçar cryptsetup remove ? Atualizar: cryptsetup luksSuspend , mas você não poderá cryptsetup luksResume se não for LUKS).

Como tornar inválidas todas as alças de arquivo naquele sistema de arquivos?

A única maneira confiável que conheço é montar o sistema de arquivos através do FUSE (geralmente não há problema em desmontar o FUSE, porque eu posso simplesmente matar o processo).

P.S. Já conhece o mount fuser , lsof | grep , cat /proc/*/mounts | grep e o patch "badfs" obsoleto e não funcional.

    
por Vi. 12.08.2010 / 12:15

4 respostas

3

Use a combinação Chave do Magic SysRq : Alt + SysRq + u

Note que você deve fazer uma sincronização de emergência primeiro: Alt + SysRq + s

Observe também que em alguns teclados (especialmente novos), você tem que usar PrtSc em vez de SysRq

    
por 14.08.2010 / 17:10
2

umount --force ou umount -f (equivalente)

Se isso falhar, use:

umount --lazy ou umount --l (equivalente)

A opção " preguiçoso " irá "desanexar o sistema de arquivos da hierarquia do sistema de arquivos agora e limpar todas as referências a o sistema de arquivos assim que ele não estiver mais ocupado (Requer o kernel 2.4.11 ou posterior). "Isso pode causar instabilidade, mas irá desmontar a coisa." Qualquer programa que use a unidade pode falhar.

    
por 08.03.2014 / 22:29
1
umount -f

pode ser usado para forçar uma desmontagem quando o sistema de arquivos estiver ocupado.

    
por 12.08.2010 / 13:11
1

Eu tenho medo de que não há como fazer isso com um único comando. umount -f realmente não funciona tão bem quanto se esperaria. Se houver submontagens em alguma outra montagem, você não poderá simplesmente desmontar essas montagens em alguma ordem aleatória e esperar que elas caiam.

Mas não se preocupe, há uma maneira de tornar tudo isso um único comando: crie um script shell / Perl que elimine os processos desejados, desmonte contêineres, submounts e, finalmente, desmonte algumas outras montagens. Então você pode simplesmente chamar seu script sob demanda. Inicialmente, isso é mais trabalho para você, mas depois que você começa a trabalhar no script, tudo é brincadeira de criança. :)

    
por 12.08.2010 / 14:13

Tags