device-mapper: supprimer ioctl sur luks-xxxx échoué: périphérique ou ressource occupé

Alors que j’étais loin de mon ordinateur, ma clé USB cryptée s’est démontée accidentellement (même si elle était encore physiquement connectée à l’époque). Je n’ai pas réussi à récupérer (je n’ai pas encore essayé de redémarrer). J’ai maintenant complètement déconnecté le périphérique, mais le message “Périphérique ou ressource occupé” persiste quand j’essaie de supprimer l’entrée suspendue dans / dev / mapper. Puis-je reconnecter et monter le lecteur sans redémarrer?

Voici ce que j’ai essayé (nom long changé en “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 

Après avoir reconnecté l’appareil …

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

[EDIT] J’ai résolu le problème, cette fois-ci, en fermant un éditeur de texte graphique qui n’avait pas de fichier ouvert, mais qui avait été lancé à partir d’un dossier situé sur le périphérique en question. La question devient alors plus précise: comment identifier l’application qui maintient l’appareil ouvert?

N’oubliez pas que lsof ne semble pas constituer une solution facile car, une fois le périphérique déconnecté, les noms associés fournis par lsof plus le nom du périphérique déconnecté.

Après deux ans de lutte avec cela, je pense que je l’ai finalement complètement craqué!

dmsetup ls vous donne les données dont vous avez besoin:

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

puis

 sudo lsof |grep 252,1 

Il semble que sudo peut être critique ici – au moins dans certains cas.


Cela devrait vous donner les informations nécessaires pour fermer tous les fichiers ouverts sur le périphérique, y compris les noms des fichiers ouverts et les ID de processus pour les applications incriminées. Vous pourrez peut-être simplement accéder à ces applications et les fermer, mais une approche basée sur la force brute pourrait ressembler à quelque chose comme:

 kill -9 (process ID) 

Une fois que vous avez fermé tous les fichiers, certains des outils de ligne de commande présentés dans la question peuvent s’avérer nécessaires pour fermer le assembly existant avant qu’il puisse être rouvert normalement.

Essayez d’arrêter le groupe LVM avant d’arrêter le chiffrement:

lvchange -an [LVM_Group_name]

puis

cryptsetup -v luksClose [LUKS_name]

Échantillon:

 lvchange -an My_vg_crypt cryptsetup -v luksClose My_Crypt 

la prochaine fois, essayez un umount paresseux

 umount -l / 

Cela fonctionne pour moi la plupart du temps, particulièrement utile avec les lecteurs NFS bloqués.

Voici comment je parviens à résoudre ce problème sous Linux Mint 17.3 (~ Ubuntu Trusty):

  1. retirer le périphérique de device-mapper

     $ sudo dmsetup remove luks-xxyyzz 
  2. cartographier

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

Maintenant, les appareils sont accessibles.

J’étais dans une situation similaire mais je ne pouvais pas résoudre le problème en retirant le luks-xxxx . Au lieu de cela, j’ai dû supprimer ubuntu--vg-root .

Ma situation était:

  • J’ai accidentellement retiré l’appareil avant qu’il ne soit verrouillé.
  • Essayer de verrouiller ou de retirer le périphérique luks après coup a échoué avec un message d’erreur Occupé .
  • Le délocking du même périphérique a échoué car un périphérique portant le même nom existait déjà.
  • lsof n’a montré aucune poignée ouverte pour le périphérique.

L’aide a été de détwigr le périphérique physique et de supprimer le périphérique ubuntu--vg-root à l’aide de la commande suivante:

 sudo dmsetup remove ubuntu--vg-root 

À ce stade, je pouvais normalement activer et déchiffrer le périphérique externe avec ma configuration habituelle:

 udisksctl unlock -b /dev/sda3 sudo lvchange --activate y ubuntu-vg/root