В то время как я был вдали от своего компьютера, моя зашифрованная Карта памяти была случайно размонтирована так или иначе (хотя это было все еще физически соединено в то время). Я не смог восстановиться (еще не попробовали перезагрузку). Я теперь полностью отключил устройство, но я все еще получаю "Устройство или ресурс, занятый", когда я пытаюсь удалить повисшую запись в/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
больше не включайте название отключенного устройства.
После двух лет борьбы с этим я думаю, что наконец взломал ее полностью!
dmsetup ls
дает Вам данные, в которых Вы нуждаетесь:
$ sudo dmsetup ls
luks-xxxxx (252:1)
затем
sudo lsof |grep 252,1
кажется, что sudo
может быть очень важным здесь - по крайней мере в некоторых случаях.
Это должно дать Вам информацию, необходимую для закрытия всех открытых файлов на устройстве - включая названия открытых файлов и идентификаторов процесса для незаконных приложений. Вы можете просто переходить к тем приложениям и закрывать их, но метод решения "в лоб" мог бы быть чем-то как:
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
следующий раз пробует ленивый umount
umount -l /<folder>
, Это работает на меня большинство времен, особенно полезных с подвешенными дисками NFS.
Вот то, как мне удается решить эту проблему на Linux Mint 17.3 (~Ubuntu Надежный человек):
удаляют устройство из картопостроителя устройства
$ 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