Enquanto eu estava fora do meu computador, minha unidade USB criptografada foi desmontada acidentalmente de alguma forma (embora ainda estivesse fisicamente conectada na época). Não consegui me recuperar (ainda não tentei reiniciar). Agora desconectei completamente o dispositivo, mas ainda fico "Dispositivo ou recurso ocupado" quando tento remover a entrada dangling no / dev / mapper. Posso reconectar e montar a unidade sem uma reinicialização?
Aqui está o que eu tentei (nome longo alterado para "xxxxx") ...
$ sudo dmsetup ls
luks-xxxxx (252:1)
luks-yyyyy (252:0)
$ sudo umount /dev/mapper/luks-xxxxx
umount: /dev/mapper/luks-xxxxx: not mounted
$ sudo fuser --kill /dev/mapper/luks-xxxxx
$ echo $?
1
$ sudo dmsetup info -c luks-xxxxx
Name Maj Min Stat Open Targ Event UUID
luks-xxxxx 252 1 L--w 1 1 0 CRYPT-LUKS1-xxxxx-luks-xxxxx
$ sudo dmsetup remove luks-xxxxx
device-mapper: remove ioctl on luks-xxxx failed: Device or resource busy
Command failed
Depois de reconectar o dispositivo ...
$ sudo cryptsetup luksOpen "/dev/sde1" "luks-xxxxx"
Device luks-xxxxx already exists.
[EDIT] Solucionei o problema, desta vez, fechando um editor de texto da GUI que não tinha arquivos abertos, mas havia sido iniciado a partir de uma pasta no dispositivo em questão. Portanto, a pergunta se torna mais específica: como você pode identificar qual aplicativo está mantendo o dispositivo aberto?
Lembre-se de que lsof
isso não parece apresentar uma solução fácil porque, uma vez que o dispositivo é desconectado, os nomes associados fornecidos por lsof
não incluem mais o nome do dispositivo desconectado.
Respostas:
Depois de dois anos de luta com isso, acho que finalmente consegui entender completamente!
dmsetup ls
fornece os dados necessários:então
Parece que
sudo
pode ser crítico aqui - pelo menos em alguns casos.Isso deve fornecer as informações necessárias para fechar todos os arquivos abertos no dispositivo - incluindo nomes de arquivos abertos e IDs de processo para os aplicativos ofensivos. Você pode simplesmente acessar esses aplicativos e fechá-los, mas uma abordagem de força bruta pode ser algo como:
Depois de fechar todos os arquivos, algumas das ferramentas de linha de comando mostradas na pergunta podem ser necessárias para fechar a montagem existente antes que ela possa ser reaberta normalmente.
fonte
(252:1)
torna - se252,1
.Tente parar o grupo LVM antes de parar o código:
lvchange -a n [LVM_Group_name]
então
cryptsetup -v luksClose [LUKS_name]
Amostra:
fonte
kill
anteskill -9
). No entanto, a solução do @ nobar não foi suficiente para mim - parece que o próprio kernel tinha o dispositivo aberto por causa dos mapeamentos de dispositivos LVM - que esta resposta resolveu.grep
não encontrou nenhuma correspondência, mas funcionou.da próxima vez tente um preguiçoso
Isso funciona para mim na maioria das vezes, especialmente útil com unidades NFS desligadas.
fonte
Aqui está como eu consigo resolver esse problema no Linux Mint 17.3 (~ Ubuntu Trusty):
remova o dispositivo do mapeador de dispositivos
mapeie de volta
Agora os dispositivos estão acessíveis.
fonte
dmsetup remove
relata "Falha no comando".Eu estava em uma situação semelhante, mas não consegui resolver o problema removendo o
luks-xxxx
dispositivo. Em vez disso, tive que removerubuntu--vg-root
.Minha situação era:
lsof
não mostrou nenhum identificador aberto para o dispositivo.O que ajudou foi desconectar o dispositivo físico e remover o
ubuntu--vg-root
dispositivo com o seguinte comando:Nesse ponto, eu era capaz de ativar e descriptografar o dispositivo externo novamente com minha configuração usual:
fonte