Não é possível desmontar um arquivo de backup, mas não há arquivos abertos?

6

No linux, eu tenho um arquivo que montei usando a opção -o loop . Eu quero desmontar isto. No entanto, isso me diz que device is busy . No entanto, fazendo lsof | grep pathofimagefile , não obtenho resultados. E ainda não consigo desmontar!

    
por Rory 26.08.2009 / 15:47

9 respostas

4

Eu acredito que isso é o que fuser serve. Especificamente, fuser -km /path/to/mount/point - observe que o -k flag mata processos com arquivos abertos neste sistema de arquivos. Você pode omitir esse sinalizador para ver uma lista primeiro.

    
por 26.08.2009 / 16:38
9

Na sua pergunta, você escreveu grep pathofimagefile . Você já tentou com grep pathofmountpoint ?

Verifique também se nenhum processo em execução na sua máquina tem seu ponto de montagem (ou um subdiretório dele) definido como seu diretório de trabalho atual.

sudo ls -l /proc/*/cwd | grep pathofmountpoint fornecerá esses números de processo.

    
por 26.08.2009 / 15:55
3

Uau, isso é realmente antigo, mas para beneficiar aqueles que encontrarem isso no futuro, aqui está o que eu encontrei - eu tinha montagens aninhadas. Ou seja, montei uma imagem do sistema de arquivos raiz com um dispositivo de loopback em / mnt. Sob esse ponto de montagem, montei sistemas de arquivos proc e sysfs montados sob / mnt / proc e / mnt / sys. Mais tarde eu tinha esquecido os sistemas de arquivos proc e sysfs ao tentar desmontar a imagem do sistema de arquivos.

# mount -o loop rootfs_disk.img /mnt
# mount proc /mnt/proc -t proc
# mount sysfs /mnt/sys -t sysfs
# # ... ages pass
# umount rootfs_disk.img
umount: /mnt: device is busy.
# umount /mnt
umount: /mnt: device is busy.

Noah Spurrier

    
por 15.05.2014 / 10:19
1

Verifique se você não tem um shell aberto no diretório montado. Eu nunca olhei para ver se isso é mostrado em lsof ou não. Além disso, ao fazer seu lsof tentar greping no ponto de montagem não o arquivo de imagem em si.

    
por 26.08.2009 / 15:56
1

Eu tive o mesmo problema. O diretório não foi montado apenas com -o loop , mas foi exportado para o NFS usando o comando exportfs . fuser e lsof disseram que o dispositivo não estava em uso. Além disso, o exportfs -u não tinha reclamações. No entanto, o NFS ainda mostrava o dispositivo em / proc / fs / nfs / exports. Eu reiniciei o nfs e percebi isso:

Shutting down NFS mountd:                                  [  OK  ]
Shutting down NFS daemon:                                  [  OK  ]
Shutting down NFS services:                                [FAILED]
Starting NFS services:                                     [  OK  ]
Starting NFS quotas:                                       [  OK  ]
Starting NFS daemon:                                       [  OK  ]
Starting NFS mountd:                                       [  OK  ]

Então, eu pude desmontar os dispositivos. Infelizmente, é muito difícil de reproduzir. Talvez alguém possa dar mais insights.

    
por 13.08.2010 / 00:03
1

Eu acabara de ter o mesmo problema, umount não desmontará meu dispositivo de loop. Estranho o suficiente, que nem o lsof nem o fusor pudessem encontrar qualquer processo usando esse ponto de montagem. O lsof encontrou apenas o thread do kernel [loop0], eu tentei matá-lo (mesmo com -9) mas sem sucesso.

O que realmente me maravilhou, foi que depois de esperar alguns minutos (depois de tentar umount -f / mnt etc. - não funcionou), eu tentei de novo, e voila, agora deu certo?!

Eu não tenho certeza, mas talvez o próprio kernel não possa liberar o loop0-thread por um tempo, mas depois ele pode fechá-lo? Quem sabe ...

Então, a linha de fundo é: tente isso umount uma e outra vez, depois de um certo tempo você poderia ter sorte: -)

    
por 17.02.2016 / 16:33
0

run pwd ... o seu terminal ainda está no pathofimagefile ? Se for assim, saia do pathofimagefile e, em seguida, execute novamente o umount .

    
por 26.08.2009 / 15:56
0

E sobre:

sudo lsof | grep loop
    
por 26.08.2009 / 18:57
0

Experimente sudo losetup --detach /dev/loop0

    
por 17.02.2018 / 01:40