コンピューターから離れていたときに、暗号化された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
は簡単な解決策を提示しないように注意してください。
これで2年間戦った後、私はついに完全にクラックしたと思います!
dmsetup ls
は必要なデータを提供します:
$ Sudo dmsetup ls
luks-xxxxx (252:1)
それから
Sudo lsof |grep 252,1
ここではSudo
が重要であると思われる-少なくともいくつかのケースでは。
これにより、デバイス上で開いているすべてのファイルを閉じるために必要な情報が表示されます。これには、開いているファイルの名前や、問題のあるアプリケーションのプロセスIDが含まれます。これらのアプリに簡単にアクセスして閉じることができますが、ブルートフォースアプローチは次のようになります。
kill -9 (process ID)
すべてのファイルを閉じたら、既存のマウントを通常の方法で再び開く前に閉じるために、質問に示されているコマンドラインツールのいくつかが必要になる場合があります。
暗号を停止する前にLVMグループを停止してみてください。
lvchange -a n [LVM_Group_name]
それから
cryptsetup -v luksClose [LUKS_name]
サンプル:
lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt
次回は怠uなマウントを試してください
umount -l /<folder>
これはほとんどの場合、私にとってはうまくいきます。特にハングアップしたNFSドライブで役立ちます。
Linux Mint 17.3(〜Ubuntu Trusty)でこの問題を解決する方法を次に示します。
デバイスマッパーからデバイスを削除します
$ Sudo dmsetup remove luks-xxyyzz
それを地図に戻す
$ Sudo cryptsetup open /dev/sdc1 luks-xxyyzz
Enter passphrase for /dev/sdc1:
これで、デバイスにアクセスできます。
私は同様の状況にありましたが、luks-xxxx
デバイスを削除しても問題を解決できませんでした。代わりに、ubuntu--vg-root
を削除する必要がありました。
私の状況は:
lsof
は、デバイスの開いているハンドルを表示しませんでした。助けとなったのは、次のコマンドで物理デバイスを取り外し、ubuntu--vg-root
デバイスを削除することでした:
Sudo dmsetup remove ubuntu--vg-root
その時点で、通常のセットアップで外部デバイスを再びアクティブにして復号化することができました。
udisksctl unlock -b /dev/sda3
Sudo lvchange --activate y ubuntu-vg/root