device-mapper:luks-xxxxのioctlの削除に失敗しました:デバイスまたはリソースがビジーです


28

コンピューターから離れていたときに、暗号化されたUSBドライブが誤ってアンマウントされました(ただし、その時点ではまだ物理的に接続されていました)。回復できませんでした(まだ再起動していません)。デバイスを完全に切断しましたが、/ dev / mapperのダングリングエントリを削除しようとすると、「デバイスまたはリソースがビジー」というメッセージが表示されます。再起動せずにドライブを再接続してマウントできますか?

ここに私が試したものがあります(長い名前は「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

デバイスを再接続した後...

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

[編集]今回は、開いているファイルはないが、問題のデバイス上のフォルダーから起動されていたGUIテキストエディターを閉じることで問題を解決しました。質問はより具体的になります:どのアプリケーションがデバイスを開いたままにしているかをどのように識別できますか?

念頭に置いてクマlsofのデバイスが切断された後、ので、簡単な解決策を提示していないようですが、が提供する関連した名前lsofはもはやは切断デバイスの名前が含まれています。


CentOSで同じ問題が発生しています。次のリンクを見つけました:krenel.org/… しかし、マウントされたデバイスは表示されません
Lars Nordin 14年

この修正済みのクローズドバグレポートに著しく類似しているようです:bugs.debian.org/cgi-bin/bugreport.cgi
nobar

警告:ここに示すように、sudoでマウントすると、ユーザースペースファイルマネージャーを使用した通常のイジェクトが妨げられる場合があります。
-nobar

回答:


27

これで2年間戦った後、私はついに完全にクラックしたと思います!

dmsetup ls 必要なデータを提供します:

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

それから

sudo lsof |grep 252,1

sudoここでは重要であると思われます-少なくともいくつかの場合。


これにより、デバイス上で開いているすべてのファイルを閉じるために必要な情報が得られます。これには、開いているファイルの名前や、問題のあるアプリケーションのプロセスIDが含まれます。これらのアプリに移動して閉じることができるかもしれませんが、ブルートフォースアプローチは次のようなものです。

kill -9 (process ID)

すべてのファイルを閉じたら、既存のマウントを通常の方法で再び開く前に閉じるために、質問に示されているコマンドラインツールのいくつかが必要になる場合があります。


4
わずかな翻訳が必要に(252:1)なり252,1ます:になります。
-nobar

12

暗号を停止する前にLVMグループを停止してみてください。

lvchange -a n [LVM_Group_name]

それから

cryptsetup -v luksClose [LUKS_name]

サンプル:

lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt

1
最初に@nobarの回答を使用します(ただし、kill前に試してくださいkill -9)。しかし、@ nobarのソリューションでは十分ではありませんでした-LVMデバイスマッピングのためにカーネル自体がデバイスを開いていたようです-この答えは解決しました。
トム・ヘイル

+1私の場合、受け入れられた回答でgrepは一致するものは見つかりませんでしたが、これは機能しました。
user000001

4

次回は怠uなマウントを試してください

umount -l /<folder>

これはほとんどの場合、私にとってはうまくいきます。特に、ハングアップしたNFSドライブで役立ちます。


私はこれを試しましたが、当面の問題の助けにはなりませんでした。NFSでLUKSを実際に使用することはできず、これはただの暗示的な提案であると想定しています。
-nobar

これはまさに私の問題でした。最初にマッピングされたストレージをアンマウントする必要があることを忘れました:D
holms

2

Linux Mint 17.3(〜Ubuntu Trusty)でこの問題を解決する方法を次に示します。

  1. デバイスマッパーからデバイスを削除します

    $ sudo dmsetup remove luks-xxyyzz
    
  2. それを地図に戻す

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

これで、デバイスにアクセスできます。


2
この投稿は誰かに役立つかもしれませんが、質問で述べたように、dmsetup remove「コマンドが失敗しました」と報告することがあります。
-nobar

0

同様の状況にありましたが、luks-xxxxデバイスを取り外しても問題を解決できませんでした。代わりに、削除する必要がありましたubuntu--vg-root

私の状況は:

  • ロックする前にデバイスを誤って取り外しました。
  • 事実がビジーエラーメッセージで失敗した後にluksデバイスをロックまたは削除しようとしています。
  • 同じ名前のデバイスが既に存在するため、同じデバイスのロック解除に失敗しました。
  • lsof デバイスの開いているハンドルは表示されませんでした。

助けになったのはubuntu--vg-root、次のコマンドで物理デバイスを取り外してデバイスを削除することでした。

sudo dmsetup remove ubuntu--vg-root

その時点で、通常のセットアップを使用して外部デバイスを再度アクティブ化し、復号化することができました。

udisksctl unlock -b /dev/sda3
sudo lvchange --activate y ubuntu-vg/root
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.