आसानी से कैसे पता लगाया जाए कि क्या कोई ब्लॉक डिवाइस (या इसका एक हिस्सा) किसी तरह घुड़सवार है या नहीं


11

मैं जानना चाहता हूं कि निर्धारित करने का सबसे आसान तरीका क्या है (रूट विशेषाधिकार के बिना) कि क्या एक ब्लॉक डिवाइस (कहते हैं sdb) या इसके किसी भी हिस्से को माउंट किया गया है (और इसका कौन सा हिस्सा है)।

Sdb के /proc/mountsलिए जाँच करना पर्याप्त नहीं है क्योंकि sdbया इसके किसी एक विभाजन का उपयोग LVM द्वारा किया जा सकता है। आप जाँच कर सकते हैं /sys/block/sdb/sdb*/holders/लेकिन आपको dm-xप्रविष्टियाँ मिलेंगी जिन्हें /dev/mapperजाँचने के लिए नामों को हल करना होगा /proc/mounts। संभव है, लेकिन अगर कोई आसान उपाय है ... (जिसे रूट विशेषाधिकार की आवश्यकता नहीं होनी चाहिए)


2
मैं उत्सुक हूं, क्या आप यह पता लगाने की कोशिश नहीं कर रहे थे कि क्या डिवाइस माउंट है? यदि डिवाइस में / proc / mounts तालिका मौजूद नहीं है तो * / धारकों और * / * / धारकों को इसकी घुड़सवार बताने के लिए पर्याप्त है। आपको इसे आगे बढ़ाने की आवश्यकता क्यों है? यानी cryptsetup इसे धारकों में जोड़ता है, यह दर्शाता है कि आपको ड्राइव के साथ खिलवाड़ नहीं करना चाहिए .. भले ही / dev / mapper माउंट नहीं है, या एन्क्रिप्शन भ्रष्टाचार का कारण है। बस यह है कि इसकी आंतरिक रूप से एक चालक के माध्यम से मुहिम शुरू की जा रही है। इसके अलावा / sys / block / sdb / धारकों को भी चेक करना न भूलें, क्योंकि ड्राइव को बिना किसी विभाजन के "होल्ड" किया जा सकता है।
राही

जवाबों:


13

यह अनिवार्य रूप से कोने के मामलों की एक पूरी थैली की जांच का विषय है।

  • एक ड्राइव में / proc / mounts दिखाई दे सकते हैं
  • ड्राइव को स्वैप के रूप में इस्तेमाल किया जा सकता है (उपयोग / खरीद / स्वैप)
  • एक ड्राइव एक सक्रिय LVM pv का हिस्सा हो सकता है (pvdisplay का उपयोग करें)
  • ड्राइव dm-mapper RAID समूह (उपयोग / खरीद / mdstat) का हिस्सा हो सकता है
  • एक ड्राइव को सीधे एक एप्लिकेशन द्वारा एक्सेस किया जा सकता है (जैसे कि ओरेकल एक फाइलसिस्टम के बजाय सीधे ड्राइव या पार्टीशन को लिखने का समर्थन करता है) (फ़्यूज़र का उपयोग करें)
  • एक ड्राइव को वर्चुअल मशीन द्वारा सीधे एक्सेस किया जा सकता है (फ़्यूज़र का उपयोग करें)
  • ड्राइव को लूपबैक डिवाइस द्वारा संदर्भित किया जा सकता है (उदाहरण के लिए mount /dev/sda -o offset=1M /foo) : (losetup -a का उपयोग करें)

ये केवल उदाहरण हैं जिनके बारे में सोचने के लिए मुझे एक-आध मिनट का समय दिया गया था। मुझे यकीन है कि एक दर्जन अन्य लोग हैं।

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

# cat /proc/mounts
...
/dev/loop0 /foo ext4 relatime,data=ordered 0 0

# losetup -a
/dev/loop0 [0005]:2048 (/dev/sda), offset 1048576

तुम ऐसा क्यों करोगे? आमतौर पर इसमें ऐसी परिस्थितियाँ शामिल होती हैं, जहाँ चीजें पहले बुरी तरह से गलत हो जाती हैं।

यह भी ध्यान रखें कि मेनलाइन में अब नेमस्पेसिंग फीचर के साथ ( unshare देखें ), अलग-अलग प्रक्रियाओं में माउंट किए गए और क्या नहीं है के बारे में अलग-अलग विचार हो सकते हैं। यहां चीजें थोड़ी-बहुत लाल-गोली होने लगती हैं।


1

उपकरणों को माउंट करने के लिए बहुत अधिक तरीके हैं, उन सभी को जोड़ा जा सकता है, इसलिए यह अक्सर ऐसा होता है, यह पता लगाने के लिए आप पर निर्भर है।

यानी क्या lvm द्वारा उपयोग किया जाता है: pvdisplay

तो आपको nfs, cifs, raid, loop, crypt, इत्यादि भी शामिल करने होंगे। एक अच्छा शुरुआती बिंदु हमेशा होता है /proc/mounts, जैसा कि आप पहले ही उल्लेख कर चुके हैं।

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