डिवाइस-मैपर: निकालें ioctl on luks-xxxx विफल: डिवाइस या संसाधन व्यस्त


28

जब मैं अपने कंप्यूटर से दूर था, तो मेरी एन्क्रिप्टेड यूएसबी ड्राइव गलती से किसी भी तरह अनमाउंट हो गई (हालांकि यह उस समय भी शारीरिक रूप से जुड़ा हुआ था)। मैं पुनर्प्राप्त करने में सक्षम नहीं है (अभी तक एक रिबूट की कोशिश नहीं की है)। मैंने अब डिवाइस को पूरी तरह से डिस्कनेक्ट कर दिया है, लेकिन मैं अभी भी "डिवाइस या संसाधन व्यस्त" प्राप्त करता हूं, जब मैं / देव / मैपर में झूलने वाली प्रविष्टि को हटाने की कोशिश करता हूं। क्या मैं रिबूट के बिना ड्राइव को फिर से कनेक्ट और माउंट कर सकता हूं?

यहाँ मैं क्या करने की कोशिश की है (लंबे नाम बदलकर "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/… लेकिन मैं डिवाइस को माउंट नहीं दिखाता
लार्स नॉर्डिन

उल्लेखनीय रूप से इस बंद के रूप में तय बग रिपोर्ट के समान लगता है : Bugs.debian.org/cgi-bin/bugreport.cgi?bug=574126
nobar

चेतावनी का शब्द: सूडो के साथ माउंट करना, जैसा कि यहां दिखाया गया है, आपको उपयोगकर्ता-स्पेस फ़ाइल-मैनेजर का उपयोग करके सामान्य रूप से बाहर निकलने से रोक सकता है।
नोबार

जवाबों:


27

इसके साथ लड़ने के दो साल बाद, मुझे लगता है कि मैंने आखिरकार इसे पूरी तरह से तोड़ दिया है!

dmsetup ls आपको आवश्यक डेटा देता है:

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

फिर

sudo lsof |grep 252,1

ऐसा लगता है कि sudoयहां महत्वपूर्ण हो सकता है - कम से कम कुछ मामलों में।


इससे आपको डिवाइस पर सभी खुली फाइलों को बंद करने के लिए आवश्यक जानकारी मिलनी चाहिए - जिसमें खुली फाइलों के नाम और आपत्तिजनक अनुप्रयोगों के लिए आईडी शामिल हैं। आप बस उन ऐप्स पर जा सकते हैं और उन्हें बंद कर सकते हैं, लेकिन एक क्रूर बल दृष्टिकोण कुछ इस तरह हो सकता है:

kill -9 (process ID)

एक बार जब आप सभी फ़ाइलों को बंद कर देते हैं, तो सामान्य रूप से फिर से खोल दिए जाने से पहले मौजूदा माउंट को बंद करने के लिए प्रश्न में दिखाए गए कुछ कमांड-लाइन टूल आवश्यक हो सकते हैं।


4
आवश्यक अनुवाद की सूचना दें: (252:1)बन जाता है 252,1
नोबार

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

अगली बार एक आलसी व्यक्ति की कोशिश करो

umount -l /<folder>

यह मेरे लिए सबसे अधिक बार काम करता है, विशेष रूप से हंग-अप एनएफएस-ड्राइव के साथ उपयोगी है।


मैंने यह कोशिश की, लेकिन हाथ में समस्या के लिए मदद नहीं की। मैं मान रहा हूं कि आप वास्तव में NFS पर LUKS का उपयोग नहीं कर सकते, और यह सिर्फ एक शॉट-इन-द-डार्क सुझाव था।
नोबार

यह वास्तव में मेरी समस्या थी, मैं भूल गया कि मुझे पहले मैप किए गए भंडारण को अनमाउंट करने की आवश्यकता है: D
Holms

2

यहाँ मैं लिनक्स मिंट 17.3 (~ उबंटू ट्रस्टी) पर इस समस्या को हल करने का प्रबंधन करता हूँ:

  1. डिवाइस को डिवाइस-मैपर से निकालें

    $ sudo dmsetup remove luks-xxyyzz
    
  2. इसे वापस मैप करें

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

अब उपकरण सुलभ हैं।


2
यह पोस्ट किसी के लिए सहायक हो सकती है, लेकिन जैसा कि प्रश्न में उल्लेख किया गया है - कभी-कभी dmsetup remove"कमांड विफल" की रिपोर्ट करता है।
नोबार

0

मैं एक समान स्थिति में था, लेकिन 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.