device-mapper: remove o ioctl em luks-xxxx falhou: Dispositivo ou recurso ocupado

20

Enquanto eu estava fora do meu computador, minha unidade USB criptografada foi acidentalmente desmontada de alguma forma (embora ainda estivesse fisicamente conectada no momento). Eu não consegui me recuperar (ainda não tentei reiniciar). Eu já desconectei completamente o dispositivo, mas ainda recebo "Dispositivo ou recurso ocupado" quando tento remover a entrada pendente em / dev / mapper. Posso me reconectar e montar a unidade sem reiniciar?

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

Após reconectar o dispositivo ...

$ sudo cryptsetup luksOpen "/dev/sde1" "luks-xxxxx"
Device luks-xxxxx already exists.

[EDIT] Eu resolvi o problema, desta vez, fechando um editor de texto GUI que não tinha arquivos abertos, mas que havia sido lançado de uma pasta no dispositivo em questão. Então, a questão se torna mais específica: Como você pode identificar qual aplicativo está mantendo o dispositivo aberto?

Lembre-se de que lsof não parece apresentar uma solução fácil porque, quando o dispositivo é desconectado, os nomes associados fornecidos por lsof não incluem mais o nome do dispositivo desconectado.

    
por nobar 05.03.2014 / 02:55

5 respostas

17

Depois de dois anos de luta com isso, eu acho que finalmente consegui fazer isso completamente!

dmsetup ls fornece os dados de que você precisa:

$ sudo dmsetup ls
luks-xxxxx (252:1)

então

sudo lsof |grep 252,1

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:

kill -9 (process ID)

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.

    
por nobar 06.10.2015 / 07:48
7

Tente parar o grupo LVM antes de parar o cypher:

lvchange -a n [LVM_Group_name]

então

cryptsetup -v luksClose [LUKS_name]

Amostra:

lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt
    
por Anonimo 09.05.2016 / 12:32
3

da próxima vez, tente um umount preguiçoso

umount -l /<folder>

Isso funciona para mim na maior parte das vezes, especialmente útil em drives NFS desligados.

    
por s1mmel 27.03.2015 / 17:05
2

Veja como eu resolvo esse problema no Linux Mint 17.3 (~ Ubuntu Trusty):

  1. remova o dispositivo do mapeador de dispositivos

    $ sudo dmsetup remove luks-xxyyzz
    
  2. mapeie de volta

    $ sudo cryptsetup open /dev/sdc1 luks-xxyyzz
    Enter passphrase for /dev/sdc1:
    

Agora, os dispositivos estão acessíveis.

    
por Édouard Lopez 27.12.2015 / 19:33
0

Eu estava em uma situação semelhante, mas não consegui resolver o problema removendo o dispositivo luks-xxxx . Em vez disso, tive que remover ubuntu--vg-root .

Minha situação era:

  • acidentalmente removi o dispositivo antes de ser bloqueado.
  • Tentativa de bloquear ou remover o dispositivo luks após a falha do fato com uma mensagem de erro ocupado .
  • O desbloqueio do mesmo dispositivo falhou porque já existia um dispositivo com o mesmo nome.
  • lsof não mostrou alças abertas para o dispositivo.

O que ajudou foi desconectar o dispositivo físico e remover o dispositivo ubuntu--vg-root com o seguinte comando:

sudo dmsetup remove ubuntu--vg-root

Nesse momento, eu era capaz de ativar e descriptografar normalmente o dispositivo externo novamente com minha configuração usual:

udisksctl unlock -b /dev/sda3
sudo lvchange --activate y ubuntu-vg/root
    
por justfortherec 20.04.2018 / 15:46