device-mapper: rimuovi ioctl su luks-xxxx non riuscito: dispositivo o risorsa occupato

23

Mentre ero lontano dal mio computer, la mia unità USB crittografata è stata smontata per caso in qualche modo (sebbene fosse ancora fisicamente connessa in quel momento). Non sono stato in grado di recuperare (non ho ancora provato a riavviare). Ora ho completamente disconnesso il dispositivo, ma continuo a ricevere "Dispositivo o risorsa occupata" quando tento di rimuovere la voce ciondolante in / dev / mapper. Posso riconnettermi e montare l'unità senza un riavvio?

Ecco cosa ho provato (nome lungo modificato in "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

Dopo aver ricollegato il dispositivo ...

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

[EDIT] Ho risolto il problema, questa volta, chiudendo un editor di testo della GUI che non aveva file aperti, ma era stato lanciato da una cartella sul dispositivo in questione. Quindi la domanda diventa più specifica: Come puoi identificare quale applicazione tiene il dispositivo aperto?

Ricorda che lsof non sembra presentare una soluzione semplice perché, una volta disconnesso il dispositivo, i nomi associati forniti da lsof non includono più il nome del dispositivo disconnesso.

    
posta nobar 05.03.2014 - 02:55

5 risposte

19

Dopo due anni di combattimenti con questo, penso di averlo finalmente risolto completamente!

dmsetup ls ti dà i dati che ti servono:

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

poi

sudo lsof |grep 252,1

Sembra che sudo possa essere critico qui - almeno in alcuni casi.

Questo dovrebbe darti le informazioni necessarie per chiudere tutti i file aperti sul dispositivo, compresi i nomi dei file aperti e degli ID di processo per le applicazioni incriminate. Potresti essere in grado di andare semplicemente a quelle app e chiuderle, ma un approccio a forza bruta potrebbe essere qualcosa del tipo:

kill -9 (process ID)

Dopo aver chiuso tutti i file, alcuni degli strumenti da riga di comando mostrati nella domanda potrebbero essere necessari per chiudere la montatura esistente prima che possa essere riaperta normalmente.

    
risposta data nobar 06.10.2015 - 07:48
8

Prova ad interrompere il gruppo LVM prima di interrompere cypher:

lvchange -a n [LVM_Group_name]

poi

cryptsetup -v luksClose [LUKS_name]

Esempio:

lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt
    
risposta data Anonimo 09.05.2016 - 12:32
3

la prossima volta prova un umido pigro

umount -l /<folder>

Questo funziona per me il più delle volte, specialmente utile con le unità NFS appese.

    
risposta data s1mmel 27.03.2015 - 17:05
2

Ecco come riesco a risolvere questo problema su Linux Mint 17.3 (~ Ubuntu Trusty):

  1. rimuovi il dispositivo da device-mapper

    $ sudo dmsetup remove luks-xxyyzz
    
  2. mappalo indietro

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

Ora i dispositivi sono accessibili.

    
risposta data Édouard Lopez 27.12.2015 - 19:33
0

Ero in una situazione simile ma non riuscivo a risolvere il problema rimuovendo il dispositivo luks-xxxx . Invece ho dovuto rimuovere ubuntu--vg-root .

La mia situazione era:

  • Ho rimosso accidentalmente il dispositivo prima che fosse bloccato.
  • Cercando di bloccare o rimuovere il dispositivo luks dopo che il problema non è riuscito con un messaggio di errore occupato .
  • Lo sblocco dello stesso dispositivo non è riuscito perché esisteva già un dispositivo con lo stesso nome.
  • lsof non ha mostrato alcun handle aperto per il dispositivo.

Che aiuto è stato scollegare il dispositivo fisico e rimuovere il dispositivo ubuntu--vg-root con il seguente comando:

sudo dmsetup remove ubuntu--vg-root

A quel punto ero in grado di attivare e decodificare normalmente il dispositivo esterno di nuovo con il mio solito setup:

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

Leggi altre domande sui tag