Pertanyaan device-mapper: hapus ioctl pada luks-xxxx gagal: Perangkat atau sumber daya sibuk


Ketika saya berada jauh dari komputer saya, drive USB saya yang dienkripsi secara tidak sengaja telah unmount entah bagaimana (walaupun itu masih terhubung secara fisik pada saat itu). Saya belum dapat memulihkan (belum mencoba reboot). Saya sekarang telah benar-benar memutus perangkat, tetapi saya masih mendapatkan "Perangkat atau sumber daya sibuk" ketika saya mencoba menghapus entri yang menggantung di / dev / mapper. Bisakah saya menghubungkan kembali dan me-mount drive tanpa reboot?

Inilah yang saya coba (nama panjang berubah menjadi "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

Setelah menghubungkan kembali perangkat ...

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

[EDIT] Saya memecahkan masalah, kali ini, dengan menutup editor teks GUI yang tidak memiliki file terbuka, tetapi telah diluncurkan dari folder pada perangkat yang dipermasalahkan. Jadi pertanyaannya menjadi lebih spesifik: Bagaimana Anda bisa mengidentifikasi aplikasi mana yang memegang perangkat terbuka?

Camkan itu lsof tampaknya tidak memberikan solusi yang mudah karena, setelah perangkat terputus, nama terkait disediakan oleh lsof tidak lagi menyertakan nama perangkat yang terputus.


23
2018-03-05 01:55


asal


Berlari ke masalah yang sama tetapi di CentOS. Temukan tautan ini: krenel.org/…tetapi saya tidak menampilkan perangkat yang dipasang - Lars Nordin
Tampaknya sangat mirip dengan ini tertutup-seperti-tetap laporan bug: bugs.debian.org/cgi-bin/bugreport.cgi?bug=574126 - nobar
Kata peringatan: Pemasangan dengan sudo, seperti yang ditunjukkan di sini, dapat mencegah Anda keluar secara normal menggunakan file-manager ruang pengguna. - nobar


Jawaban:


Setelah dua tahun bertarung dengan ini, saya pikir saya akhirnya berhasil memecahkannya!

dmsetup ls memberi Anda data yang Anda butuhkan:

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

kemudian

sudo lsof |grep 252,1

Tampaknya sudo mungkin penting di sini - setidaknya dalam beberapa kasus.


Ini akan memberi Anda informasi yang diperlukan untuk menutup semua file yang terbuka di perangkat - termasuk nama file terbuka dan ID proses untuk aplikasi yang melanggar. Anda mungkin hanya dapat pergi ke aplikasi tersebut dan menutupnya, tetapi pendekatan brute force mungkin seperti:

kill -9 (process ID)

Setelah Anda menutup semua file, beberapa alat baris perintah yang ditunjukkan dalam pertanyaan mungkin diperlukan untuk menutup mount yang ada sebelum dapat dibuka kembali secara normal.


19
2017-10-06 05:48



Perhatikan terjemahan sedikit yang diperlukan: (252:1) menjadi 252,1. - nobar
Bekerja untuk saya, terima kasih. - Marcel


Cobalah untuk menghentikan grup LVM sebelum berhenti di atas:

lvchange -a n [LVM_Group_name]

kemudian

cryptsetup -v luksClose [LUKS_name]

Mencicipi:

lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt

8
2018-05-09 10:32



Menggunakan Jawaban @ nobar pertama (tetapi cobalah kill sebelum kill -9). Namun solusi @ nobar tidak cukup bagi saya - tampaknya kernel itu sendiri memiliki perangkat yang terbuka karena pemetaan perangkat LVM - yang diselesaikan oleh jawaban ini. - Tom Hale


lain kali cobalah umount yang malas

umount -l /<folder>

Ini bekerja untuk saya sebagian besar waktu, terutama berguna dengan NFS-drive yang menggantung.


3
2018-03-27 16:05



Saya mencoba ini, tetapi tidak membantu untuk masalah yang dihadapi. Saya berasumsi bahwa Anda tidak dapat benar-benar menggunakan LUKS melalui NFS, dan ini hanyalah saran yang tidak masuk akal. - nobar
ini persis masalah saya, saya lupa bahwa saya harus meng-unmount penyimpanan yang dipetakan terlebih dahulu: D - holms


Berikut adalah cara saya mengatasi masalah ini di Linux Mint 17.3 (~ Ubuntu Trusty):

  1. lepaskan perangkat dari device-mapper

    $ sudo dmsetup remove luks-xxyyzz
    
  2. petakan kembali

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

Sekarang perangkat ini dapat diakses.


2
2017-12-27 18:33



Posting ini mungkin bermanfaat bagi seseorang, tetapi seperti yang disebutkan dalam pertanyaan - kadang-kadang dmsetup remove laporan "Perintah gagal". - nobar


Saya berada dalam situasi yang sama tetapi tidak bisa menyelesaikan masalah dengan menghapus luks-xxxx alat. Sebaliknya saya harus menghapus ubuntu--vg-root.

Situasi saya adalah:

  • Saya secara tidak sengaja melepas perangkat sebelum terkunci.
  • Mencoba mengunci atau menghapus perangkat luk setelah fakta gagal dengan sibuk pesan eror.
  • Membuka kunci perangkat yang sama gagal karena perangkat dengan nama yang sama sudah ada.
  • lsof tidak menunjukkan pegangan terbuka untuk perangkat.

Apa yang membantu adalah mencabut perangkat fisik dan menghapus ubuntu--vg-root perangkat dengan perintah berikut:

sudo dmsetup remove ubuntu--vg-root

Pada saat itu saya biasanya dapat mengaktifkan dan mendekripsi perangkat eksternal lagi dengan pengaturan biasa saya:

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

0
2018-04-20 13:46