device-mapper: luks-xxxx dosyasındaki ioctl hatası kaldırıldı: Cihaz veya kaynak meşgul

23

Bilgisayarımdan uzaktayken, şifreli USB sürücüm bir şekilde yanlışlıkla bağlandı (o anda fiziksel olarak bağlı olsa da). Kurtaramadım (henüz yeniden başlatmayı denemedim). Şimdi cihazı tamamen kapattım ama / dev / mapper'da sarkan girişi kaldırmaya çalıştığımda hala "Cihaz veya kaynak meşgul" oluyor. Sürücüyü yeniden başlatmadan yeniden bağlayabilir miyim?

İşte denediğim şey (uzun isim "xxxxx" olarak değiştirildi) ...

$ 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

Cihazı yeniden bağladıktan sonra ...

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

[DÜZENLE] Sorunu çözdüm, bu sefer açık dosyaları olmayan ancak söz konusu cihazdaki bir klasörden başlatılmış bir GUI metin düzenleyicisini kapatarak. Bu nedenle soru daha belirgin hale gelir: Cihazı hangi uygulamayı açık tuttuğunu nasıl belirlersiniz?

lsof öğesinin kolay bir çözüm sunmadığını aklınızda bulundurun. Çünkü, cihaz bağlantısı kesildiğinde, lsof tarafından sağlanan ilişkili isimler artık bağlantısız cihazın adını içermemektedir.

    
sordu nobar 05.03.2014 02:55

5 cevap

19

Bununla iki yıl uğraştıktan sonra, sanırım sonunda tamamen kırdım!

dmsetup ls , ihtiyacınız olan verileri size sağlar:

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

sudo lsof |grep 252,1

Görünüşe göre sudo burada kritik olabilir - en azından bazı durumlarda.

Bu, açık dosyalar ve hatalı uygulamalar için işlem kimlikleri de dahil olmak üzere cihazdaki tüm açık dosyaları kapatmak için gerekli bilgileri vermelidir. Sadece bu uygulamalara gidebilir ve kapatabilirsiniz, ancak kaba kuvvet yaklaşımı şöyle bir şey olabilir:

kill -9 (process ID)

Tüm dosyaları kapattıktan sonra, normalde yeniden açılmadan önce varolan bağlamayı kapatmak için sorunda gösterilen komut satırı araçlarının bazıları gerekli olabilir.

    
verilen cevap nobar 06.10.2015 07:48
8

LVM grubunu durdurmadan önce durdurun:

lvchange -a n [LVM_Group_name]

cryptsetup -v luksClose [LUKS_name]

Örnek:

lvchange -a n My_vg_crypt
cryptsetup -v luksClose My_Crypt
    
verilen cevap Anonimo 09.05.2016 12:32
3

Bir dahaki sefere tembel bir umount deneyin

umount -l /<folder>

Bu, çoğu zaman, özellikle asılı NFS sürücülerle işe yarar.

    
verilen cevap s1mmel 27.03.2015 17:05
2

İşte bu sorunu Linux Nane 17.3'te nasıl çözdüğümdür (~ Ubuntu Trusty):

  1. cihazı cihaz eşleştiriciden kaldırın

    $ sudo dmsetup remove luks-xxyyzz
    
  2. onu geri

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

Artık cihazlara erişilebilir.

    
verilen cevap Édouard Lopez 27.12.2015 19:33
0

Benzer bir durumdaydım, ancak luks-xxxx cihazını kaldırarak sorunu çözemedim. Bunun yerine ubuntu--vg-root 'i kaldırmam gerekiyordu.

Durumum şuydu:

  • Cihazı kilitlemeden önce yanlışlıkla kaldırdım.
  • Luks cihazını, aslında meşgul hata iletisiyle başarısız olduktan sonra kilitlemeye veya kaldırmaya çalışın.
  • Aynı cihazın kilidinin zaten mevcut olması nedeniyle aynı cihazın kilidini açma başarısız oldu.
  • lsof , cihaz için açık bir kol göstermedi.

Yardım, fiziksel aygıtı çıkarmak ve ubuntu--vg-root cihazını aşağıdaki komutla kaldırmak oldu:

sudo dmsetup remove ubuntu--vg-root

Bu noktada normal kurulumumu kullanarak normalde harici cihazı tekrar etkinleştirip şifresini açabildim:

udisksctl unlock -b /dev/sda3
sudo lvchange --activate y ubuntu-vg/root
    
verilen cevap justfortherec 20.04.2018 15:46

Etiketlerdeki diğer soruları oku